From ce3091c75f91e0797073c5a6efd9aab338ce6c62 Mon Sep 17 00:00:00 2001 From: Sebastien Helleu Date: Sun, 4 Jan 2009 10:38:11 +0100 Subject: [PATCH] Fix exec of IRC command when connecting to server if server buffers are merged, and that server is not the selected server --- src/plugins/irc/irc-command.c | 11 ++--------- src/plugins/irc/irc-protocol.c | 5 +++++ src/plugins/irc/irc-server.c | 22 ++++++++++++++++++++++ src/plugins/irc/irc-server.h | 1 + 4 files changed, 30 insertions(+), 9 deletions(-) diff --git a/src/plugins/irc/irc-command.c b/src/plugins/irc/irc-command.c index cfcb8bf45..1bc3f25be 100644 --- a/src/plugins/irc/irc-command.c +++ b/src/plugins/irc/irc-command.c @@ -2732,7 +2732,7 @@ irc_command_server (void *data, struct t_gui_buffer *buffer, int argc, { int i, detailed_list, one_server_found; struct t_irc_server *ptr_server2, *server_found, *new_server; - char *server_name, charset_modifier[256]; + char *server_name; IRC_GET_SERVER_CHANNEL(buffer); @@ -3102,14 +3102,7 @@ irc_command_server (void *data, struct t_gui_buffer *buffer, int argc, } } } - irc_server_set_buffer_title (irc_current_server); - snprintf (charset_modifier, sizeof (charset_modifier), - "irc.%s", irc_current_server->name); - weechat_buffer_set (irc_current_server->buffer, - "localvar_set_charset_modifier", - charset_modifier); - weechat_bar_item_update ("buffer_name"); - weechat_bar_item_update ("input_prompt"); + irc_server_set_current_server (irc_current_server); } return WEECHAT_RC_OK; } diff --git a/src/plugins/irc/irc-protocol.c b/src/plugins/irc/irc-protocol.c index 389a36580..ff56e6a2c 100644 --- a/src/plugins/irc/irc-protocol.c +++ b/src/plugins/irc/irc-protocol.c @@ -2430,6 +2430,11 @@ irc_protocol_cmd_001 (struct t_irc_server *server, const char *command, commands = weechat_string_split_command (ptr_command, ';'); if (commands) { + if (weechat_config_boolean (irc_config_look_one_server_buffer) + && (irc_current_server != server)) + { + irc_server_set_current_server (server); + } for (ptr_cmd = commands; *ptr_cmd; ptr_cmd++) { vars_replaced = irc_protocol_replace_vars (server, NULL, diff --git a/src/plugins/irc/irc-server.c b/src/plugins/irc/irc-server.c index 0a8ed6065..993235d77 100644 --- a/src/plugins/irc/irc-server.c +++ b/src/plugins/irc/irc-server.c @@ -1981,6 +1981,28 @@ irc_server_create_buffer (struct t_irc_server *server, int all_servers) return server->buffer; } +/* + * irc_server_set_current_server: set new current server (when all servers are + * in one buffer) + */ + +void +irc_server_set_current_server (struct t_irc_server *server) +{ + char charset_modifier[256]; + + irc_current_server = server; + + irc_server_set_buffer_title (irc_current_server); + snprintf (charset_modifier, sizeof (charset_modifier), + "irc.%s", irc_current_server->name); + weechat_buffer_set (irc_current_server->buffer, + "localvar_set_charset_modifier", + charset_modifier); + weechat_bar_item_update ("buffer_name"); + weechat_bar_item_update ("input_prompt"); +} + /* * irc_server_connect: connect to an IRC server * Return: 1 if ok diff --git a/src/plugins/irc/irc-server.h b/src/plugins/irc/irc-server.h index 63aeeb140..eb89f21d1 100644 --- a/src/plugins/irc/irc-server.h +++ b/src/plugins/irc/irc-server.h @@ -192,6 +192,7 @@ extern struct t_irc_server *irc_server_search (const char *server_name); extern void irc_server_set_buffer_title (struct t_irc_server *server); extern struct t_gui_buffer *irc_server_create_buffer (struct t_irc_server *server, int all_servers); +extern void irc_server_set_current_server (struct t_irc_server *server); extern int irc_server_connect (struct t_irc_server *server, int disable_autojoin); extern void irc_server_auto_connect (int auto_connect);