mirror of
https://github.com/weechat/weechat.git
synced 2026-06-27 05:16:38 +02:00
Added server default notify level (task #5634), fixed crashs with /buffer and /charset commands when not connected to any server (bug #17525)
This commit is contained in:
@@ -1,10 +1,14 @@
|
||||
WeeChat - Wee Enhanced Environment for Chat
|
||||
===========================================
|
||||
|
||||
ChangeLog - 2006-08-22
|
||||
ChangeLog - 2006-08-25
|
||||
|
||||
|
||||
Version 0.2.1 (under dev!):
|
||||
* added server default notify level (set by /buffer notify on server buffer)
|
||||
(task #5634)
|
||||
* fixed crashs with /buffer and /charset commands when not connected to any
|
||||
server (bug #17525)
|
||||
* added special vars $nick/$channel/$server for server_command, alias and
|
||||
plugin command handlers
|
||||
* added arguments $1,$2,..,$9 and $* for alias (task #5831)
|
||||
|
||||
+1
-1
@@ -1235,7 +1235,7 @@
|
||||
<entry>Zeichenfolge</entry>
|
||||
<entry>eine beliebige Zeichenfolge</entry>
|
||||
<entry>''</entry>
|
||||
<entry>Durch Kommata getrennte Liste der Notify-Levels für die Channels auf diesem Server (Format: #channel:1,...)</entry>
|
||||
<entry>Comma separated list of notify levels for channels of this server (format: #channel:1,..), a channel name '*' is reserved for server default notify level</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><option>server_charset_decode_iso</option></entry>
|
||||
|
||||
@@ -21,14 +21,15 @@ arguments: arguments for command
|
||||
<programlisting>
|
||||
Puffer verwalten
|
||||
|
||||
Aktion: Pufferaktion:
|
||||
move: Puffer in der Liste bewegen (kann auch relativ sein, wie -1)
|
||||
close: Puffer schließen (eine Part-Message kann optional angegeben werden)
|
||||
list: alle offenen Puffer auflisten (Standardaktion)
|
||||
notify: Notify-Level für Puffer festlegen (0=nie, 1=bei hervorgehobenen Nachrichten, 2=1+persönliche Nachricht, 3=2+join/part)
|
||||
Server
|
||||
Channel: gehe zum Puffer mit Servernamen oder Channelnamen
|
||||
Nummer: gehe zu Puffer mit dieser Nummer
|
||||
action: action to do:
|
||||
move: move buffer in the list (may be relative, for example -1)
|
||||
close: close buffer (optional arg is part message, for a channel)
|
||||
list: list open buffers (no parameter implies this list)
|
||||
notify: set notify level for buffer (0=never, 1=highlight, 2=1+msg, 3=2+join/part)
|
||||
(when executed on server buffer, this sets default notify level for whole server)
|
||||
server,
|
||||
channel: jump to buffer by server and/or channel name
|
||||
number: jump to buffer by number
|
||||
|
||||
</programlisting>
|
||||
<command>builtin Befehl</command>
|
||||
|
||||
+1
-1
@@ -1235,7 +1235,7 @@
|
||||
<entry>string</entry>
|
||||
<entry>any string</entry>
|
||||
<entry>''</entry>
|
||||
<entry>Comma separated list of notify levels for channels of this server (format: #channel:1,..)</entry>
|
||||
<entry>Comma separated list of notify levels for channels of this server (format: #channel:1,..), a channel name '*' is reserved for server default notify level</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><option>server_charset_decode_iso</option></entry>
|
||||
|
||||
@@ -26,7 +26,8 @@ manage buffers
|
||||
close: close buffer (optional arg is part message, for a channel)
|
||||
list: list open buffers (no parameter implies this list)
|
||||
notify: set notify level for buffer (0=never, 1=highlight, 2=1+msg, 3=2+join/part)
|
||||
server
|
||||
(when executed on server buffer, this sets default notify level for whole server)
|
||||
server,
|
||||
channel: jump to buffer by server and/or channel name
|
||||
number: jump to buffer by number
|
||||
|
||||
|
||||
+1
-1
@@ -1235,7 +1235,7 @@
|
||||
<entry>chaîne</entry>
|
||||
<entry>toute chaîne</entry>
|
||||
<entry>''</entry>
|
||||
<entry>Liste des niveaux de notifications (séparés par des virgules) pour les canaux de ce serveur (format: #canal:1,..)</entry>
|
||||
<entry>Liste des niveaux de notifications (séparés par des virgules) pour les canaux de ce serveur (format: #canal:1,..), un nom de canal '*' est réservé pour la notification par défaut du serveur</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><option>server_charset_decode_iso</option></entry>
|
||||
|
||||
@@ -26,7 +26,8 @@ gestion des tampons
|
||||
close: ferme le tampon (le paramètre optionnel est le message de fin, pour un canal)
|
||||
list: liste les tampons ouverts (pas de paramètre affiche cette liste)
|
||||
notify: fixe le niveau de notification (0=jamais, 1=highlight, 2=1+msg, 3=2+join/part)
|
||||
serveur
|
||||
(quand exécuté sur un tampon serveur, cela fixe le niveau de notification par défaut pour le serveur entier)
|
||||
serveur,
|
||||
canal: saute au tampon par serveur et/ou nom de canal
|
||||
nombre: saute au tampon qui a ce numéro
|
||||
|
||||
|
||||
+263
-251
File diff suppressed because it is too large
Load Diff
+102
-57
@@ -65,7 +65,8 @@ t_weechat_command weechat_commands[] =
|
||||
" close: close buffer (optional arg is part message, for a channel)\n"
|
||||
" list: list open buffers (no parameter implies this list)\n"
|
||||
" notify: set notify level for buffer (0=never, 1=highlight, 2=1+msg, 3=2+join/part)\n"
|
||||
"server\n"
|
||||
" (when executed on server buffer, this sets default notify level for whole server)\n"
|
||||
"server,\n"
|
||||
"channel: jump to buffer by server and/or channel name\n"
|
||||
" number: jump to buffer by number"),
|
||||
"move|close|list|notify", 0, MAX_ARGS, 0, NULL, weechat_cmd_buffer },
|
||||
@@ -1003,7 +1004,7 @@ weechat_cmd_buffer (t_irc_server *server, t_irc_channel *channel,
|
||||
t_irc_channel *ptr_channel;
|
||||
long number;
|
||||
char *error, *pos, **argv;
|
||||
int argc, target_buffer;
|
||||
int argc, target_buffer, count;
|
||||
|
||||
irc_find_context (server, channel, &window, &buffer);
|
||||
|
||||
@@ -1083,31 +1084,34 @@ weechat_cmd_buffer (t_irc_server *server, t_irc_channel *channel,
|
||||
}
|
||||
if (BUFFER_IS_SERVER(buffer))
|
||||
{
|
||||
if (SERVER(buffer)->channels)
|
||||
if (SERVER(buffer))
|
||||
{
|
||||
irc_display_prefix (NULL, NULL, PREFIX_ERROR);
|
||||
gui_printf (NULL,
|
||||
_("%s can not close server buffer while channels "
|
||||
"are open\n"),
|
||||
WEECHAT_ERROR);
|
||||
free_exploded_string (argv);
|
||||
return -1;
|
||||
if (SERVER(buffer)->channels)
|
||||
{
|
||||
irc_display_prefix (NULL, NULL, PREFIX_ERROR);
|
||||
gui_printf (NULL,
|
||||
_("%s can not close server buffer while channels "
|
||||
"are open\n"),
|
||||
WEECHAT_ERROR);
|
||||
free_exploded_string (argv);
|
||||
return -1;
|
||||
}
|
||||
server_disconnect (SERVER(buffer), 0);
|
||||
ptr_server = SERVER(buffer);
|
||||
if (!buffer->all_servers)
|
||||
{
|
||||
gui_buffer_free (buffer, 1);
|
||||
ptr_server->buffer = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
ptr_server->buffer = NULL;
|
||||
buffer->server = NULL;
|
||||
gui_window_switch_server (window);
|
||||
}
|
||||
gui_status_draw (gui_current_window->buffer, 1);
|
||||
gui_input_draw (gui_current_window->buffer, 1);
|
||||
}
|
||||
server_disconnect (SERVER(buffer), 0);
|
||||
ptr_server = SERVER(buffer);
|
||||
if (!buffer->all_servers)
|
||||
{
|
||||
gui_buffer_free (buffer, 1);
|
||||
ptr_server->buffer = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
ptr_server->buffer = NULL;
|
||||
buffer->server = NULL;
|
||||
gui_window_switch_server (window);
|
||||
}
|
||||
gui_status_draw (gui_current_window->buffer, 1);
|
||||
gui_input_draw (gui_current_window->buffer, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1157,24 +1161,42 @@ weechat_cmd_buffer (t_irc_server *server, t_irc_channel *channel,
|
||||
{
|
||||
if (argc < 2)
|
||||
{
|
||||
/* display notify level for all buffers */
|
||||
gui_printf (NULL, "\n");
|
||||
gui_printf (NULL, _("Notify levels: "));
|
||||
for (ptr_buffer = gui_buffers; ptr_buffer; ptr_buffer = ptr_buffer->next_buffer)
|
||||
|
||||
/* display default notify level for all connected servers */
|
||||
gui_printf (NULL, _("Default notify levels for servers:"));
|
||||
count = 0;
|
||||
for (ptr_server = irc_servers; ptr_server;
|
||||
ptr_server = ptr_server->next_server)
|
||||
{
|
||||
gui_printf (NULL, "%d.%s:",
|
||||
if (ptr_server->buffer)
|
||||
{
|
||||
gui_printf (NULL, " %s:%d",
|
||||
ptr_server->name,
|
||||
server_get_default_notify_level (ptr_server));
|
||||
count++;
|
||||
}
|
||||
}
|
||||
if (count == 0)
|
||||
gui_printf (NULL, " -");
|
||||
gui_printf (NULL, "\n");
|
||||
|
||||
/* display notify level for all buffers */
|
||||
gui_printf (NULL, _("Notify levels:"));
|
||||
for (ptr_buffer = gui_buffers; ptr_buffer;
|
||||
ptr_buffer = ptr_buffer->next_buffer)
|
||||
{
|
||||
gui_printf (NULL, " %d.%s:",
|
||||
ptr_buffer->number,
|
||||
(ptr_buffer->type == BUFFER_TYPE_DCC) ? "DCC" :
|
||||
((ptr_buffer->type == BUFFER_TYPE_RAW_DATA) ? _("Raw IRC data") :
|
||||
((BUFFER_IS_SERVER(ptr_buffer)) ? SERVER(ptr_buffer)->name :
|
||||
CHANNEL(ptr_buffer)->name)));
|
||||
((BUFFER_IS_SERVER(ptr_buffer) && SERVER(ptr_buffer)) ? SERVER(ptr_buffer)->name :
|
||||
((CHANNEL(ptr_buffer)) ? (CHANNEL(ptr_buffer)->name) : "-"))));
|
||||
if ((!BUFFER_IS_CHANNEL(ptr_buffer))
|
||||
&& (!BUFFER_IS_PRIVATE(ptr_buffer)))
|
||||
gui_printf (NULL, "-");
|
||||
else
|
||||
gui_printf (NULL, "%d", ptr_buffer->notify_level);
|
||||
if (ptr_buffer->next_buffer)
|
||||
gui_printf (NULL, " ");
|
||||
}
|
||||
gui_printf (NULL, "\n");
|
||||
}
|
||||
@@ -1194,28 +1216,47 @@ weechat_cmd_buffer (t_irc_server *server, t_irc_channel *channel,
|
||||
free_exploded_string (argv);
|
||||
return -1;
|
||||
}
|
||||
if ((!BUFFER_IS_CHANNEL(buffer))
|
||||
&& (!BUFFER_IS_PRIVATE(buffer)))
|
||||
if (!SERVER(buffer)
|
||||
|| ((!BUFFER_IS_SERVER(buffer))
|
||||
&& (!BUFFER_IS_CHANNEL(buffer))
|
||||
&& (!BUFFER_IS_PRIVATE(buffer))))
|
||||
{
|
||||
/* invalid buffer type (only ok on channel or private) */
|
||||
/* invalid buffer type (only ok on server, channel or private) */
|
||||
irc_display_prefix (NULL, NULL, PREFIX_ERROR);
|
||||
gui_printf (NULL, _("%s incorrect buffer for notify (must be channel or private)\n"),
|
||||
gui_printf (NULL,
|
||||
_("%s incorrect buffer for notify "
|
||||
"(must be server, channel or private)\n"),
|
||||
WEECHAT_ERROR);
|
||||
free_exploded_string (argv);
|
||||
return -1;
|
||||
}
|
||||
buffer->notify_level = number;
|
||||
channel_set_notify_level (SERVER(buffer),
|
||||
CHANNEL(buffer),
|
||||
number);
|
||||
irc_display_prefix (NULL, NULL, PREFIX_INFO);
|
||||
gui_printf (NULL, _("New notify level for %s%s%s: %s%d %s"),
|
||||
GUI_COLOR(COLOR_WIN_CHAT_CHANNEL),
|
||||
CHANNEL(buffer)->name,
|
||||
GUI_COLOR(COLOR_WIN_CHAT),
|
||||
GUI_COLOR(COLOR_WIN_CHAT_CHANNEL),
|
||||
number,
|
||||
GUI_COLOR(COLOR_WIN_CHAT));
|
||||
if (BUFFER_IS_SERVER(buffer))
|
||||
{
|
||||
server_set_default_notify_level (SERVER(buffer),
|
||||
number);
|
||||
irc_display_prefix (NULL, NULL, PREFIX_INFO);
|
||||
gui_printf (NULL, _("New default notify level for server %s%s%s: %s%d %s"),
|
||||
GUI_COLOR(COLOR_WIN_CHAT_SERVER),
|
||||
SERVER(buffer)->name,
|
||||
GUI_COLOR(COLOR_WIN_CHAT),
|
||||
GUI_COLOR(COLOR_WIN_CHAT_CHANNEL),
|
||||
number,
|
||||
GUI_COLOR(COLOR_WIN_CHAT));
|
||||
}
|
||||
else
|
||||
{
|
||||
channel_set_notify_level (SERVER(buffer),
|
||||
CHANNEL(buffer),
|
||||
number);
|
||||
irc_display_prefix (NULL, NULL, PREFIX_INFO);
|
||||
gui_printf (NULL, _("New notify level for %s%s%s: %s%d %s"),
|
||||
GUI_COLOR(COLOR_WIN_CHAT_CHANNEL),
|
||||
CHANNEL(buffer)->name,
|
||||
GUI_COLOR(COLOR_WIN_CHAT),
|
||||
GUI_COLOR(COLOR_WIN_CHAT_CHANNEL),
|
||||
number,
|
||||
GUI_COLOR(COLOR_WIN_CHAT));
|
||||
}
|
||||
switch (number)
|
||||
{
|
||||
case 0:
|
||||
@@ -1234,6 +1275,7 @@ weechat_cmd_buffer (t_irc_server *server, t_irc_channel *channel,
|
||||
gui_printf (NULL, "\n");
|
||||
break;
|
||||
}
|
||||
config_change_notify_levels ();
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1353,9 +1395,9 @@ weechat_cmd_charset_display (t_gui_buffer *buffer)
|
||||
char *value, *string, *herited;
|
||||
int length;
|
||||
|
||||
if (BUFFER_IS_SERVER(buffer) ||
|
||||
BUFFER_IS_CHANNEL(buffer) ||
|
||||
BUFFER_IS_PRIVATE(buffer))
|
||||
if ((BUFFER_IS_SERVER(buffer) && (SERVER(buffer)))
|
||||
|| BUFFER_IS_CHANNEL(buffer)
|
||||
|| BUFFER_IS_PRIVATE(buffer))
|
||||
{
|
||||
if (BUFFER_IS_SERVER(buffer))
|
||||
{
|
||||
@@ -1504,11 +1546,14 @@ weechat_cmd_charset_set (t_gui_buffer *buffer, char **string, char *charset,
|
||||
}
|
||||
if (BUFFER_IS_SERVER(buffer))
|
||||
{
|
||||
if (charset)
|
||||
config_option_list_set (string, "server", charset);
|
||||
else
|
||||
config_option_list_remove (string, "server");
|
||||
weechat_cmd_charset_display (buffer);
|
||||
if (SERVER(buffer))
|
||||
{
|
||||
if (charset)
|
||||
config_option_list_set (string, "server", charset);
|
||||
else
|
||||
config_option_list_remove (string, "server");
|
||||
weechat_cmd_charset_display (buffer);
|
||||
}
|
||||
}
|
||||
else if (BUFFER_IS_CHANNEL(buffer) ||
|
||||
BUFFER_IS_PRIVATE(buffer))
|
||||
|
||||
@@ -1026,7 +1026,9 @@ t_config_option weechat_options_server[] =
|
||||
OPTION_TYPE_BOOLEAN, BOOL_FALSE, BOOL_TRUE, BOOL_TRUE,
|
||||
NULL, NULL, &(cfg_server.autorejoin), NULL, NULL },
|
||||
{ "server_notify_levels", N_("notify levels for channels of this server"),
|
||||
N_("comma separated list of notify levels for channels of this server (format: #channel:1,..)"),
|
||||
N_("comma separated list of notify levels for channels of this server "
|
||||
"(format: #channel:1,..), a channel name '*' is reserved for server "
|
||||
"default notify level"),
|
||||
OPTION_TYPE_STRING, 0, 0, 0,
|
||||
"", NULL, NULL, &(cfg_server.notify_levels), config_change_notify_levels },
|
||||
{ "server_charset_decode_iso", N_("charset for decoding ISO on server and channels"),
|
||||
|
||||
+12
-15
@@ -488,7 +488,7 @@ int
|
||||
channel_get_notify_level (t_irc_server *server, t_irc_channel *channel)
|
||||
{
|
||||
char *name, *pos, *pos2;
|
||||
int notify;
|
||||
int server_default_notify, notify;
|
||||
|
||||
if ((!server) || (!channel))
|
||||
return NOTIFY_LEVEL_DEFAULT;
|
||||
@@ -496,26 +496,28 @@ channel_get_notify_level (t_irc_server *server, t_irc_channel *channel)
|
||||
if ((!server->notify_levels) || (!server->notify_levels[0]))
|
||||
return NOTIFY_LEVEL_DEFAULT;
|
||||
|
||||
server_default_notify = server_get_default_notify_level (server);
|
||||
|
||||
name = (char *) malloc (strlen (channel->name) + 2);
|
||||
strcpy (name, channel->name);
|
||||
strcat (name, ":");
|
||||
pos = strstr (server->notify_levels, name);
|
||||
free (name);
|
||||
if (!pos)
|
||||
return NOTIFY_LEVEL_DEFAULT;
|
||||
return server_default_notify;
|
||||
|
||||
pos2 = pos + strlen (channel->name);
|
||||
if (pos2[0] != ':')
|
||||
return NOTIFY_LEVEL_DEFAULT;
|
||||
return server_default_notify;
|
||||
pos2++;
|
||||
if (!pos2[0])
|
||||
return NOTIFY_LEVEL_DEFAULT;
|
||||
return server_default_notify;
|
||||
|
||||
notify = (int)(pos2[0] - '0');
|
||||
if ((notify < NOTIFY_LEVEL_MIN) || (notify > NOTIFY_LEVEL_MAX))
|
||||
return NOTIFY_LEVEL_DEFAULT;
|
||||
else
|
||||
if ((notify >= NOTIFY_LEVEL_MIN) && (notify <= NOTIFY_LEVEL_MAX))
|
||||
return notify;
|
||||
|
||||
return server_default_notify;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -530,14 +532,9 @@ channel_set_notify_level (t_irc_server *server, t_irc_channel *channel, int noti
|
||||
if ((!server) || (!channel))
|
||||
return;
|
||||
|
||||
if (notify == NOTIFY_LEVEL_DEFAULT)
|
||||
config_option_list_remove (&(server->notify_levels), channel->name);
|
||||
else
|
||||
{
|
||||
level_string[0] = notify + '0';
|
||||
level_string[1] = '\0';
|
||||
config_option_list_set (&(server->notify_levels), channel->name, level_string);
|
||||
}
|
||||
level_string[0] = notify + '0';
|
||||
level_string[1] = '\0';
|
||||
config_option_list_set (&(server->notify_levels), channel->name, level_string);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -1935,6 +1935,53 @@ server_set_away (t_irc_server *server, char *nick, int is_away)
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* server_get_default_notify_level: get default notify level for server
|
||||
*/
|
||||
|
||||
int
|
||||
server_get_default_notify_level (t_irc_server *server)
|
||||
{
|
||||
int notify, value;
|
||||
char *pos;
|
||||
|
||||
notify = NOTIFY_LEVEL_DEFAULT;
|
||||
|
||||
if (!server)
|
||||
return notify;
|
||||
|
||||
pos = strstr (server->notify_levels, "*:");
|
||||
if (pos)
|
||||
{
|
||||
pos += 2;
|
||||
if (pos[0])
|
||||
{
|
||||
value = (int)(pos[0] - '0');
|
||||
if ((value >= NOTIFY_LEVEL_MIN) && (value <= NOTIFY_LEVEL_MAX))
|
||||
notify = value;
|
||||
}
|
||||
}
|
||||
|
||||
return notify;
|
||||
}
|
||||
|
||||
/*
|
||||
* server_set_default_notify_level: set default notify level for server
|
||||
*/
|
||||
|
||||
void
|
||||
server_set_default_notify_level (t_irc_server *server, int notify)
|
||||
{
|
||||
char level_string[2];
|
||||
|
||||
if (server)
|
||||
{
|
||||
level_string[0] = notify + '0';
|
||||
level_string[1] = '\0';
|
||||
config_option_list_set (&(server->notify_levels), "*", level_string);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* server_print_log: print server infos in log (usually for crash dump)
|
||||
*/
|
||||
|
||||
@@ -355,6 +355,8 @@ extern int server_name_already_exists (char *);
|
||||
extern void server_remove_away ();
|
||||
extern void server_check_away ();
|
||||
extern void server_set_away (t_irc_server *, char *, int);
|
||||
extern int server_get_default_notify_level (t_irc_server *);
|
||||
extern void server_set_default_notify_level (t_irc_server *, int);
|
||||
extern void server_print_log (t_irc_server *);
|
||||
|
||||
/* proxy functions (irc-server.c) */
|
||||
|
||||
+5
-1
@@ -1,10 +1,14 @@
|
||||
WeeChat - Wee Enhanced Environment for Chat
|
||||
===========================================
|
||||
|
||||
ChangeLog - 2006-08-22
|
||||
ChangeLog - 2006-08-25
|
||||
|
||||
|
||||
Version 0.2.1 (under dev!):
|
||||
* added server default notify level (set by /buffer notify on server buffer)
|
||||
(task #5634)
|
||||
* fixed crashs with /buffer and /charset commands when not connected to any
|
||||
server (bug #17525)
|
||||
* added special vars $nick/$channel/$server for server_command, alias and
|
||||
plugin command handlers
|
||||
* added arguments $1,$2,..,$9 and $* for alias (task #5831)
|
||||
|
||||
@@ -1235,7 +1235,7 @@
|
||||
<entry>Zeichenfolge</entry>
|
||||
<entry>eine beliebige Zeichenfolge</entry>
|
||||
<entry>''</entry>
|
||||
<entry>Durch Kommata getrennte Liste der Notify-Levels für die Channels auf diesem Server (Format: #channel:1,...)</entry>
|
||||
<entry>Comma separated list of notify levels for channels of this server (format: #channel:1,..), a channel name '*' is reserved for server default notify level</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><option>server_charset_decode_iso</option></entry>
|
||||
|
||||
@@ -21,14 +21,15 @@ arguments: arguments for command
|
||||
<programlisting>
|
||||
Puffer verwalten
|
||||
|
||||
Aktion: Pufferaktion:
|
||||
move: Puffer in der Liste bewegen (kann auch relativ sein, wie -1)
|
||||
close: Puffer schließen (eine Part-Message kann optional angegeben werden)
|
||||
list: alle offenen Puffer auflisten (Standardaktion)
|
||||
notify: Notify-Level für Puffer festlegen (0=nie, 1=bei hervorgehobenen Nachrichten, 2=1+persönliche Nachricht, 3=2+join/part)
|
||||
Server
|
||||
Channel: gehe zum Puffer mit Servernamen oder Channelnamen
|
||||
Nummer: gehe zu Puffer mit dieser Nummer
|
||||
action: action to do:
|
||||
move: move buffer in the list (may be relative, for example -1)
|
||||
close: close buffer (optional arg is part message, for a channel)
|
||||
list: list open buffers (no parameter implies this list)
|
||||
notify: set notify level for buffer (0=never, 1=highlight, 2=1+msg, 3=2+join/part)
|
||||
(when executed on server buffer, this sets default notify level for whole server)
|
||||
server,
|
||||
channel: jump to buffer by server and/or channel name
|
||||
number: jump to buffer by number
|
||||
|
||||
</programlisting>
|
||||
<command>builtin Befehl</command>
|
||||
|
||||
@@ -1235,7 +1235,7 @@
|
||||
<entry>string</entry>
|
||||
<entry>any string</entry>
|
||||
<entry>''</entry>
|
||||
<entry>Comma separated list of notify levels for channels of this server (format: #channel:1,..)</entry>
|
||||
<entry>Comma separated list of notify levels for channels of this server (format: #channel:1,..), a channel name '*' is reserved for server default notify level</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><option>server_charset_decode_iso</option></entry>
|
||||
|
||||
@@ -26,7 +26,8 @@ manage buffers
|
||||
close: close buffer (optional arg is part message, for a channel)
|
||||
list: list open buffers (no parameter implies this list)
|
||||
notify: set notify level for buffer (0=never, 1=highlight, 2=1+msg, 3=2+join/part)
|
||||
server
|
||||
(when executed on server buffer, this sets default notify level for whole server)
|
||||
server,
|
||||
channel: jump to buffer by server and/or channel name
|
||||
number: jump to buffer by number
|
||||
|
||||
|
||||
@@ -1235,7 +1235,7 @@
|
||||
<entry>chaîne</entry>
|
||||
<entry>toute chaîne</entry>
|
||||
<entry>''</entry>
|
||||
<entry>Liste des niveaux de notifications (séparés par des virgules) pour les canaux de ce serveur (format: #canal:1,..)</entry>
|
||||
<entry>Liste des niveaux de notifications (séparés par des virgules) pour les canaux de ce serveur (format: #canal:1,..), un nom de canal '*' est réservé pour la notification par défaut du serveur</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><option>server_charset_decode_iso</option></entry>
|
||||
|
||||
@@ -26,7 +26,8 @@ gestion des tampons
|
||||
close: ferme le tampon (le paramètre optionnel est le message de fin, pour un canal)
|
||||
list: liste les tampons ouverts (pas de paramètre affiche cette liste)
|
||||
notify: fixe le niveau de notification (0=jamais, 1=highlight, 2=1+msg, 3=2+join/part)
|
||||
serveur
|
||||
(quand exécuté sur un tampon serveur, cela fixe le niveau de notification par défaut pour le serveur entier)
|
||||
serveur,
|
||||
canal: saute au tampon par serveur et/ou nom de canal
|
||||
nombre: saute au tampon qui a ce numéro
|
||||
|
||||
|
||||
+273
-257
File diff suppressed because it is too large
Load Diff
+273
-257
File diff suppressed because it is too large
Load Diff
+272
-257
File diff suppressed because it is too large
Load Diff
+273
-446
File diff suppressed because it is too large
Load Diff
+269
-254
File diff suppressed because it is too large
Load Diff
+272
-255
File diff suppressed because it is too large
Load Diff
+263
-251
File diff suppressed because it is too large
Load Diff
+102
-57
@@ -65,7 +65,8 @@ t_weechat_command weechat_commands[] =
|
||||
" close: close buffer (optional arg is part message, for a channel)\n"
|
||||
" list: list open buffers (no parameter implies this list)\n"
|
||||
" notify: set notify level for buffer (0=never, 1=highlight, 2=1+msg, 3=2+join/part)\n"
|
||||
"server\n"
|
||||
" (when executed on server buffer, this sets default notify level for whole server)\n"
|
||||
"server,\n"
|
||||
"channel: jump to buffer by server and/or channel name\n"
|
||||
" number: jump to buffer by number"),
|
||||
"move|close|list|notify", 0, MAX_ARGS, 0, NULL, weechat_cmd_buffer },
|
||||
@@ -1003,7 +1004,7 @@ weechat_cmd_buffer (t_irc_server *server, t_irc_channel *channel,
|
||||
t_irc_channel *ptr_channel;
|
||||
long number;
|
||||
char *error, *pos, **argv;
|
||||
int argc, target_buffer;
|
||||
int argc, target_buffer, count;
|
||||
|
||||
irc_find_context (server, channel, &window, &buffer);
|
||||
|
||||
@@ -1083,31 +1084,34 @@ weechat_cmd_buffer (t_irc_server *server, t_irc_channel *channel,
|
||||
}
|
||||
if (BUFFER_IS_SERVER(buffer))
|
||||
{
|
||||
if (SERVER(buffer)->channels)
|
||||
if (SERVER(buffer))
|
||||
{
|
||||
irc_display_prefix (NULL, NULL, PREFIX_ERROR);
|
||||
gui_printf (NULL,
|
||||
_("%s can not close server buffer while channels "
|
||||
"are open\n"),
|
||||
WEECHAT_ERROR);
|
||||
free_exploded_string (argv);
|
||||
return -1;
|
||||
if (SERVER(buffer)->channels)
|
||||
{
|
||||
irc_display_prefix (NULL, NULL, PREFIX_ERROR);
|
||||
gui_printf (NULL,
|
||||
_("%s can not close server buffer while channels "
|
||||
"are open\n"),
|
||||
WEECHAT_ERROR);
|
||||
free_exploded_string (argv);
|
||||
return -1;
|
||||
}
|
||||
server_disconnect (SERVER(buffer), 0);
|
||||
ptr_server = SERVER(buffer);
|
||||
if (!buffer->all_servers)
|
||||
{
|
||||
gui_buffer_free (buffer, 1);
|
||||
ptr_server->buffer = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
ptr_server->buffer = NULL;
|
||||
buffer->server = NULL;
|
||||
gui_window_switch_server (window);
|
||||
}
|
||||
gui_status_draw (gui_current_window->buffer, 1);
|
||||
gui_input_draw (gui_current_window->buffer, 1);
|
||||
}
|
||||
server_disconnect (SERVER(buffer), 0);
|
||||
ptr_server = SERVER(buffer);
|
||||
if (!buffer->all_servers)
|
||||
{
|
||||
gui_buffer_free (buffer, 1);
|
||||
ptr_server->buffer = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
ptr_server->buffer = NULL;
|
||||
buffer->server = NULL;
|
||||
gui_window_switch_server (window);
|
||||
}
|
||||
gui_status_draw (gui_current_window->buffer, 1);
|
||||
gui_input_draw (gui_current_window->buffer, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1157,24 +1161,42 @@ weechat_cmd_buffer (t_irc_server *server, t_irc_channel *channel,
|
||||
{
|
||||
if (argc < 2)
|
||||
{
|
||||
/* display notify level for all buffers */
|
||||
gui_printf (NULL, "\n");
|
||||
gui_printf (NULL, _("Notify levels: "));
|
||||
for (ptr_buffer = gui_buffers; ptr_buffer; ptr_buffer = ptr_buffer->next_buffer)
|
||||
|
||||
/* display default notify level for all connected servers */
|
||||
gui_printf (NULL, _("Default notify levels for servers:"));
|
||||
count = 0;
|
||||
for (ptr_server = irc_servers; ptr_server;
|
||||
ptr_server = ptr_server->next_server)
|
||||
{
|
||||
gui_printf (NULL, "%d.%s:",
|
||||
if (ptr_server->buffer)
|
||||
{
|
||||
gui_printf (NULL, " %s:%d",
|
||||
ptr_server->name,
|
||||
server_get_default_notify_level (ptr_server));
|
||||
count++;
|
||||
}
|
||||
}
|
||||
if (count == 0)
|
||||
gui_printf (NULL, " -");
|
||||
gui_printf (NULL, "\n");
|
||||
|
||||
/* display notify level for all buffers */
|
||||
gui_printf (NULL, _("Notify levels:"));
|
||||
for (ptr_buffer = gui_buffers; ptr_buffer;
|
||||
ptr_buffer = ptr_buffer->next_buffer)
|
||||
{
|
||||
gui_printf (NULL, " %d.%s:",
|
||||
ptr_buffer->number,
|
||||
(ptr_buffer->type == BUFFER_TYPE_DCC) ? "DCC" :
|
||||
((ptr_buffer->type == BUFFER_TYPE_RAW_DATA) ? _("Raw IRC data") :
|
||||
((BUFFER_IS_SERVER(ptr_buffer)) ? SERVER(ptr_buffer)->name :
|
||||
CHANNEL(ptr_buffer)->name)));
|
||||
((BUFFER_IS_SERVER(ptr_buffer) && SERVER(ptr_buffer)) ? SERVER(ptr_buffer)->name :
|
||||
((CHANNEL(ptr_buffer)) ? (CHANNEL(ptr_buffer)->name) : "-"))));
|
||||
if ((!BUFFER_IS_CHANNEL(ptr_buffer))
|
||||
&& (!BUFFER_IS_PRIVATE(ptr_buffer)))
|
||||
gui_printf (NULL, "-");
|
||||
else
|
||||
gui_printf (NULL, "%d", ptr_buffer->notify_level);
|
||||
if (ptr_buffer->next_buffer)
|
||||
gui_printf (NULL, " ");
|
||||
}
|
||||
gui_printf (NULL, "\n");
|
||||
}
|
||||
@@ -1194,28 +1216,47 @@ weechat_cmd_buffer (t_irc_server *server, t_irc_channel *channel,
|
||||
free_exploded_string (argv);
|
||||
return -1;
|
||||
}
|
||||
if ((!BUFFER_IS_CHANNEL(buffer))
|
||||
&& (!BUFFER_IS_PRIVATE(buffer)))
|
||||
if (!SERVER(buffer)
|
||||
|| ((!BUFFER_IS_SERVER(buffer))
|
||||
&& (!BUFFER_IS_CHANNEL(buffer))
|
||||
&& (!BUFFER_IS_PRIVATE(buffer))))
|
||||
{
|
||||
/* invalid buffer type (only ok on channel or private) */
|
||||
/* invalid buffer type (only ok on server, channel or private) */
|
||||
irc_display_prefix (NULL, NULL, PREFIX_ERROR);
|
||||
gui_printf (NULL, _("%s incorrect buffer for notify (must be channel or private)\n"),
|
||||
gui_printf (NULL,
|
||||
_("%s incorrect buffer for notify "
|
||||
"(must be server, channel or private)\n"),
|
||||
WEECHAT_ERROR);
|
||||
free_exploded_string (argv);
|
||||
return -1;
|
||||
}
|
||||
buffer->notify_level = number;
|
||||
channel_set_notify_level (SERVER(buffer),
|
||||
CHANNEL(buffer),
|
||||
number);
|
||||
irc_display_prefix (NULL, NULL, PREFIX_INFO);
|
||||
gui_printf (NULL, _("New notify level for %s%s%s: %s%d %s"),
|
||||
GUI_COLOR(COLOR_WIN_CHAT_CHANNEL),
|
||||
CHANNEL(buffer)->name,
|
||||
GUI_COLOR(COLOR_WIN_CHAT),
|
||||
GUI_COLOR(COLOR_WIN_CHAT_CHANNEL),
|
||||
number,
|
||||
GUI_COLOR(COLOR_WIN_CHAT));
|
||||
if (BUFFER_IS_SERVER(buffer))
|
||||
{
|
||||
server_set_default_notify_level (SERVER(buffer),
|
||||
number);
|
||||
irc_display_prefix (NULL, NULL, PREFIX_INFO);
|
||||
gui_printf (NULL, _("New default notify level for server %s%s%s: %s%d %s"),
|
||||
GUI_COLOR(COLOR_WIN_CHAT_SERVER),
|
||||
SERVER(buffer)->name,
|
||||
GUI_COLOR(COLOR_WIN_CHAT),
|
||||
GUI_COLOR(COLOR_WIN_CHAT_CHANNEL),
|
||||
number,
|
||||
GUI_COLOR(COLOR_WIN_CHAT));
|
||||
}
|
||||
else
|
||||
{
|
||||
channel_set_notify_level (SERVER(buffer),
|
||||
CHANNEL(buffer),
|
||||
number);
|
||||
irc_display_prefix (NULL, NULL, PREFIX_INFO);
|
||||
gui_printf (NULL, _("New notify level for %s%s%s: %s%d %s"),
|
||||
GUI_COLOR(COLOR_WIN_CHAT_CHANNEL),
|
||||
CHANNEL(buffer)->name,
|
||||
GUI_COLOR(COLOR_WIN_CHAT),
|
||||
GUI_COLOR(COLOR_WIN_CHAT_CHANNEL),
|
||||
number,
|
||||
GUI_COLOR(COLOR_WIN_CHAT));
|
||||
}
|
||||
switch (number)
|
||||
{
|
||||
case 0:
|
||||
@@ -1234,6 +1275,7 @@ weechat_cmd_buffer (t_irc_server *server, t_irc_channel *channel,
|
||||
gui_printf (NULL, "\n");
|
||||
break;
|
||||
}
|
||||
config_change_notify_levels ();
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1353,9 +1395,9 @@ weechat_cmd_charset_display (t_gui_buffer *buffer)
|
||||
char *value, *string, *herited;
|
||||
int length;
|
||||
|
||||
if (BUFFER_IS_SERVER(buffer) ||
|
||||
BUFFER_IS_CHANNEL(buffer) ||
|
||||
BUFFER_IS_PRIVATE(buffer))
|
||||
if ((BUFFER_IS_SERVER(buffer) && (SERVER(buffer)))
|
||||
|| BUFFER_IS_CHANNEL(buffer)
|
||||
|| BUFFER_IS_PRIVATE(buffer))
|
||||
{
|
||||
if (BUFFER_IS_SERVER(buffer))
|
||||
{
|
||||
@@ -1504,11 +1546,14 @@ weechat_cmd_charset_set (t_gui_buffer *buffer, char **string, char *charset,
|
||||
}
|
||||
if (BUFFER_IS_SERVER(buffer))
|
||||
{
|
||||
if (charset)
|
||||
config_option_list_set (string, "server", charset);
|
||||
else
|
||||
config_option_list_remove (string, "server");
|
||||
weechat_cmd_charset_display (buffer);
|
||||
if (SERVER(buffer))
|
||||
{
|
||||
if (charset)
|
||||
config_option_list_set (string, "server", charset);
|
||||
else
|
||||
config_option_list_remove (string, "server");
|
||||
weechat_cmd_charset_display (buffer);
|
||||
}
|
||||
}
|
||||
else if (BUFFER_IS_CHANNEL(buffer) ||
|
||||
BUFFER_IS_PRIVATE(buffer))
|
||||
|
||||
@@ -1026,7 +1026,9 @@ t_config_option weechat_options_server[] =
|
||||
OPTION_TYPE_BOOLEAN, BOOL_FALSE, BOOL_TRUE, BOOL_TRUE,
|
||||
NULL, NULL, &(cfg_server.autorejoin), NULL, NULL },
|
||||
{ "server_notify_levels", N_("notify levels for channels of this server"),
|
||||
N_("comma separated list of notify levels for channels of this server (format: #channel:1,..)"),
|
||||
N_("comma separated list of notify levels for channels of this server "
|
||||
"(format: #channel:1,..), a channel name '*' is reserved for server "
|
||||
"default notify level"),
|
||||
OPTION_TYPE_STRING, 0, 0, 0,
|
||||
"", NULL, NULL, &(cfg_server.notify_levels), config_change_notify_levels },
|
||||
{ "server_charset_decode_iso", N_("charset for decoding ISO on server and channels"),
|
||||
|
||||
@@ -488,7 +488,7 @@ int
|
||||
channel_get_notify_level (t_irc_server *server, t_irc_channel *channel)
|
||||
{
|
||||
char *name, *pos, *pos2;
|
||||
int notify;
|
||||
int server_default_notify, notify;
|
||||
|
||||
if ((!server) || (!channel))
|
||||
return NOTIFY_LEVEL_DEFAULT;
|
||||
@@ -496,26 +496,28 @@ channel_get_notify_level (t_irc_server *server, t_irc_channel *channel)
|
||||
if ((!server->notify_levels) || (!server->notify_levels[0]))
|
||||
return NOTIFY_LEVEL_DEFAULT;
|
||||
|
||||
server_default_notify = server_get_default_notify_level (server);
|
||||
|
||||
name = (char *) malloc (strlen (channel->name) + 2);
|
||||
strcpy (name, channel->name);
|
||||
strcat (name, ":");
|
||||
pos = strstr (server->notify_levels, name);
|
||||
free (name);
|
||||
if (!pos)
|
||||
return NOTIFY_LEVEL_DEFAULT;
|
||||
return server_default_notify;
|
||||
|
||||
pos2 = pos + strlen (channel->name);
|
||||
if (pos2[0] != ':')
|
||||
return NOTIFY_LEVEL_DEFAULT;
|
||||
return server_default_notify;
|
||||
pos2++;
|
||||
if (!pos2[0])
|
||||
return NOTIFY_LEVEL_DEFAULT;
|
||||
return server_default_notify;
|
||||
|
||||
notify = (int)(pos2[0] - '0');
|
||||
if ((notify < NOTIFY_LEVEL_MIN) || (notify > NOTIFY_LEVEL_MAX))
|
||||
return NOTIFY_LEVEL_DEFAULT;
|
||||
else
|
||||
if ((notify >= NOTIFY_LEVEL_MIN) && (notify <= NOTIFY_LEVEL_MAX))
|
||||
return notify;
|
||||
|
||||
return server_default_notify;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -530,14 +532,9 @@ channel_set_notify_level (t_irc_server *server, t_irc_channel *channel, int noti
|
||||
if ((!server) || (!channel))
|
||||
return;
|
||||
|
||||
if (notify == NOTIFY_LEVEL_DEFAULT)
|
||||
config_option_list_remove (&(server->notify_levels), channel->name);
|
||||
else
|
||||
{
|
||||
level_string[0] = notify + '0';
|
||||
level_string[1] = '\0';
|
||||
config_option_list_set (&(server->notify_levels), channel->name, level_string);
|
||||
}
|
||||
level_string[0] = notify + '0';
|
||||
level_string[1] = '\0';
|
||||
config_option_list_set (&(server->notify_levels), channel->name, level_string);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -1935,6 +1935,53 @@ server_set_away (t_irc_server *server, char *nick, int is_away)
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* server_get_default_notify_level: get default notify level for server
|
||||
*/
|
||||
|
||||
int
|
||||
server_get_default_notify_level (t_irc_server *server)
|
||||
{
|
||||
int notify, value;
|
||||
char *pos;
|
||||
|
||||
notify = NOTIFY_LEVEL_DEFAULT;
|
||||
|
||||
if (!server)
|
||||
return notify;
|
||||
|
||||
pos = strstr (server->notify_levels, "*:");
|
||||
if (pos)
|
||||
{
|
||||
pos += 2;
|
||||
if (pos[0])
|
||||
{
|
||||
value = (int)(pos[0] - '0');
|
||||
if ((value >= NOTIFY_LEVEL_MIN) && (value <= NOTIFY_LEVEL_MAX))
|
||||
notify = value;
|
||||
}
|
||||
}
|
||||
|
||||
return notify;
|
||||
}
|
||||
|
||||
/*
|
||||
* server_set_default_notify_level: set default notify level for server
|
||||
*/
|
||||
|
||||
void
|
||||
server_set_default_notify_level (t_irc_server *server, int notify)
|
||||
{
|
||||
char level_string[2];
|
||||
|
||||
if (server)
|
||||
{
|
||||
level_string[0] = notify + '0';
|
||||
level_string[1] = '\0';
|
||||
config_option_list_set (&(server->notify_levels), "*", level_string);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* server_print_log: print server infos in log (usually for crash dump)
|
||||
*/
|
||||
|
||||
@@ -355,6 +355,8 @@ extern int server_name_already_exists (char *);
|
||||
extern void server_remove_away ();
|
||||
extern void server_check_away ();
|
||||
extern void server_set_away (t_irc_server *, char *, int);
|
||||
extern int server_get_default_notify_level (t_irc_server *);
|
||||
extern void server_set_default_notify_level (t_irc_server *, int);
|
||||
extern void server_print_log (t_irc_server *);
|
||||
|
||||
/* proxy functions (irc-server.c) */
|
||||
|
||||
Reference in New Issue
Block a user