1
0
mirror of https://github.com/weechat/weechat.git synced 2026-06-28 05:46:38 +02:00

core: add option weechat.look.prefix_same_nick (hide or change prefix on messages whose nick is the same as previous message) (task #11965)

This commit is contained in:
Sebastien Helleu
2012-03-28 18:07:15 +02:00
parent 272046d012
commit 67115edf3d
22 changed files with 248 additions and 47 deletions
+3 -1
View File
@@ -1,12 +1,14 @@
WeeChat ChangeLog
=================
Sébastien Helleu <flashcode@flashtux.org>
v0.3.8-dev, 2012-03-26
v0.3.8-dev, 2012-03-28
Version 0.3.8 (under dev!)
--------------------------
* core: add option weechat.look.prefix_same_nick (hide or change prefix on
messages whose nick is the same as previous message) (task #11965)
* core: convert tabs to spaces in text pasted (bug #25028)
* core: add a connection timeout for child process in hook_connect (bug #35966)
* core: follow symbolic links when writing configuration files (.conf)
+5
View File
@@ -653,6 +653,11 @@
** Typ: Zeichenkette
** Werte: beliebige Zeichenkette (Standardwert: `"<--"`)
* [[option_weechat.look.prefix_same_nick]] *weechat.look.prefix_same_nick*
** Beschreibung: `prefix displayed for a message with same nick as previous message: use a space " " to hide prefix, another string to display this string instead of prefix, or an empty string to disable feature (display prefix)`
** Typ: Zeichenkette
** Werte: beliebige Zeichenkette (Standardwert: `""`)
* [[option_weechat.look.prefix_suffix]] *weechat.look.prefix_suffix*
** Beschreibung: `Nach dem Präfix anzufügende Zeichenfolge`
** Typ: Zeichenkette
+5
View File
@@ -653,6 +653,11 @@
** type: string
** values: any string (default value: `"<--"`)
* [[option_weechat.look.prefix_same_nick]] *weechat.look.prefix_same_nick*
** description: `prefix displayed for a message with same nick as previous message: use a space " " to hide prefix, another string to display this string instead of prefix, or an empty string to disable feature (display prefix)`
** type: string
** values: any string (default value: `""`)
* [[option_weechat.look.prefix_suffix]] *weechat.look.prefix_suffix*
** description: `string displayed after prefix`
** type: string
+5
View File
@@ -653,6 +653,11 @@
** type: chaîne
** valeurs: toute chaîne (valeur par défaut: `"<--"`)
* [[option_weechat.look.prefix_same_nick]] *weechat.look.prefix_same_nick*
** description: `préfixe affiché pour un message avec le même pseudo que le précédent message: utiliser un espace " " pour cacher le préfixe, une autre chaîne pour l'afficher à la place du préfixe, ou une chaîne vide pour désactiver cette fonctionnalité (afficher le préfixe)`
** type: chaîne
** valeurs: toute chaîne (valeur par défaut: `""`)
* [[option_weechat.look.prefix_suffix]] *weechat.look.prefix_suffix*
** description: `chaîne affichée après le préfixe`
** type: chaîne
+5
View File
@@ -653,6 +653,11 @@
** tipo: stringa
** valori: qualsiasi stringa (valore predefinito: `"<--"`)
* [[option_weechat.look.prefix_same_nick]] *weechat.look.prefix_same_nick*
** descrizione: `prefix displayed for a message with same nick as previous message: use a space " " to hide prefix, another string to display this string instead of prefix, or an empty string to disable feature (display prefix)`
** tipo: stringa
** valori: qualsiasi stringa (valore predefinito: `""`)
* [[option_weechat.look.prefix_suffix]] *weechat.look.prefix_suffix*
** descrizione: `stringa visualizzata dopo il prefisso`
** tipo: stringa
+7 -1
View File
@@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.3.8-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2012-03-26 13:41+0200\n"
"POT-Creation-Date: 2012-03-28 15:03+0200\n"
"PO-Revision-Date: 2012-02-26 09:16+0100\n"
"Last-Translator: Jiri Golembiovsky <golemj@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -2580,6 +2580,12 @@ msgstr ""
"zobrazit '+' pokud je jméno bufferu zkráceno (při spojení vice bufferů se "
"stejným číslem)"
msgid ""
"prefix displayed for a message with same nick as previous message: use a "
"space \" \" to hide prefix, another string to display this string instead of "
"prefix, or an empty string to disable feature (display prefix)"
msgstr ""
msgid "string displayed after prefix"
msgstr "řetězec zobrazený za prefixem"
+7 -1
View File
@@ -23,7 +23,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.3.7-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2012-03-26 13:41+0200\n"
"POT-Creation-Date: 2012-03-28 15:03+0200\n"
"PO-Revision-Date: 2012-03-13 16:36+0100\n"
"Last-Translator: Nils Görs <weechatter@arcor.de>\n"
"Language-Team: German <weechatter@arcor.de>\n"
@@ -2834,6 +2834,12 @@ msgstr ""
"Stellt das Symbol '+' dar falls der Buffername gekürzt wurde (wenn mehrere "
"Buffer zusammengefügt wurden und diese somit die selbe Nummer besitzen)"
msgid ""
"prefix displayed for a message with same nick as previous message: use a "
"space \" \" to hide prefix, another string to display this string instead of "
"prefix, or an empty string to disable feature (display prefix)"
msgstr ""
msgid "string displayed after prefix"
msgstr "Nach dem Präfix anzufügende Zeichenfolge"
+7 -1
View File
@@ -21,7 +21,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.3.8-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2012-03-26 13:41+0200\n"
"POT-Creation-Date: 2012-03-28 15:03+0200\n"
"PO-Revision-Date: 2012-02-26 09:16+0100\n"
"Last-Translator: Elián Hanisch <lambdae2@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -2721,6 +2721,12 @@ msgstr ""
"muestra '+' si el nombre es truncado (cuando varios buffers están fusionados "
"con el mismo número)"
msgid ""
"prefix displayed for a message with same nick as previous message: use a "
"space \" \" to hide prefix, another string to display this string instead of "
"prefix, or an empty string to disable feature (display prefix)"
msgstr ""
msgid "string displayed after prefix"
msgstr "cadena mostrada después del prefijo"
+12 -2
View File
@@ -21,8 +21,8 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.3.8-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2012-03-26 13:41+0200\n"
"PO-Revision-Date: 2012-03-26 09:16+0200\n"
"POT-Creation-Date: 2012-03-28 15:03+0200\n"
"PO-Revision-Date: 2012-03-28 15:03+0200\n"
"Last-Translator: Sebastien Helleu <flashcode@flashtux.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
"Language: French\n"
@@ -2738,6 +2738,16 @@ msgstr ""
"afficher '+' si le nom du tampon est tronqué (quand plusieurs tampons sont "
"mélangés avec le même numéro)"
msgid ""
"prefix displayed for a message with same nick as previous message: use a "
"space \" \" to hide prefix, another string to display this string instead of "
"prefix, or an empty string to disable feature (display prefix)"
msgstr ""
"préfixe affiché pour un message avec le même pseudo que le précédent "
"message: utiliser un espace \" \" pour cacher le préfixe, une autre chaîne "
"pour l'afficher à la place du préfixe, ou une chaîne vide pour désactiver "
"cette fonctionnalité (afficher le préfixe)"
msgid "string displayed after prefix"
msgstr "chaîne affichée après le préfixe"
+7 -1
View File
@@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.3.8-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2012-03-26 13:41+0200\n"
"POT-Creation-Date: 2012-03-28 15:03+0200\n"
"PO-Revision-Date: 2012-02-26 09:16+0100\n"
"Last-Translator: Andras Voroskoi <voroskoi@frugalware.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -2220,6 +2220,12 @@ msgid ""
"same number)"
msgstr ""
msgid ""
"prefix displayed for a message with same nick as previous message: use a "
"space \" \" to hide prefix, another string to display this string instead of "
"prefix, or an empty string to disable feature (display prefix)"
msgstr ""
#, fuzzy
msgid "string displayed after prefix"
msgstr "névkiegészítés után beszúrt szöveg"
+7 -1
View File
@@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.3.8-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2012-03-26 13:41+0200\n"
"POT-Creation-Date: 2012-03-28 15:03+0200\n"
"PO-Revision-Date: 2012-02-26 09:16+0100\n"
"Last-Translator: Marco Paolone <marcopaolone@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -2712,6 +2712,12 @@ msgstr ""
"visualizza '+' se il nome del buffer è troncato (quando più buffer sono "
"uniti con lo stesso numero)"
msgid ""
"prefix displayed for a message with same nick as previous message: use a "
"space \" \" to hide prefix, another string to display this string instead of "
"prefix, or an empty string to disable feature (display prefix)"
msgstr ""
msgid "string displayed after prefix"
msgstr "stringa visualizzata dopo il prefisso"
+7 -1
View File
@@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.3.8-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2012-03-26 13:41+0200\n"
"POT-Creation-Date: 2012-03-28 15:03+0200\n"
"PO-Revision-Date: 2012-02-26 09:16+0100\n"
"Last-Translator: \"AYANOKOUZI, Ryuunosuke\" <i38w7i3@yahoo.co.jp>\n"
"Language-Team: Japanese\n"
@@ -2659,6 +2659,12 @@ msgstr ""
"バッファ名が切り詰められた場合は '+' を表示 (多くのバッファが同じ番号を持つよ"
"うにマージされた場合)"
msgid ""
"prefix displayed for a message with same nick as previous message: use a "
"space \" \" to hide prefix, another string to display this string instead of "
"prefix, or an empty string to disable feature (display prefix)"
msgstr ""
msgid "string displayed after prefix"
msgstr "プレフィックスの後ろに表示される文字列"
+7 -1
View File
@@ -21,7 +21,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.3.8-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2012-03-26 13:41+0200\n"
"POT-Creation-Date: 2012-03-28 15:03+0200\n"
"PO-Revision-Date: 2012-02-26 09:16+0100\n"
"Last-Translator: Krzysztof Korościk <soltys@szluug.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -2719,6 +2719,12 @@ msgstr ""
"wyświetl '+' jeśli nazwa bufora została obcięta (kiedy wiele buforów jest "
"scalonych z takim samym numerem)"
msgid ""
"prefix displayed for a message with same nick as previous message: use a "
"space \" \" to hide prefix, another string to display this string instead of "
"prefix, or an empty string to disable feature (display prefix)"
msgstr ""
msgid "string displayed after prefix"
msgstr "ciąg wyświetlany po przedrostku"
+7 -1
View File
@@ -21,7 +21,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.3.8-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2012-03-26 13:41+0200\n"
"POT-Creation-Date: 2012-03-28 15:03+0200\n"
"PO-Revision-Date: 2012-02-26 09:16+0100\n"
"Last-Translator: Sergio Durigan Junior <sergiosdj@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -2661,6 +2661,12 @@ msgstr ""
"mostra '+' se o nome do buffer está truncado (quando muitos buffers estão "
"mesclados com o mesmo número)"
msgid ""
"prefix displayed for a message with same nick as previous message: use a "
"space \" \" to hide prefix, another string to display this string instead of "
"prefix, or an empty string to disable feature (display prefix)"
msgstr ""
# Find a better translation to "string"
#, fuzzy
msgid "string displayed after prefix"
+7 -1
View File
@@ -21,7 +21,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.3.8-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2012-03-26 13:41+0200\n"
"POT-Creation-Date: 2012-03-28 15:03+0200\n"
"PO-Revision-Date: 2012-02-26 09:16+0100\n"
"Last-Translator: Aleksey V Zapparov AKA ixti <ixti@member.fsf.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -2248,6 +2248,12 @@ msgid ""
"same number)"
msgstr ""
msgid ""
"prefix displayed for a message with same nick as previous message: use a "
"space \" \" to hide prefix, another string to display this string instead of "
"prefix, or an empty string to disable feature (display prefix)"
msgstr ""
#, fuzzy
msgid "string displayed after prefix"
msgstr "строка, вставляемая после автодополнения ника"
+7 -1
View File
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2012-03-26 13:41+0200\n"
"POT-Creation-Date: 2012-03-28 15:03+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -1959,6 +1959,12 @@ msgid ""
"same number)"
msgstr ""
msgid ""
"prefix displayed for a message with same nick as previous message: use a "
"space \" \" to hide prefix, another string to display this string instead of "
"prefix, or an empty string to disable feature (display prefix)"
msgstr ""
msgid "string displayed after prefix"
msgstr ""
+49 -10
View File
@@ -136,6 +136,7 @@ struct t_config_option *config_look_prefix_align_more;
struct t_config_option *config_look_prefix_buffer_align;
struct t_config_option *config_look_prefix_buffer_align_max;
struct t_config_option *config_look_prefix_buffer_align_more;
struct t_config_option *config_look_prefix_same_nick;
struct t_config_option *config_look_prefix_suffix;
struct t_config_option *config_look_read_marker;
struct t_config_option *config_look_read_marker_always_show;
@@ -241,6 +242,7 @@ struct t_config_option *config_plugin_save_config_on_unload;
/* other */
int config_length_prefix_same_nick = 0;
struct t_hook *config_day_change_timer = NULL;
int config_day_change_old_day = -1;
regex_t *config_highlight_regex = NULL;
@@ -365,6 +367,44 @@ config_change_buffer_time_format (void *data, struct t_config_option *option)
gui_window_ask_refresh (1);
}
/*
* config_compute_prefix_max_length_all_buffers: compute the "prefix_max_length"
* on all buffers
*/
void
config_compute_prefix_max_length_all_buffers ()
{
struct t_gui_buffer *ptr_buffer;
for (ptr_buffer = gui_buffers; ptr_buffer;
ptr_buffer = ptr_buffer->next_buffer)
{
if (ptr_buffer->own_lines)
gui_line_compute_prefix_max_length (ptr_buffer->own_lines);
if (ptr_buffer->mixed_lines)
gui_line_compute_prefix_max_length (ptr_buffer->mixed_lines);
}
}
/*
* config_change_prefix_same_nick: called when "prefix for same nick" changes
*/
void
config_change_prefix_same_nick (void *data, struct t_config_option *option)
{
/* make C compiler happy */
(void) data;
(void) option;
config_length_prefix_same_nick =
gui_chat_strlen_screen (CONFIG_STRING(config_look_prefix_same_nick));
config_compute_prefix_max_length_all_buffers ();
gui_window_ask_refresh (1);
}
/*
* config_change_eat_newline_glitch: called when eat_newline_glitch changes
*/
@@ -516,20 +556,11 @@ config_change_prefix (void *data, struct t_config_option *option)
void
config_change_prefix_align_min (void *data, struct t_config_option *option)
{
struct t_gui_buffer *ptr_buffer;
/* make C compiler happy */
(void) data;
(void) option;
for (ptr_buffer = gui_buffers; ptr_buffer;
ptr_buffer = ptr_buffer->next_buffer)
{
if (ptr_buffer->own_lines)
gui_line_compute_prefix_max_length (ptr_buffer->own_lines);
if (ptr_buffer->mixed_lines)
gui_line_compute_prefix_max_length (ptr_buffer->mixed_lines);
}
config_compute_prefix_max_length_all_buffers ();
gui_window_ask_refresh (1);
}
@@ -2059,6 +2090,14 @@ config_weechat_init_options ()
N_("display '+' if buffer name is truncated (when many buffers are "
"merged with same number)"),
NULL, 0, 0, "on", NULL, 0, NULL, NULL, &config_change_buffers, NULL, NULL, NULL);
config_look_prefix_same_nick = config_file_new_option (
weechat_config_file, ptr_section,
"prefix_same_nick", "string",
N_("prefix displayed for a message with same nick as previous "
"message: use a space \" \" to hide prefix, another string to "
"display this string instead of prefix, or an empty string to "
"disable feature (display prefix)"),
NULL, 0, 0, "", NULL, 0, NULL, NULL, &config_change_prefix_same_nick, NULL, NULL, NULL);
config_look_prefix_suffix = config_file_new_option (
weechat_config_file, ptr_section,
"prefix_suffix", "string",
+2
View File
@@ -160,6 +160,7 @@ extern struct t_config_option *config_look_prefix_align_more;
extern struct t_config_option *config_look_prefix_buffer_align;
extern struct t_config_option *config_look_prefix_buffer_align_max;
extern struct t_config_option *config_look_prefix_buffer_align_more;
extern struct t_config_option *config_look_prefix_same_nick;
extern struct t_config_option *config_look_prefix_suffix;
extern struct t_config_option *config_look_read_marker;
extern struct t_config_option *config_look_read_marker_always_show;
@@ -253,6 +254,7 @@ extern struct t_config_option *config_plugin_extension;
extern struct t_config_option *config_plugin_path;
extern struct t_config_option *config_plugin_save_config_on_unload;
extern int config_length_prefix_same_nick;
extern regex_t *config_highlight_regex;
extern char **config_highlight_tags;
extern int config_num_highlight_tags;
+11 -10
View File
@@ -559,9 +559,9 @@ gui_chat_display_time_to_prefix (struct t_gui_window *window,
int simulate)
{
char str_space[] = " ", str_plus[] = "+";
char *prefix_no_color, *prefix_highlighted;
char *prefix_no_color, *prefix_highlighted, *ptr_prefix;
const char *short_name;
int i, length, length_allowed, num_spaces;
int i, length, length_allowed, num_spaces, prefix_length;
struct t_gui_lines *mixed_lines;
if (!simulate)
@@ -722,8 +722,9 @@ gui_chat_display_time_to_prefix (struct t_gui_window *window,
}
/* display prefix */
if (line->data->prefix
&& (line->data->prefix[0]
gui_line_get_prefix_for_display (line, &ptr_prefix, &prefix_length);
if (ptr_prefix
&& (ptr_prefix[0]
|| (CONFIG_INTEGER(config_look_prefix_align) != CONFIG_LOOK_PREFIX_ALIGN_NONE)))
{
if (!simulate)
@@ -743,7 +744,7 @@ gui_chat_display_time_to_prefix (struct t_gui_window *window,
else
length_allowed = window->buffer->lines->prefix_max_length;
num_spaces = length_allowed - line->data->prefix_length;
num_spaces = length_allowed - prefix_length;
if (CONFIG_INTEGER(config_look_prefix_align) == CONFIG_LOOK_PREFIX_ALIGN_RIGHT)
{
@@ -759,7 +760,7 @@ gui_chat_display_time_to_prefix (struct t_gui_window *window,
prefix_highlighted = NULL;
if (line->data->highlight)
{
prefix_no_color = gui_color_decode (line->data->prefix, NULL);
prefix_no_color = gui_color_decode (ptr_prefix, NULL);
if (prefix_no_color)
{
length = strlen (prefix_no_color) + 32;
@@ -807,12 +808,12 @@ gui_chat_display_time_to_prefix (struct t_gui_window *window,
&& (num_spaces < 0))
{
gui_chat_display_word (window, line,
(prefix_highlighted) ? prefix_highlighted : line->data->prefix,
(prefix_highlighted) ? prefix_highlighted : ptr_prefix,
(prefix_highlighted) ?
prefix_highlighted + gui_chat_string_real_pos (prefix_highlighted,
length_allowed) :
line->data->prefix + gui_chat_string_real_pos (line->data->prefix,
length_allowed),
ptr_prefix + gui_chat_string_real_pos (ptr_prefix,
length_allowed),
1, num_lines, count, lines_displayed,
simulate,
CONFIG_BOOLEAN(config_look_color_inactive_prefix));
@@ -820,7 +821,7 @@ gui_chat_display_time_to_prefix (struct t_gui_window *window,
else
{
gui_chat_display_word (window, line,
(prefix_highlighted) ? prefix_highlighted : line->data->prefix,
(prefix_highlighted) ? prefix_highlighted : ptr_prefix,
NULL, 1, num_lines, count, lines_displayed,
simulate,
CONFIG_BOOLEAN(config_look_color_inactive_prefix));
+8 -3
View File
@@ -3364,8 +3364,11 @@ gui_buffer_dump_hexa (struct t_gui_buffer *buffer)
free (message_without_colors);
tags = string_build_with_split_string ((const char **)ptr_line->data->tags_array,
",");
log_printf (" tags: %s, highlight: %d",
(tags) ? tags : "(none)", ptr_line->data->highlight);
log_printf (" tags: %s, displayed: %d, highlight: %d, prefix_same_nick: %d",
(tags) ? tags : "(none)",
ptr_line->data->displayed,
ptr_line->data->highlight,
ptr_line->data->prefix_same_nick);
if (tags)
free (tags);
snprintf (buf, sizeof (buf), "%s", ctime (&ptr_line->data->date));
@@ -3551,11 +3554,13 @@ gui_buffer_print_log ()
tags = string_build_with_split_string ((const char **)ptr_line->data->tags_array,
",");
log_printf (" line N-%05d: y:%d, str_time:'%s', tags:'%s', "
"displayed:%d, highlight:%d, refresh_needed:%d, prefix:'%s'",
"displayed:%d, highlight:%d, prefix_same_nick:%d, "
"refresh_needed:%d, prefix:'%s'",
num, ptr_line->data->y, ptr_line->data->str_time,
(tags) ? tags : "",
(int)(ptr_line->data->displayed),
(int)(ptr_line->data->highlight),
(int)(ptr_line->data->prefix_same_nick),
(int)(ptr_line->data->refresh_needed),
ptr_line->data->prefix);
log_printf (" data: '%s'",
+69 -11
View File
@@ -83,6 +83,43 @@ gui_lines_free (struct t_gui_lines *lines)
free (lines);
}
/*
* gui_line_get_prefix_for_display: get prefix and its length (for display only)
* if the prefix can be hidden (same nick as
* previous message), and if the option is
* enabled (not empty string), then this
* this function will return empty prefix or
* prefix from option
*/
void
gui_line_get_prefix_for_display (struct t_gui_line *line,
char **prefix, int *length)
{
if (line->data->prefix_same_nick
&& CONFIG_STRING(config_look_prefix_same_nick)
&& CONFIG_STRING(config_look_prefix_same_nick)[0])
{
/* same nick: return empty prefix or value from option */
if (strcmp (CONFIG_STRING(config_look_prefix_same_nick), " ") == 0)
{
*prefix = gui_chat_prefix_empty;
*length = 0;
}
else
{
*prefix = CONFIG_STRING(config_look_prefix_same_nick);
*length = config_length_prefix_same_nick;
}
}
else
{
/* not same nick: return prefix from line */
*prefix = line->data->prefix;
*length = line->data->prefix_length;
}
}
/*
* gui_line_get_align: get alignment for a line
*/
@@ -91,7 +128,8 @@ int
gui_line_get_align (struct t_gui_buffer *buffer, struct t_gui_line *line,
int with_suffix, int first_line)
{
int length_time, length_buffer, length_suffix;
int length_time, length_buffer, length_suffix, prefix_length;
char *ptr_prefix;
/* return immediately if alignment for end of lines is "time" */
if (!first_line
@@ -141,10 +179,11 @@ gui_line_get_align (struct t_gui_buffer *buffer, struct t_gui_line *line,
return length_time + length_buffer;
}
gui_line_get_prefix_for_display (line, &ptr_prefix, &prefix_length);
if (CONFIG_INTEGER(config_look_prefix_align) == CONFIG_LOOK_PREFIX_ALIGN_NONE)
{
return length_time + length_buffer + line->data->prefix_length
+ ((line->data->prefix_length > 0) ? 1 : 0);
return length_time + length_buffer + prefix_length + ((prefix_length > 0) ? 1 : 0);
}
length_suffix = 0;
@@ -533,13 +572,16 @@ void
gui_line_compute_prefix_max_length (struct t_gui_lines *lines)
{
struct t_gui_line *ptr_line;
char *ptr_prefix;
int prefix_length;
lines->prefix_max_length = CONFIG_INTEGER(config_look_prefix_align_min);
for (ptr_line = lines->first_line; ptr_line;
ptr_line = ptr_line->next_line)
{
if (ptr_line->data->prefix_length > lines->prefix_max_length)
lines->prefix_max_length = ptr_line->data->prefix_length;
gui_line_get_prefix_for_display (ptr_line, &ptr_prefix, &prefix_length);
if (prefix_length > lines->prefix_max_length)
lines->prefix_max_length = prefix_length;
}
}
@@ -551,6 +593,9 @@ void
gui_line_add_to_list (struct t_gui_lines *lines,
struct t_gui_line *line)
{
char *ptr_prefix;
int prefix_length;
if (!lines->first_line)
lines->first_line = line;
else
@@ -559,8 +604,9 @@ gui_line_add_to_list (struct t_gui_lines *lines,
line->next_line = NULL;
lines->last_line = line;
if (line->data->prefix_length > lines->prefix_max_length)
lines->prefix_max_length = line->data->prefix_length;
gui_line_get_prefix_for_display (line, &ptr_prefix, &prefix_length);
if (prefix_length > lines->prefix_max_length)
lines->prefix_max_length = prefix_length;
lines->lines_count++;
}
@@ -577,7 +623,8 @@ gui_line_remove_from_list (struct t_gui_buffer *buffer,
{
struct t_gui_window *ptr_win;
struct t_gui_window_scroll *ptr_scroll;
int i, update_prefix_max_length;
int i, update_prefix_max_length, prefix_length;
char *ptr_prefix;
for (ptr_win = gui_windows; ptr_win; ptr_win = ptr_win->next_window)
{
@@ -603,8 +650,9 @@ gui_line_remove_from_list (struct t_gui_buffer *buffer,
}
}
gui_line_get_prefix_for_display (line, &ptr_prefix, &prefix_length);
update_prefix_max_length =
(line->data->prefix_length == lines->prefix_max_length);
(prefix_length == lines->prefix_max_length);
/* move read marker if it was on line we are removing */
if (lines->last_read_line == line)
@@ -794,7 +842,7 @@ gui_line_add (struct t_gui_buffer *buffer, time_t date,
struct t_gui_line_data *new_line_data;
struct t_gui_window *ptr_win;
char *message_for_signal;
const char *nick;
const char *nick, *nick_previous;
int notify_level, *max_notify_level, lines_removed;
time_t current_time;
@@ -859,9 +907,17 @@ gui_line_add (struct t_gui_buffer *buffer, time_t date,
gui_chat_strlen_screen (prefix) : 0;
new_line->data->message = (message) ? strdup (message) : strdup ("");
/*
* check if prefix can be hidden: if nick is the same as previous message
* on this buffer
*/
nick = gui_line_get_nick_tag (new_line);
nick_previous = (buffer->own_lines->last_line) ?
gui_line_get_nick_tag (buffer->own_lines->last_line) : NULL;
new_line->data->prefix_same_nick = (nick && nick_previous && (strcmp (nick, nick_previous) == 0)) ? 1 : 0;
/* get notify level and max notify level for nick in buffer */
notify_level = gui_line_get_notify_level (new_line);
nick = gui_line_get_nick_tag (new_line);
max_notify_level = NULL;
if (nick)
max_notify_level = hashtable_get (buffer->hotlist_max_level_nicks, nick);
@@ -1313,6 +1369,8 @@ gui_line_add_to_infolist (struct t_infolist *infolist,
return 0;
if (!infolist_new_var_integer (ptr_item, "highlight", line->data->highlight))
return 0;
if (!infolist_new_var_integer (ptr_item, "prefix_same_nick", line->data->prefix_same_nick))
return 0;
if (!infolist_new_var_string (ptr_item, "prefix", line->data->prefix))
return 0;
if (!infolist_new_var_string (ptr_item, "message", line->data->message))
+4
View File
@@ -37,6 +37,8 @@ struct t_gui_line_data
char **tags_array; /* tags for line */
char displayed; /* 1 if line is displayed */
char highlight; /* 1 if line has highlight */
char prefix_same_nick; /* 1 if prefix can be hidden */
/* (same nick as previous message) */
char refresh_needed; /* 1 if refresh asked (free buffer) */
char *prefix; /* prefix for line (may be NULL) */
int prefix_length; /* prefix length (on screen) */
@@ -67,6 +69,8 @@ struct t_gui_lines
extern struct t_gui_lines *gui_lines_alloc ();
extern void gui_lines_free (struct t_gui_lines *lines);
extern void gui_line_get_prefix_for_display (struct t_gui_line *line,
char **prefix, int *length);
extern int gui_line_get_align (struct t_gui_buffer *buffer,
struct t_gui_line *line,
int with_suffix, int first_line);