mirror of
https://github.com/weechat/weechat.git
synced 2026-07-05 09:13:14 +02:00
Added "-nojoin" option for /connect and /reconnect commands (task #7074), added "%*" to completion template (repeat last completion).
This commit is contained in:
+4
-2
@@ -2446,7 +2446,7 @@ irc_recv_cmd_001 (t_irc_server *server, char *host, char *nick, char *arguments)
|
||||
}
|
||||
|
||||
/* auto-join after disconnection (only rejoins opened channels) */
|
||||
if (server->reconnect_join && server->channels)
|
||||
if (!server->disable_autojoin && server->reconnect_join && server->channels)
|
||||
{
|
||||
for (ptr_channel = server->channels; ptr_channel;
|
||||
ptr_channel = ptr_channel->next_channel)
|
||||
@@ -2466,7 +2466,7 @@ irc_recv_cmd_001 (t_irc_server *server, char *host, char *nick, char *arguments)
|
||||
else
|
||||
{
|
||||
/* auto-join when connecting to server for first time */
|
||||
if (server->autojoin && server->autojoin[0])
|
||||
if (!server->disable_autojoin && server->autojoin && server->autojoin[0])
|
||||
return irc_send_cmd_join (server, NULL, server->autojoin);
|
||||
}
|
||||
|
||||
@@ -2480,6 +2480,8 @@ irc_recv_cmd_001 (t_irc_server *server, char *host, char *nick, char *arguments)
|
||||
free (away_msg);
|
||||
}
|
||||
}
|
||||
|
||||
server->disable_autojoin = 0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -116,6 +116,7 @@ irc_server_init (t_irc_server *server)
|
||||
server->prefix = NULL;
|
||||
server->reconnect_start = 0;
|
||||
server->reconnect_join = 0;
|
||||
server->disable_autojoin = 0;
|
||||
server->is_away = 0;
|
||||
server->away_message = NULL;
|
||||
server->away_time = 0;
|
||||
@@ -1741,7 +1742,7 @@ irc_server_child (t_irc_server *server)
|
||||
*/
|
||||
|
||||
int
|
||||
irc_server_connect (t_irc_server *server)
|
||||
irc_server_connect (t_irc_server *server, int disable_autojoin)
|
||||
{
|
||||
int child_pipe[2], set;
|
||||
#ifndef __CYGWIN__
|
||||
@@ -1882,6 +1883,8 @@ irc_server_connect (t_irc_server *server)
|
||||
server->child_pid = pid;
|
||||
#endif
|
||||
|
||||
server->disable_autojoin = disable_autojoin;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -1897,7 +1900,7 @@ irc_server_reconnect (t_irc_server *server)
|
||||
PACKAGE_NAME);
|
||||
server->reconnect_start = 0;
|
||||
|
||||
if (irc_server_connect (server))
|
||||
if (irc_server_connect (server, 0))
|
||||
server->reconnect_join = 1;
|
||||
else
|
||||
irc_server_reconnect_schedule (server);
|
||||
@@ -1921,7 +1924,7 @@ irc_server_auto_connect (int auto_connect, int command_line)
|
||||
(void) gui_buffer_new (gui_current_window, ptr_server, NULL,
|
||||
BUFFER_TYPE_STANDARD, 1);
|
||||
gui_window_redraw_buffer (gui_current_window->buffer);
|
||||
if (!irc_server_connect (ptr_server))
|
||||
if (!irc_server_connect (ptr_server, 0))
|
||||
irc_server_reconnect_schedule (ptr_server);
|
||||
}
|
||||
}
|
||||
@@ -2244,6 +2247,7 @@ irc_server_print_log (t_irc_server *server)
|
||||
weechat_log_printf (" prefix. . . . . . . : '%s'\n", server->prefix);
|
||||
weechat_log_printf (" reconnect_start . . : %ld\n", server->reconnect_start);
|
||||
weechat_log_printf (" reconnect_join. . . : %d\n", server->reconnect_join);
|
||||
weechat_log_printf (" disable_autojoin. . : %d\n", server->disable_autojoin);
|
||||
weechat_log_printf (" is_away . . . . . . : %d\n", server->is_away);
|
||||
weechat_log_printf (" away_message. . . . : '%s'\n", server->away_message);
|
||||
weechat_log_printf (" away_time . . . . . : %ld\n", server->away_time);
|
||||
|
||||
+2
-1
@@ -184,6 +184,7 @@ struct t_irc_server
|
||||
char *prefix; /* nick prefix allowed (from msg 005) */
|
||||
time_t reconnect_start; /* this time + delay = reconnect time */
|
||||
int reconnect_join; /* 1 if channels opened to rejoin */
|
||||
int disable_autojoin; /* 1 if user asked to not autojoin chans */
|
||||
int is_away; /* 1 is user is marked as away */
|
||||
char *away_message; /* away message, NULL if not away */
|
||||
time_t away_time; /* time() when user marking as away */
|
||||
@@ -388,7 +389,7 @@ extern int irc_server_resolve (char *, char *, int *);
|
||||
extern int irc_server_pass_socks4proxy (int, char*, int, char*);
|
||||
extern int irc_server_pass_socks5proxy (int, char*, int);
|
||||
extern int irc_server_pass_proxy (int, char*, int, char*);
|
||||
extern int irc_server_connect (t_irc_server *);
|
||||
extern int irc_server_connect (t_irc_server *, int);
|
||||
extern void irc_server_reconnect (t_irc_server *);
|
||||
extern void irc_server_auto_connect (int, int);
|
||||
extern void irc_server_disconnect (t_irc_server *, int);
|
||||
|
||||
Reference in New Issue
Block a user