diff options
-rw-r--r-- | src/plugins/irc/irc-command.c | 8 | ||||
-rw-r--r-- | src/plugins/irc/irc-config.c | 17 | ||||
-rw-r--r-- | src/plugins/irc/irc-protocol.c | 11 | ||||
-rw-r--r-- | src/plugins/irc/irc-server.c | 11 | ||||
-rw-r--r-- | src/plugins/irc/irc-server.h | 1 |
5 files changed, 48 insertions, 0 deletions
diff --git a/src/plugins/irc/irc-command.c b/src/plugins/irc/irc-command.c index 41ce07719..2c46b0a26 100644 --- a/src/plugins/irc/irc-command.c +++ b/src/plugins/irc/irc-command.c @@ -4852,6 +4852,14 @@ irc_command_display_server (struct t_irc_server *server, int with_detail) weechat_printf (NULL, " notify . . . . . . . : %s'%s'", IRC_COLOR_CHAT_VALUE, weechat_config_string (server->options[IRC_SERVER_OPTION_NOTIFY])); + /* umodes*/ + if (weechat_config_option_is_null (server->options[IRC_SERVER_OPTION_UMODES])) + weechat_printf (NULL, " umodes . . . . . . . : ('%s')", + IRC_SERVER_OPTION_STRING(server, IRC_SERVER_OPTION_UMODES)); + else + weechat_printf (NULL, " umodes . . . . . . . : %s'%s'", + IRC_COLOR_CHAT_VALUE, + weechat_config_string (server->options[IRC_SERVER_OPTION_UMODES])); } else { diff --git a/src/plugins/irc/irc-config.c b/src/plugins/irc/irc-config.c index d4acd7ba3..a3cd13970 100644 --- a/src/plugins/irc/irc-config.c +++ b/src/plugins/irc/irc-config.c @@ -2226,6 +2226,23 @@ irc_config_server_new_option (struct t_config_file *config_file, callback_change_data, NULL, NULL, NULL); break; + case IRC_SERVER_OPTION_UMODES: + new_option = weechat_config_new_option ( + config_file, section, + option_name, "string", + N_("umode(s) to set after connection to server and before " + "auto-join of channels"), + NULL, 0, 0, + default_value, value, + null_value_allowed, + callback_check_value, + callback_check_value_pointer, + callback_check_value_data, + callback_change, + callback_change_pointer, + callback_change_data, + NULL, NULL, NULL); + break; case IRC_SERVER_NUM_OPTIONS: break; } diff --git a/src/plugins/irc/irc-protocol.c b/src/plugins/irc/irc-protocol.c index b85093758..a68377835 100644 --- a/src/plugins/irc/irc-protocol.c +++ b/src/plugins/irc/irc-protocol.c @@ -2453,6 +2453,7 @@ IRC_PROTOCOL_CALLBACK(wallops) IRC_PROTOCOL_CALLBACK(001) { char *server_command, **commands, **ptr_command, *vars_replaced, *away_msg; + const char *umodes; IRC_PROTOCOL_MIN_ARGS(3); @@ -2492,6 +2493,16 @@ IRC_PROTOCOL_CALLBACK(001) (void) weechat_hook_signal_send ("irc_server_connected", WEECHAT_HOOK_SIGNAL_STRING, server->name); + /* set umodes when connected */ + umodes = IRC_SERVER_OPTION_STRING(server, IRC_SERVER_OPTION_UMODES); + if (umodes && umodes[0]) + { + irc_server_sendf (server, + IRC_SERVER_SEND_OUTQ_PRIO_HIGH, NULL, + "MODE %s %s", + server->nick, umodes); + } + /* execute command when connected */ server_command = weechat_string_eval_expression (IRC_SERVER_OPTION_STRING(server, IRC_SERVER_OPTION_COMMAND), diff --git a/src/plugins/irc/irc-server.c b/src/plugins/irc/irc-server.c index 0308bf06e..72a3a028e 100644 --- a/src/plugins/irc/irc-server.c +++ b/src/plugins/irc/irc-server.c @@ -116,6 +116,7 @@ char *irc_server_options[IRC_SERVER_NUM_OPTIONS][2] = { "msg_part", "WeeChat ${info:version}" }, { "msg_quit", "WeeChat ${info:version}" }, { "notify", "" }, + { "umodes", "" }, }; char *irc_server_casemapping_string[IRC_SERVER_NUM_CASEMAPPING] = @@ -5554,6 +5555,9 @@ irc_server_add_to_infolist (struct t_infolist *infolist, if (!weechat_infolist_new_var_string (ptr_item, "msg_quit", IRC_SERVER_OPTION_STRING(server, IRC_SERVER_OPTION_MSG_QUIT))) return 0; + if (!weechat_infolist_new_var_string (ptr_item, "umodes", + IRC_SERVER_OPTION_STRING(server, IRC_SERVER_OPTION_UMODES))) + return 0; if (!weechat_infolist_new_var_integer (ptr_item, "temp_server", server->temp_server)) return 0; if (!weechat_infolist_new_var_integer (ptr_item, "index_current_address", server->index_current_address)) @@ -5925,6 +5929,13 @@ irc_server_print_log () else weechat_log_printf (" msg_quit . . . . . . : '%s'", weechat_config_string (ptr_server->options[IRC_SERVER_OPTION_MSG_QUIT])); + /* umodes */ + if (weechat_config_option_is_null (ptr_server->options[IRC_SERVER_OPTION_UMODES])) + weechat_log_printf (" umodes . . . . . . . : null ('%s')", + IRC_SERVER_OPTION_STRING(ptr_server, IRC_SERVER_OPTION_UMODES)); + else + weechat_log_printf (" umodes . . . . . . . : '%s'", + weechat_config_string (ptr_server->options[IRC_SERVER_OPTION_UMODES])); /* other server variables */ weechat_log_printf (" temp_server. . . . . : %d", ptr_server->temp_server); weechat_log_printf (" reloading_from_config: %d", ptr_server->reloaded_from_config); diff --git a/src/plugins/irc/irc-server.h b/src/plugins/irc/irc-server.h index 663b0d085..b032b9a61 100644 --- a/src/plugins/irc/irc-server.h +++ b/src/plugins/irc/irc-server.h @@ -82,6 +82,7 @@ enum t_irc_server_option IRC_SERVER_OPTION_MSG_PART, /* default part message */ IRC_SERVER_OPTION_MSG_QUIT, /* default quit message */ IRC_SERVER_OPTION_NOTIFY, /* notify list */ + IRC_SERVER_OPTION_UMODES, /* umodes to set once connected */ /* number of server options */ IRC_SERVER_NUM_OPTIONS, }; |