mirror of
https://github.com/weechat/weechat.git
synced 2026-06-27 05:16:38 +02:00
Fix exec of IRC command when connecting to server if server buffers are merged, and that server is not the selected server
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user