From 811b68991e1635967334b9a2f0ba4468bbb9f44b Mon Sep 17 00:00:00 2001 From: Sebastien Helleu Date: Sat, 14 Dec 2013 11:26:03 +0100 Subject: [PATCH] core: add logical "and" between tags in filters, weechat.look.highlight_tags and buffer property "highlight_tags" The logical "and" is made with the separator "+". Example: "irc_notice+nick_toto,nick_test" will match a notice from nick "toto" or any message from nick "test". --- ChangeLog | 3 + doc/de/autogen/plugin_api/hdata.txt | 4 +- doc/de/autogen/user/weechat_commands.txt | 67 ++++++++++--------- doc/de/autogen/user/weechat_options.txt | 2 +- doc/en/autogen/plugin_api/hdata.txt | 4 +- doc/en/autogen/user/weechat_commands.txt | 5 +- doc/en/autogen/user/weechat_options.txt | 2 +- doc/en/weechat_plugin_api.en.txt | 2 + doc/fr/autogen/plugin_api/hdata.txt | 4 +- doc/fr/autogen/user/weechat_commands.txt | 3 + doc/fr/autogen/user/weechat_options.txt | 2 +- doc/fr/weechat_plugin_api.fr.txt | 3 + doc/it/autogen/plugin_api/hdata.txt | 4 +- doc/it/autogen/user/weechat_commands.txt | 5 +- doc/it/autogen/user/weechat_options.txt | 2 +- doc/it/weechat_plugin_api.it.txt | 3 + doc/ja/autogen/plugin_api/hdata.txt | 4 +- doc/ja/autogen/user/weechat_commands.txt | 65 +++++++++--------- doc/ja/autogen/user/weechat_options.txt | 2 +- po/cs.po | 28 +++++--- po/de.po | 29 +++++--- po/es.po | 28 +++++--- po/fr.po | 43 +++++++++--- po/hu.po | 29 +++++--- po/it.po | 28 +++++--- po/ja.po | 29 +++++--- po/pl.po | 29 +++++--- po/pt_BR.po | 28 +++++--- po/ru.po | 28 +++++--- po/tr.po | 16 +++-- po/weechat.pot | 16 +++-- src/core/wee-command.c | 9 ++- src/core/wee-config.c | 48 ++++++++++--- src/core/wee-config.h | 2 +- src/gui/gui-buffer.c | 47 ++++++++++--- src/gui/gui-buffer.h | 2 +- src/gui/gui-filter.c | 85 ++++++++++++------------ src/gui/gui-filter.h | 2 +- src/gui/gui-line.c | 68 ++++++++++++++----- src/gui/gui-line.h | 3 +- 40 files changed, 528 insertions(+), 255 deletions(-) diff --git a/ChangeLog b/ChangeLog index ec408f430..956e87e3e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -11,6 +11,9 @@ http://weechat.org/files/releasenotes/ReleaseNotes-devel.html[release notes] == Version 0.4.3 (under dev) +* core: use "+" separator to make a logical "and" between tags in command + /filter, option weechat.look.highlight_tags and buffer property + "highlight_tags" * core: rename options save/reset to add/del in command /layout * core: add options weechat.look.buffer_auto_renumber and weechat.look.buffer_position, add option "renumber" in command /buffer, add diff --git a/doc/de/autogen/plugin_api/hdata.txt b/doc/de/autogen/plugin_api/hdata.txt index 38b1de8b9..579619e60 100644 --- a/doc/de/autogen/plugin_api/hdata.txt +++ b/doc/de/autogen/plugin_api/hdata.txt @@ -539,7 +539,7 @@ *** 'highlight_regex_compiled' (pointer) *** 'highlight_tags' (string) *** 'highlight_tags_count' (integer) -*** 'highlight_tags_array' (string, array_size: "highlight_tags_count") +*** 'highlight_tags_array' (pointer, array_size: "highlight_tags_count") *** 'hotlist_max_level_nicks' (hashtable) *** 'keys' (pointer, hdata: "key") *** 'last_key' (pointer, hdata: "key") @@ -659,7 +659,7 @@ *** 'buffers' (pointer) *** 'tags' (string) *** 'tags_count' (integer) -*** 'tags_array' (string, array_size: "tags_count") +*** 'tags_array' (pointer, array_size: "tags_count") *** 'regex' (string) *** 'regex_prefix' (pointer) *** 'regex_message' (pointer) diff --git a/doc/de/autogen/user/weechat_commands.txt b/doc/de/autogen/user/weechat_commands.txt index 89b72fe2c..3ad41f3e4 100644 --- a/doc/de/autogen/user/weechat_commands.txt +++ b/doc/de/autogen/user/weechat_commands.txt @@ -282,48 +282,51 @@ Beispiele: add [,...] del |-all - list: alle Filter auflisten - enable: Filter wird aktiviert (Filter werden standardmäßig aktiviert) -disable: Filter deaktivieren - toggle: Filter de-/aktivieren - name: Name des Filters - add: Filter hinzufügen - del: Filter entfernen - -all: entfernt alle Filter - buffer: durch Kommata getrennte Liste von Buffer in denen der Filter aktiv sein soll: - - ist der vollständige Name eines Buffer inklusive seiner Erweiterung (Beispiel: "irc.freenode.#weechat") - - "*" anwenden auf alle Buffer - - beginnt ein Name mit '!' wird für diesen Buffer kein Filter genutzt - - ein Name darf mit '*' beginnen oder enden um mehrere Buffer auszuwählen - tags: durch Kommata getrennte Liste von Schlagwörtern. Zum Beispiel: "irc_join,irc_part,irc_quit" - regex: regulärer Ausdruck um in einer Zeile zu suchen - - das Präfix (z.B. Nick) wird mittels '\t' von der Nachricht getrennt. Sonderzeichen wie '|' müssen mit einer Escapesequenz : '\|' eingebunden werden) - - wird ein regulärer Ausdruck mit '!' eingeleitet dann wird das übereinstimmende Ergebnis umgekehrt (nutze '\!' um mit '!' zu beginnen) - - es werden zwei reguläre Ausdrücke erstellt: Der erste für den Präfix und der zweite für die eigentliche Nachricht - - reguläre Ausdrücke unterscheiden nicht zwischen Groß- und Kleinschreibung. Um zwischen Groß- und Kleinschreibung zu unterscheiden müssen diese mit "(?-i)" eingeleitet werden. + list: list all filters + enable: enable filters (filters are enabled by default) +disable: disable filters + toggle: toggle filters + name: filter name + add: add a filter + del: delete a filter + -all: delete all filters + buffer: comma separated list of buffers where filter is active: + - this is full name including plugin (example: "irc.freenode.#weechat") + - "*" means all buffers + - a name starting with '!' is excluded + - name can start or end with '*' to match many buffers + tags: comma separated list of tags, for example "irc_join,irc_part,irc_quit" + (it is possible to combine many tags as a logical "and" with separator "+", for example: "nick_toto+irc_action") + regex: regular expression to search in line + - use '\t' to separate prefix from message, special chars like '|' must be escaped: '\|' + - if regex starts with '!', then matching result is reversed (use '\!' to start with '!') + - two regular expressions are created: one for prefix and one for message + - regex are case insensitive, they can start by "(?-i)" to become case sensitive -Die Tastenvoreinstellung alt+'=' schaltet die Filterfunktion an/aus. +The default key alt+'=' toggles filtering on/off. -Die am häufigsten gebrauchten Schlagwörter lauten: - no_filter, no_highlight, no_log, log0..log9 (log Level), +Tags most commonly used: + no_filter, no_highlight, no_log, log0..log9 (log level), notify_none, notify_message, notify_private, notify_highlight, - nick_xxx (xxx ist durch den Nicknamen zu ersetzen), prefix_nick_ccc (ccc ist die Farbe mit der der Nick dargestellt wird), - irc_xxx (xxx ist durch einen IRC-Befehl/-Nummer zu ersetzen, siehe /server raw oder /debug tags) + nick_xxx (xxx is nick in message), prefix_nick_ccc (ccc is color of nick), + irc_xxx (xxx is command name or number, see /server raw or /debug tags), irc_numeric, irc_error, irc_action, irc_ctcp, irc_ctcp_reply, irc_smart_filter, away_info. -Mittels "/debug tags" kann man sich die Tags jeder einzelnen Zeile darstellen zu lassen. +To see tags for lines in buffers: /debug tags -Beispiele: - aktiviert einen einfachen IRC Filter für join/part/quit/nick Nachrichten für alle Buffer: +Examples: + use IRC smart filter on all buffers: /filter add irc_smart * irc_smart_filter * - aktiviert einen einfachen IRC Filter für join/part/quit/nick Nachrichten der für alle Buffer genutzt wird, außer Buffer die "#weechat" im Namen tragen: + use IRC smart filter on all buffers except those with "#weechat" in name: /filter add irc_smart *,!*#weechat* irc_smart_filter * - filtert alle IRC join/part/quit Nachrichten: + filter all IRC join/part/quit messages: /filter add joinquit * irc_join,irc_part,irc_quit * - filtert Nicks wenn diese den Channel betreten oder durch den Befehl "/names" angezeigt werden: + filter nicks displayed when joining channels or with /names: /filter add nicks * irc_366 * - filtert Nick "toto" im IRC Channel #weechat: + filter nick "toto" on IRC channel #weechat: /filter add toto irc.freenode.#weechat nick_toto * - filtert Zeilen die "weechat sucks" im IRC Channel #weechat enthalten: + filter IRC join/action messages from nick "toto": + /filter add toto * nick_toto+irc_join,nick_toto+irc_action * + filter lines containing "weechat sucks" on IRC channel #weechat: /filter add sucks irc.freenode.#weechat * weechat sucks ---- diff --git a/doc/de/autogen/user/weechat_options.txt b/doc/de/autogen/user/weechat_options.txt index a64ef495c..30a388446 100644 --- a/doc/de/autogen/user/weechat_options.txt +++ b/doc/de/autogen/user/weechat_options.txt @@ -544,7 +544,7 @@ ** Werte: beliebige Zeichenkette (Standardwert: `""`) * [[option_weechat.look.highlight_tags]] *weechat.look.highlight_tags* -** Beschreibung: `durch Kommata getrennte Liste der hervorzuhebenden Wörter (Groß-/Kleinschreibung wird nicht beachtet. Beispiele: "irc_notice" für IRC Nachrichten, "nick_flashcode" für Nachrichten vom Nick "FlashCode")` +** Beschreibung: `comma separated list of tags to highlight; case insensitive comparison; each tag can start or end with "*" to match more than one tag; many tags can be separated by "+" to make a logical "and" between tags; examples: "nick_flashcode" for messages from nick "FlashCode", "irc_notice+nick_toto*" for notices from a nick starting with "toto"` ** Typ: Zeichenkette ** Werte: beliebige Zeichenkette (Standardwert: `""`) diff --git a/doc/en/autogen/plugin_api/hdata.txt b/doc/en/autogen/plugin_api/hdata.txt index 54b306489..5b8995aa5 100644 --- a/doc/en/autogen/plugin_api/hdata.txt +++ b/doc/en/autogen/plugin_api/hdata.txt @@ -539,7 +539,7 @@ *** 'highlight_regex_compiled' (pointer) *** 'highlight_tags' (string) *** 'highlight_tags_count' (integer) -*** 'highlight_tags_array' (string, array_size: "highlight_tags_count") +*** 'highlight_tags_array' (pointer, array_size: "highlight_tags_count") *** 'hotlist_max_level_nicks' (hashtable) *** 'keys' (pointer, hdata: "key") *** 'last_key' (pointer, hdata: "key") @@ -659,7 +659,7 @@ *** 'buffers' (pointer) *** 'tags' (string) *** 'tags_count' (integer) -*** 'tags_array' (string, array_size: "tags_count") +*** 'tags_array' (pointer, array_size: "tags_count") *** 'regex' (string) *** 'regex_prefix' (pointer) *** 'regex_message' (pointer) diff --git a/doc/en/autogen/user/weechat_commands.txt b/doc/en/autogen/user/weechat_commands.txt index 3b875e726..eb22bd085 100644 --- a/doc/en/autogen/user/weechat_commands.txt +++ b/doc/en/autogen/user/weechat_commands.txt @@ -295,7 +295,8 @@ disable: disable filters - "*" means all buffers - a name starting with '!' is excluded - name can start or end with '*' to match many buffers - tags: comma separated list of tags, for example: "irc_join,irc_part,irc_quit" + tags: comma separated list of tags, for example "irc_join,irc_part,irc_quit" + (it is possible to combine many tags as a logical "and" with separator "+", for example: "nick_toto+irc_action") regex: regular expression to search in line - use '\t' to separate prefix from message, special chars like '|' must be escaped: '\|' - if regex starts with '!', then matching result is reversed (use '\!' to start with '!') @@ -323,6 +324,8 @@ Examples: /filter add nicks * irc_366 * filter nick "toto" on IRC channel #weechat: /filter add toto irc.freenode.#weechat nick_toto * + filter IRC join/action messages from nick "toto": + /filter add toto * nick_toto+irc_join,nick_toto+irc_action * filter lines containing "weechat sucks" on IRC channel #weechat: /filter add sucks irc.freenode.#weechat * weechat sucks ---- diff --git a/doc/en/autogen/user/weechat_options.txt b/doc/en/autogen/user/weechat_options.txt index c90b4c034..281b436b1 100644 --- a/doc/en/autogen/user/weechat_options.txt +++ b/doc/en/autogen/user/weechat_options.txt @@ -544,7 +544,7 @@ ** values: any string (default value: `""`) * [[option_weechat.look.highlight_tags]] *weechat.look.highlight_tags* -** description: `comma separated list of tags to highlight (case insensitive comparison, examples: "irc_notice" for IRC notices, "nick_flashcode" for messages from nick "FlashCode")` +** description: `comma separated list of tags to highlight; case insensitive comparison; each tag can start or end with "*" to match more than one tag; many tags can be separated by "+" to make a logical "and" between tags; examples: "nick_flashcode" for messages from nick "FlashCode", "irc_notice+nick_toto*" for notices from a nick starting with "toto"` ** type: string ** values: any string (default value: `""`) diff --git a/doc/en/weechat_plugin_api.en.txt b/doc/en/weechat_plugin_api.en.txt index bce66cc4b..d93953b45 100644 --- a/doc/en/weechat_plugin_api.en.txt +++ b/doc/en/weechat_plugin_api.en.txt @@ -10155,6 +10155,8 @@ Arguments: | highlight_tags | comma separated list of tags | Comma separated list of tags to highlight in this buffer + (_WeeChat ≥ 0.4.3_: it is possible to combine many tags as a logical "and" + with separator "+", for example: "nick_toto+irc_action") | hotlist_max_level_nicks | comma separated list of "nick:level" | Comma separated list of nicks with max level for hotlist on this buffer diff --git a/doc/fr/autogen/plugin_api/hdata.txt b/doc/fr/autogen/plugin_api/hdata.txt index 648dea204..346260692 100644 --- a/doc/fr/autogen/plugin_api/hdata.txt +++ b/doc/fr/autogen/plugin_api/hdata.txt @@ -539,7 +539,7 @@ *** 'highlight_regex_compiled' (pointer) *** 'highlight_tags' (string) *** 'highlight_tags_count' (integer) -*** 'highlight_tags_array' (string, array_size: "highlight_tags_count") +*** 'highlight_tags_array' (pointer, array_size: "highlight_tags_count") *** 'hotlist_max_level_nicks' (hashtable) *** 'keys' (pointer, hdata: "key") *** 'last_key' (pointer, hdata: "key") @@ -659,7 +659,7 @@ *** 'buffers' (pointer) *** 'tags' (string) *** 'tags_count' (integer) -*** 'tags_array' (string, array_size: "tags_count") +*** 'tags_array' (pointer, array_size: "tags_count") *** 'regex' (string) *** 'regex_prefix' (pointer) *** 'regex_message' (pointer) diff --git a/doc/fr/autogen/user/weechat_commands.txt b/doc/fr/autogen/user/weechat_commands.txt index 2887e5102..0605b21c6 100644 --- a/doc/fr/autogen/user/weechat_commands.txt +++ b/doc/fr/autogen/user/weechat_commands.txt @@ -296,6 +296,7 @@ disable: désactiver les filtres - un nom commençant par '!' est exclu - le nom peut commencer ou se terminer par '*' pour plusieurs tampons tags: liste de tags, séparés par des virgules, par exemple: "irc_join,irc_part,irc_quit" + (il est possible de combiner plusieurs tags sous forme d'un "et" logique avec le séparateur "+", par exemple: "nick_toto+irc_action") regex: expression régulière à rechercher dans la ligne - utiliser '\t' pour séparer le préfixe du message, les caractères spéciaux comme '|' doivent être échappés: '\|' - si l'expression régulière commence par '!' alors le résultat est inversé (utiliser '\!' pour démarrer par '!') @@ -323,6 +324,8 @@ Exemples: /filter add nicks * irc_366 * filtrer le pseudo "toto" sur le canal IRC #weechat: /filter add toto irc.freenode.#weechat nick_toto * + filtrer les messages IRC join/action du pseudo "toto": + /filter add toto * nick_toto+irc_join,nick_toto+irc_action * filtrer les lignes contenant "weechat sucks" sur le canal IRC #weechat: /filter add sucks irc.freenode.#weechat * weechat sucks ---- diff --git a/doc/fr/autogen/user/weechat_options.txt b/doc/fr/autogen/user/weechat_options.txt index 4db2af1fa..1195e9276 100644 --- a/doc/fr/autogen/user/weechat_options.txt +++ b/doc/fr/autogen/user/weechat_options.txt @@ -544,7 +544,7 @@ ** valeurs: toute chaîne (valeur par défaut: `""`) * [[option_weechat.look.highlight_tags]] *weechat.look.highlight_tags* -** description: `liste des tags pour la notification (séparés par des virgules, la comparaison ne tient pas compte de la casse, exemples: "irc_notice" pour les notices IRC, "nick_flashcode" pour les messages du pseudo "FlashCode")` +** description: `liste des tags pour la notification (séparés par des virgules); la comparaison ne tient pas compte de la casse; chaque tag peut commencer ou se terminer par "*" pour correspondre à plus d'un tag; plusieurs tags peuvent être séparés par "+" pour faire un "et" logique entre les tags; exemples: "nick_flashcode" pour les messages du pseudo "FlashCode", "irc_notice+nick_toto*" pour les notices d'un pseudo commençant par "toto"` ** type: chaîne ** valeurs: toute chaîne (valeur par défaut: `""`) diff --git a/doc/fr/weechat_plugin_api.fr.txt b/doc/fr/weechat_plugin_api.fr.txt index 1fa1233b0..f8bb13ca4 100644 --- a/doc/fr/weechat_plugin_api.fr.txt +++ b/doc/fr/weechat_plugin_api.fr.txt @@ -10335,6 +10335,9 @@ Paramètres : | highlight_tags | liste d'étiquettes ("tags") séparées par des virgules | Liste d'étiquettes ("tags") à mettre en valeur pour ce tampon + (_WeeChat ≥ 0.4.3_ : il est possible de combiner plusieurs tags sous forme + d'un "et" logique avec le séparateur "+", par exemple : + "nick_toto+irc_action") | hotlist_max_level_nicks | liste de "pseudo:niveau" séparés par des virgules | Liste de pseudos avec niveau max pour la hotlist sur ce tampon (le niveau peut diff --git a/doc/it/autogen/plugin_api/hdata.txt b/doc/it/autogen/plugin_api/hdata.txt index 0a3f3cbc4..2b62596bc 100644 --- a/doc/it/autogen/plugin_api/hdata.txt +++ b/doc/it/autogen/plugin_api/hdata.txt @@ -539,7 +539,7 @@ *** 'highlight_regex_compiled' (pointer) *** 'highlight_tags' (string) *** 'highlight_tags_count' (integer) -*** 'highlight_tags_array' (string, array_size: "highlight_tags_count") +*** 'highlight_tags_array' (pointer, array_size: "highlight_tags_count") *** 'hotlist_max_level_nicks' (hashtable) *** 'keys' (pointer, hdata: "key") *** 'last_key' (pointer, hdata: "key") @@ -659,7 +659,7 @@ *** 'buffers' (pointer) *** 'tags' (string) *** 'tags_count' (integer) -*** 'tags_array' (string, array_size: "tags_count") +*** 'tags_array' (pointer, array_size: "tags_count") *** 'regex' (string) *** 'regex_prefix' (pointer) *** 'regex_message' (pointer) diff --git a/doc/it/autogen/user/weechat_commands.txt b/doc/it/autogen/user/weechat_commands.txt index dfb647f90..49381a192 100644 --- a/doc/it/autogen/user/weechat_commands.txt +++ b/doc/it/autogen/user/weechat_commands.txt @@ -295,7 +295,8 @@ disable: disable filters - "*" means all buffers - a name starting with '!' is excluded - name can start or end with '*' to match many buffers - tags: comma separated list of tags, for example: "irc_join,irc_part,irc_quit" + tags: comma separated list of tags, for example "irc_join,irc_part,irc_quit" + (it is possible to combine many tags as a logical "and" with separator "+", for example: "nick_toto+irc_action") regex: regular expression to search in line - use '\t' to separate prefix from message, special chars like '|' must be escaped: '\|' - if regex starts with '!', then matching result is reversed (use '\!' to start with '!') @@ -323,6 +324,8 @@ Examples: /filter add nicks * irc_366 * filter nick "toto" on IRC channel #weechat: /filter add toto irc.freenode.#weechat nick_toto * + filter IRC join/action messages from nick "toto": + /filter add toto * nick_toto+irc_join,nick_toto+irc_action * filter lines containing "weechat sucks" on IRC channel #weechat: /filter add sucks irc.freenode.#weechat * weechat sucks ---- diff --git a/doc/it/autogen/user/weechat_options.txt b/doc/it/autogen/user/weechat_options.txt index d63e84b34..d833094dd 100644 --- a/doc/it/autogen/user/weechat_options.txt +++ b/doc/it/autogen/user/weechat_options.txt @@ -544,7 +544,7 @@ ** valori: qualsiasi stringa (valore predefinito: `""`) * [[option_weechat.look.highlight_tags]] *weechat.look.highlight_tags* -** descrizione: `elenco separato da virgole di tag da notificare (confronto non sensibile alle maiuscole, esempi: "irc_notice" per gli annunci IRC, "nick_flashcode" per i messaggi dal nick "FlashCode")` +** descrizione: `comma separated list of tags to highlight; case insensitive comparison; each tag can start or end with "*" to match more than one tag; many tags can be separated by "+" to make a logical "and" between tags; examples: "nick_flashcode" for messages from nick "FlashCode", "irc_notice+nick_toto*" for notices from a nick starting with "toto"` ** tipo: stringa ** valori: qualsiasi stringa (valore predefinito: `""`) diff --git a/doc/it/weechat_plugin_api.it.txt b/doc/it/weechat_plugin_api.it.txt index 23d90ac9f..0005870fa 100644 --- a/doc/it/weechat_plugin_api.it.txt +++ b/doc/it/weechat_plugin_api.it.txt @@ -10322,8 +10322,11 @@ Argomenti: | highlight_regex | qualsiasi stringa | Espressione regolare per l'evento +// TRANSLATION MISSING | highlight_tags | elenco separato da virgole di tag | Elenco separato da virgole di tag da evidenziare in questo buffer + (_WeeChat ≥ 0.4.3_: it is possible to combine many tags as a logical "and" + with separator "+", for example: "nick_toto+irc_action") | hotlist_max_level_nicks | elenco separado da virgole di "nick:livello" | Elenco separato da virgole di nick con il livello massimo per la hotlist diff --git a/doc/ja/autogen/plugin_api/hdata.txt b/doc/ja/autogen/plugin_api/hdata.txt index 1847d0511..37e41f79b 100644 --- a/doc/ja/autogen/plugin_api/hdata.txt +++ b/doc/ja/autogen/plugin_api/hdata.txt @@ -539,7 +539,7 @@ *** 'highlight_regex_compiled' (pointer) *** 'highlight_tags' (string) *** 'highlight_tags_count' (integer) -*** 'highlight_tags_array' (string, array_size: "highlight_tags_count") +*** 'highlight_tags_array' (pointer, array_size: "highlight_tags_count") *** 'hotlist_max_level_nicks' (hashtable) *** 'keys' (pointer, hdata: "key") *** 'last_key' (pointer, hdata: "key") @@ -659,7 +659,7 @@ *** 'buffers' (pointer) *** 'tags' (string) *** 'tags_count' (integer) -*** 'tags_array' (string, array_size: "tags_count") +*** 'tags_array' (pointer, array_size: "tags_count") *** 'regex' (string) *** 'regex_prefix' (pointer) *** 'regex_message' (pointer) diff --git a/doc/ja/autogen/user/weechat_commands.txt b/doc/ja/autogen/user/weechat_commands.txt index 4ac89ec87..9bbf7adee 100644 --- a/doc/ja/autogen/user/weechat_commands.txt +++ b/doc/ja/autogen/user/weechat_commands.txt @@ -282,48 +282,51 @@ Examples: add [,...] del |-all - list: 全てのフィルタをリストアップ - enable: フィルタを有効化 (フィルタはデフォルトで有効になっています) -disable: フィルタを無効化 - toggle: フィルタの有効無効を切り替え - name: フィルタの名前 - add: フィルタを追加 - del: フィルタを削除 - -all: 全てのフィルタを削除 - buffer: フィルタが有効化されているバッファのコンマ区切りリスト: - - これはプラグイン名を含む完全な名前です (例えば: "irc.freenode.#weechat") - - "*" は全てのバッファを意味します - - 名前が '!' から始まるものは除外されます - - 多くのバッファにマッチさせるためには名前を '*' から始めるか終わらせてください - tags: タグのコンマ区切りリスト、例えば: "irc_join,irc_part,irc_quit" - regex: 行単位検索の正規表現 - - '\t' を使うと、プレフィックスをメッセージから分離できます。'|' 等の特別な文字は '\|' のようにエスケープしなければいけません - - 正規表現の最初に '!' が含まれる場合は、マッチ結果が反転されます (最初の '!' にマッチさせたければ、'\!' を使ってください) - - 2 種類の正規表現があります: 一方はプレフィックス用、他方はメッセージ用 - - 正規表現は大文字小文字を区別しません、"(?-i)" から始まる場合は区別します + list: list all filters + enable: enable filters (filters are enabled by default) +disable: disable filters + toggle: toggle filters + name: filter name + add: add a filter + del: delete a filter + -all: delete all filters + buffer: comma separated list of buffers where filter is active: + - this is full name including plugin (example: "irc.freenode.#weechat") + - "*" means all buffers + - a name starting with '!' is excluded + - name can start or end with '*' to match many buffers + tags: comma separated list of tags, for example "irc_join,irc_part,irc_quit" + (it is possible to combine many tags as a logical "and" with separator "+", for example: "nick_toto+irc_action") + regex: regular expression to search in line + - use '\t' to separate prefix from message, special chars like '|' must be escaped: '\|' + - if regex starts with '!', then matching result is reversed (use '\!' to start with '!') + - two regular expressions are created: one for prefix and one for message + - regex are case insensitive, they can start by "(?-i)" to become case sensitive -デフォルトではキー alt+'=' でフィルタリングの on/off を切り替えられます。 +The default key alt+'=' toggles filtering on/off. -よく使われるタグ: +Tags most commonly used: no_filter, no_highlight, no_log, log0..log9 (log level), notify_none, notify_message, notify_private, notify_highlight, - nick_xxx (xxx はメッセージのニックネーム), prefix_nick_ccc (ccc はニックネームの色) - irc_xxx (xxx はコマンド名又は番号、/server raw または /debug tags で確認), + nick_xxx (xxx is nick in message), prefix_nick_ccc (ccc is color of nick), + irc_xxx (xxx is command name or number, see /server raw or /debug tags), irc_numeric, irc_error, irc_action, irc_ctcp, irc_ctcp_reply, irc_smart_filter, away_info. -バッファ内でタグを見るには: /debug tags +To see tags for lines in buffers: /debug tags -例: - 全てのバッファで IRC スマートフィルタを使用: +Examples: + use IRC smart filter on all buffers: /filter add irc_smart * irc_smart_filter * - 名前に "#weechat" を含むバッファを除いた全てのバッファで IRC スマートフィルタを使用: + use IRC smart filter on all buffers except those with "#weechat" in name: /filter add irc_smart *,!*#weechat* irc_smart_filter * - 全ての IRC join/part/quit メッセージをフィルタ: + filter all IRC join/part/quit messages: /filter add joinquit * irc_join,irc_part,irc_quit * - チャンネルに入った時や /names で表示されるニックネームをフィルタ: + filter nicks displayed when joining channels or with /names: /filter add nicks * irc_366 * - IRC チャンネル #weechat で "toto" を含むニックネームをフィルタ: + filter nick "toto" on IRC channel #weechat: /filter add toto irc.freenode.#weechat nick_toto * - IRC チャンネル #weechat で "weechat sucks" を含む行をフィルタ: + filter IRC join/action messages from nick "toto": + /filter add toto * nick_toto+irc_join,nick_toto+irc_action * + filter lines containing "weechat sucks" on IRC channel #weechat: /filter add sucks irc.freenode.#weechat * weechat sucks ---- diff --git a/doc/ja/autogen/user/weechat_options.txt b/doc/ja/autogen/user/weechat_options.txt index f53a1ff11..2b44fae53 100644 --- a/doc/ja/autogen/user/weechat_options.txt +++ b/doc/ja/autogen/user/weechat_options.txt @@ -544,7 +544,7 @@ ** 値: 未制約文字列 (デフォルト値: `""`) * [[option_weechat.look.highlight_tags]] *weechat.look.highlight_tags* -** 説明: `ハイライトするタグのコンマ区切りリスト (大文字小文字の区別無し、例: IRC notices には "irc_notice"、ニックネーム "FlashCode" からのメッセージには "nick_flashcode")` +** 説明: `comma separated list of tags to highlight; case insensitive comparison; each tag can start or end with "*" to match more than one tag; many tags can be separated by "+" to make a logical "and" between tags; examples: "nick_flashcode" for messages from nick "FlashCode", "irc_notice+nick_toto*" for notices from a nick starting with "toto"` ** タイプ: 文字列 ** 値: 未制約文字列 (デフォルト値: `""`) diff --git a/po/cs.po b/po/cs.po index 3bbd4c5a8..3eed065b6 100644 --- a/po/cs.po +++ b/po/cs.po @@ -20,7 +20,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2013-12-13 12:43+0100\n" +"POT-Creation-Date: 2013-12-14 10:20+0100\n" "PO-Revision-Date: 2013-11-09 10:18+0100\n" "Last-Translator: Jiri Golembiovsky \n" "Language-Team: weechat-dev \n" @@ -1389,8 +1389,10 @@ msgid "" " - \"*\" means all buffers\n" " - a name starting with '!' is excluded\n" " - name can start or end with '*' to match many buffers\n" -" tags: comma separated list of tags, for example: \"irc_join,irc_part," +" tags: comma separated list of tags, for example \"irc_join,irc_part," "irc_quit\"\n" +" (it is possible to combine many tags as a logical \"and\" with " +"separator \"+\", for example: \"nick_toto+irc_action\")\n" " regex: regular expression to search in line\n" " - use '\\t' to separate prefix from message, special chars like '|' " "must be escaped: '\\|'\n" @@ -1425,6 +1427,8 @@ msgid "" " /filter add nicks * irc_366 *\n" " filter nick \"toto\" on IRC channel #weechat:\n" " /filter add toto irc.freenode.#weechat nick_toto *\n" +" filter IRC join/action messages from nick \"toto\":\n" +" /filter add toto * nick_toto+irc_join,nick_toto+irc_action *\n" " filter lines containing \"weechat sucks\" on IRC channel #weechat:\n" " /filter add sucks irc.freenode.#weechat * weechat sucks" msgstr "" @@ -2746,13 +2750,12 @@ msgstr "" "písmena, například: \"FlashCode|flashy\"" msgid "" -"comma separated list of tags to highlight (case insensitive comparison, " -"examples: \"irc_notice\" for IRC notices, \"nick_flashcode\" for messages " -"from nick \"FlashCode\")" +"comma separated list of tags to highlight; case insensitive comparison; each " +"tag can start or end with \"*\" to match more than one tag; many tags can be " +"separated by \"+\" to make a logical \"and\" between tags; examples: " +"\"nick_flashcode\" for messages from nick \"FlashCode\", \"irc_notice" +"+nick_toto*\" for notices from a nick starting with \"toto\"" msgstr "" -"čárkou oddělený seznam značek pro zvýraznění (neporovnává se velikost " -"písmen, příklady: \"irc_notice\" pro IRC notifikace, \"nick_flashcode\" pro " -"zprávy od přezdívky \"FlashCode\")" msgid "" "add any buffer to hotlist (including current or visible buffers) if local " @@ -9943,6 +9946,15 @@ msgstr "" msgid "Constants" msgstr "" +#~ msgid "" +#~ "comma separated list of tags to highlight (case insensitive comparison, " +#~ "examples: \"irc_notice\" for IRC notices, \"nick_flashcode\" for messages " +#~ "from nick \"FlashCode\")" +#~ msgstr "" +#~ "čárkou oddělený seznam značek pro zvýraznění (neporovnává se velikost " +#~ "písmen, příklady: \"irc_notice\" pro IRC notifikace, \"nick_flashcode\" " +#~ "pro zprávy od přezdívky \"FlashCode\")" + #, fuzzy #~ msgid "manage layouts for buffers and windows" #~ msgstr "uložit/použít/resetovat rozložení bufferů a oken" diff --git a/po/de.po b/po/de.po index a655e8c9b..e68413318 100644 --- a/po/de.po +++ b/po/de.po @@ -22,7 +22,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.4.3-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2013-12-13 12:43+0100\n" +"POT-Creation-Date: 2013-12-14 10:20+0100\n" "PO-Revision-Date: 2013-11-20 15:12+0100\n" "Last-Translator: Nils Görs \n" "Language-Team: German \n" @@ -1492,6 +1492,7 @@ msgstr "" "list || enable|disable|toggle [] || add [,...] " " || del |-all" +#, fuzzy msgid "" " list: list all filters\n" " enable: enable filters (filters are enabled by default)\n" @@ -1507,8 +1508,10 @@ msgid "" " - \"*\" means all buffers\n" " - a name starting with '!' is excluded\n" " - name can start or end with '*' to match many buffers\n" -" tags: comma separated list of tags, for example: \"irc_join,irc_part," +" tags: comma separated list of tags, for example \"irc_join,irc_part," "irc_quit\"\n" +" (it is possible to combine many tags as a logical \"and\" with " +"separator \"+\", for example: \"nick_toto+irc_action\")\n" " regex: regular expression to search in line\n" " - use '\\t' to separate prefix from message, special chars like '|' " "must be escaped: '\\|'\n" @@ -1543,6 +1546,8 @@ msgid "" " /filter add nicks * irc_366 *\n" " filter nick \"toto\" on IRC channel #weechat:\n" " /filter add toto irc.freenode.#weechat nick_toto *\n" +" filter IRC join/action messages from nick \"toto\":\n" +" /filter add toto * nick_toto+irc_join,nick_toto+irc_action *\n" " filter lines containing \"weechat sucks\" on IRC channel #weechat:\n" " /filter add sucks irc.freenode.#weechat * weechat sucks" msgstr "" @@ -3152,13 +3157,12 @@ msgstr "" "\"flashcode|flashy\", \"(?-i)FlashCode|flashy\"" msgid "" -"comma separated list of tags to highlight (case insensitive comparison, " -"examples: \"irc_notice\" for IRC notices, \"nick_flashcode\" for messages " -"from nick \"FlashCode\")" +"comma separated list of tags to highlight; case insensitive comparison; each " +"tag can start or end with \"*\" to match more than one tag; many tags can be " +"separated by \"+\" to make a logical \"and\" between tags; examples: " +"\"nick_flashcode\" for messages from nick \"FlashCode\", \"irc_notice" +"+nick_toto*\" for notices from a nick starting with \"toto\"" msgstr "" -"durch Kommata getrennte Liste der hervorzuhebenden Wörter (Groß-/" -"Kleinschreibung wird nicht beachtet. Beispiele: \"irc_notice\" für IRC " -"Nachrichten, \"nick_flashcode\" für Nachrichten vom Nick \"FlashCode\")" msgid "" "add any buffer to hotlist (including current or visible buffers) if local " @@ -10996,6 +11000,15 @@ msgstr "Type" msgid "Constants" msgstr "Konstanten" +#~ msgid "" +#~ "comma separated list of tags to highlight (case insensitive comparison, " +#~ "examples: \"irc_notice\" for IRC notices, \"nick_flashcode\" for messages " +#~ "from nick \"FlashCode\")" +#~ msgstr "" +#~ "durch Kommata getrennte Liste der hervorzuhebenden Wörter (Groß-/" +#~ "Kleinschreibung wird nicht beachtet. Beispiele: \"irc_notice\" für IRC " +#~ "Nachrichten, \"nick_flashcode\" für Nachrichten vom Nick \"FlashCode\")" + #, fuzzy #~ msgid "manage layouts for buffers and windows" #~ msgstr "Layout für Buffer und Fenster speichern, anwenden oder zurücksetzen" diff --git a/po/es.po b/po/es.po index dd2fa8cab..54ea402f8 100644 --- a/po/es.po +++ b/po/es.po @@ -22,7 +22,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2013-12-13 12:43+0100\n" +"POT-Creation-Date: 2013-12-14 10:20+0100\n" "PO-Revision-Date: 2013-11-09 10:18+0100\n" "Last-Translator: Elián Hanisch \n" "Language-Team: weechat-dev \n" @@ -1428,8 +1428,10 @@ msgid "" " - \"*\" means all buffers\n" " - a name starting with '!' is excluded\n" " - name can start or end with '*' to match many buffers\n" -" tags: comma separated list of tags, for example: \"irc_join,irc_part," +" tags: comma separated list of tags, for example \"irc_join,irc_part," "irc_quit\"\n" +" (it is possible to combine many tags as a logical \"and\" with " +"separator \"+\", for example: \"nick_toto+irc_action\")\n" " regex: regular expression to search in line\n" " - use '\\t' to separate prefix from message, special chars like '|' " "must be escaped: '\\|'\n" @@ -1464,6 +1466,8 @@ msgid "" " /filter add nicks * irc_366 *\n" " filter nick \"toto\" on IRC channel #weechat:\n" " /filter add toto irc.freenode.#weechat nick_toto *\n" +" filter IRC join/action messages from nick \"toto\":\n" +" /filter add toto * nick_toto+irc_join,nick_toto+irc_action *\n" " filter lines containing \"weechat sucks\" on IRC channel #weechat:\n" " /filter add sucks irc.freenode.#weechat * weechat sucks" msgstr "" @@ -2904,13 +2908,12 @@ msgstr "" "\"FlashCode|flashy\", \"(?-i)Flascode|flashy\"" msgid "" -"comma separated list of tags to highlight (case insensitive comparison, " -"examples: \"irc_notice\" for IRC notices, \"nick_flashcode\" for messages " -"from nick \"FlashCode\")" +"comma separated list of tags to highlight; case insensitive comparison; each " +"tag can start or end with \"*\" to match more than one tag; many tags can be " +"separated by \"+\" to make a logical \"and\" between tags; examples: " +"\"nick_flashcode\" for messages from nick \"FlashCode\", \"irc_notice" +"+nick_toto*\" for notices from a nick starting with \"toto\"" msgstr "" -"lista separada por comas de palabras a resaltar (comparación insensible a " -"mayúsculas, ejemplos: \"irc_notice\" para avisos IRC, \"nick_flashcode\" " -"para mensajes del apodo \"FlashCode\")" msgid "" "add any buffer to hotlist (including current or visible buffers) if local " @@ -10205,6 +10208,15 @@ msgstr "Tipo" msgid "Constants" msgstr "Constantes" +#~ msgid "" +#~ "comma separated list of tags to highlight (case insensitive comparison, " +#~ "examples: \"irc_notice\" for IRC notices, \"nick_flashcode\" for messages " +#~ "from nick \"FlashCode\")" +#~ msgstr "" +#~ "lista separada por comas de palabras a resaltar (comparación insensible a " +#~ "mayúsculas, ejemplos: \"irc_notice\" para avisos IRC, \"nick_flashcode\" " +#~ "para mensajes del apodo \"FlashCode\")" + #, fuzzy #~ msgid "manage layouts for buffers and windows" #~ msgstr "guardar/aplicar/reiniciar el esquema de las ventanas y buffers" diff --git a/po/fr.po b/po/fr.po index a5333230e..1968b5233 100644 --- a/po/fr.po +++ b/po/fr.po @@ -21,8 +21,8 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2013-12-13 12:43+0100\n" -"PO-Revision-Date: 2013-12-13 12:44+0100\n" +"POT-Creation-Date: 2013-12-14 10:20+0100\n" +"PO-Revision-Date: 2013-12-14 10:23+0100\n" "Last-Translator: Sebastien Helleu \n" "Language-Team: weechat-dev \n" "Language: fr\n" @@ -1491,8 +1491,10 @@ msgid "" " - \"*\" means all buffers\n" " - a name starting with '!' is excluded\n" " - name can start or end with '*' to match many buffers\n" -" tags: comma separated list of tags, for example: \"irc_join,irc_part," +" tags: comma separated list of tags, for example \"irc_join,irc_part," "irc_quit\"\n" +" (it is possible to combine many tags as a logical \"and\" with " +"separator \"+\", for example: \"nick_toto+irc_action\")\n" " regex: regular expression to search in line\n" " - use '\\t' to separate prefix from message, special chars like '|' " "must be escaped: '\\|'\n" @@ -1527,6 +1529,8 @@ msgid "" " /filter add nicks * irc_366 *\n" " filter nick \"toto\" on IRC channel #weechat:\n" " /filter add toto irc.freenode.#weechat nick_toto *\n" +" filter IRC join/action messages from nick \"toto\":\n" +" /filter add toto * nick_toto+irc_join,nick_toto+irc_action *\n" " filter lines containing \"weechat sucks\" on IRC channel #weechat:\n" " /filter add sucks irc.freenode.#weechat * weechat sucks" msgstr "" @@ -1548,6 +1552,8 @@ msgstr "" "tampons\n" " tags: liste de tags, séparés par des virgules, par exemple: \"irc_join," "irc_part,irc_quit\"\n" +" (il est possible de combiner plusieurs tags sous forme d'un \"et\" " +"logique avec le séparateur \"+\", par exemple: \"nick_toto+irc_action\")\n" " regex: expression régulière à rechercher dans la ligne\n" " - utiliser '\\t' pour séparer le préfixe du message, les caractères " "spéciaux comme '|' doivent être échappés: '\\|'\n" @@ -1583,6 +1589,8 @@ msgstr "" " /filter add nicks * irc_366 *\n" " filtrer le pseudo \"toto\" sur le canal IRC #weechat:\n" " /filter add toto irc.freenode.#weechat nick_toto *\n" +" filtrer les messages IRC join/action du pseudo \"toto\":\n" +" /filter add toto * nick_toto+irc_join,nick_toto+irc_action *\n" " filtrer les lignes contenant \"weechat sucks\" sur le canal IRC #weechat:\n" " /filter add sucks irc.freenode.#weechat * weechat sucks" @@ -3071,14 +3079,19 @@ msgstr "" "i)FlashCode|flashy\"" msgid "" -"comma separated list of tags to highlight (case insensitive comparison, " -"examples: \"irc_notice\" for IRC notices, \"nick_flashcode\" for messages " -"from nick \"FlashCode\")" +"comma separated list of tags to highlight; case insensitive comparison; each " +"tag can start or end with \"*\" to match more than one tag; many tags can be " +"separated by \"+\" to make a logical \"and\" between tags; examples: " +"\"nick_flashcode\" for messages from nick \"FlashCode\", \"irc_notice" +"+nick_toto*\" for notices from a nick starting with \"toto\"" msgstr "" -"liste des tags pour la notification (séparés par des virgules, la " -"comparaison ne tient pas compte de la casse, exemples: \"irc_notice\" pour " -"les notices IRC, \"nick_flashcode\" pour les messages du pseudo \"FlashCode" -"\")" +"liste des tags pour la notification (séparés par des virgules); la " +"comparaison ne tient pas compte de la casse; chaque tag peut commencer ou se " +"terminer par \"*\" pour correspondre à plus d'un tag; plusieurs tags peuvent " +"être séparés par \"+\" pour faire un \"et\" logique entre les tags; " +"exemples: \"nick_flashcode\" pour les messages du pseudo \"FlashCode\", " +"\"irc_notice+nick_toto*\" pour les notices d'un pseudo commençant par \"toto" +"\"" msgid "" "add any buffer to hotlist (including current or visible buffers) if local " @@ -10743,6 +10756,16 @@ msgstr "Type" msgid "Constants" msgstr "Constantes" +#~ msgid "" +#~ "comma separated list of tags to highlight (case insensitive comparison, " +#~ "examples: \"irc_notice\" for IRC notices, \"nick_flashcode\" for messages " +#~ "from nick \"FlashCode\")" +#~ msgstr "" +#~ "liste des tags pour la notification (séparés par des virgules, la " +#~ "comparaison ne tient pas compte de la casse, exemples: \"irc_notice\" " +#~ "pour les notices IRC, \"nick_flashcode\" pour les messages du pseudo " +#~ "\"FlashCode\")" + #~ msgid "manage layouts for buffers and windows" #~ msgstr "gérer les dispositions des tampons et fenêtres" diff --git a/po/hu.po b/po/hu.po index 71be6e8bf..019a99a96 100644 --- a/po/hu.po +++ b/po/hu.po @@ -20,7 +20,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2013-12-13 12:43+0100\n" +"POT-Creation-Date: 2013-12-14 10:20+0100\n" "PO-Revision-Date: 2013-11-09 10:18+0100\n" "Last-Translator: Andras Voroskoi \n" "Language-Team: weechat-dev \n" @@ -1313,8 +1313,10 @@ msgid "" " - \"*\" means all buffers\n" " - a name starting with '!' is excluded\n" " - name can start or end with '*' to match many buffers\n" -" tags: comma separated list of tags, for example: \"irc_join,irc_part," +" tags: comma separated list of tags, for example \"irc_join,irc_part," "irc_quit\"\n" +" (it is possible to combine many tags as a logical \"and\" with " +"separator \"+\", for example: \"nick_toto+irc_action\")\n" " regex: regular expression to search in line\n" " - use '\\t' to separate prefix from message, special chars like '|' " "must be escaped: '\\|'\n" @@ -1349,6 +1351,8 @@ msgid "" " /filter add nicks * irc_366 *\n" " filter nick \"toto\" on IRC channel #weechat:\n" " /filter add toto irc.freenode.#weechat nick_toto *\n" +" filter IRC join/action messages from nick \"toto\":\n" +" /filter add toto * nick_toto+irc_join,nick_toto+irc_action *\n" " filter lines containing \"weechat sucks\" on IRC channel #weechat:\n" " /filter add sucks irc.freenode.#weechat * weechat sucks" msgstr "" @@ -2387,14 +2391,13 @@ msgid "" "i)FlashCode|flashy\"" msgstr "" -#, fuzzy msgid "" -"comma separated list of tags to highlight (case insensitive comparison, " -"examples: \"irc_notice\" for IRC notices, \"nick_flashcode\" for messages " -"from nick \"FlashCode\")" +"comma separated list of tags to highlight; case insensitive comparison; each " +"tag can start or end with \"*\" to match more than one tag; many tags can be " +"separated by \"+\" to make a logical \"and\" between tags; examples: " +"\"nick_flashcode\" for messages from nick \"FlashCode\", \"irc_notice" +"+nick_toto*\" for notices from a nick starting with \"toto\"" msgstr "" -"kiemelendő szavak vesszővel elválasztott listája (kis/nagybetűtől független " -"összehasonlítás, a szavak végére/elejére \"*\"-ot illesztve részleges keresés" msgid "" "add any buffer to hotlist (including current or visible buffers) if local " @@ -9364,3 +9367,13 @@ msgstr "" msgid "Constants" msgstr "" + +#, fuzzy +#~ msgid "" +#~ "comma separated list of tags to highlight (case insensitive comparison, " +#~ "examples: \"irc_notice\" for IRC notices, \"nick_flashcode\" for messages " +#~ "from nick \"FlashCode\")" +#~ msgstr "" +#~ "kiemelendő szavak vesszővel elválasztott listája (kis/nagybetűtől " +#~ "független összehasonlítás, a szavak végére/elejére \"*\"-ot illesztve " +#~ "részleges keresés" diff --git a/po/it.po b/po/it.po index b94b52c01..d33c9f299 100644 --- a/po/it.po +++ b/po/it.po @@ -20,7 +20,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2013-12-13 12:43+0100\n" +"POT-Creation-Date: 2013-12-14 10:20+0100\n" "PO-Revision-Date: 2013-11-09 10:18+0100\n" "Last-Translator: Esteban I. Ruiz Moreno \n" "Language-Team: weechat-dev \n" @@ -1462,8 +1462,10 @@ msgid "" " - \"*\" means all buffers\n" " - a name starting with '!' is excluded\n" " - name can start or end with '*' to match many buffers\n" -" tags: comma separated list of tags, for example: \"irc_join,irc_part," +" tags: comma separated list of tags, for example \"irc_join,irc_part," "irc_quit\"\n" +" (it is possible to combine many tags as a logical \"and\" with " +"separator \"+\", for example: \"nick_toto+irc_action\")\n" " regex: regular expression to search in line\n" " - use '\\t' to separate prefix from message, special chars like '|' " "must be escaped: '\\|'\n" @@ -1498,6 +1500,8 @@ msgid "" " /filter add nicks * irc_366 *\n" " filter nick \"toto\" on IRC channel #weechat:\n" " /filter add toto irc.freenode.#weechat nick_toto *\n" +" filter IRC join/action messages from nick \"toto\":\n" +" /filter add toto * nick_toto+irc_join,nick_toto+irc_action *\n" " filter lines containing \"weechat sucks\" on IRC channel #weechat:\n" " /filter add sucks irc.freenode.#weechat * weechat sucks" msgstr "" @@ -2993,13 +2997,12 @@ msgstr "" "i)Flashcode|flashy\"" msgid "" -"comma separated list of tags to highlight (case insensitive comparison, " -"examples: \"irc_notice\" for IRC notices, \"nick_flashcode\" for messages " -"from nick \"FlashCode\")" +"comma separated list of tags to highlight; case insensitive comparison; each " +"tag can start or end with \"*\" to match more than one tag; many tags can be " +"separated by \"+\" to make a logical \"and\" between tags; examples: " +"\"nick_flashcode\" for messages from nick \"FlashCode\", \"irc_notice" +"+nick_toto*\" for notices from a nick starting with \"toto\"" msgstr "" -"elenco separato da virgole di tag da notificare (confronto non sensibile " -"alle maiuscole, esempi: \"irc_notice\" per gli annunci IRC, \"nick_flashcode" -"\" per i messaggi dal nick \"FlashCode\")" msgid "" "add any buffer to hotlist (including current or visible buffers) if local " @@ -10353,6 +10356,15 @@ msgstr "Tipo" msgid "Constants" msgstr "Costanti" +#~ msgid "" +#~ "comma separated list of tags to highlight (case insensitive comparison, " +#~ "examples: \"irc_notice\" for IRC notices, \"nick_flashcode\" for messages " +#~ "from nick \"FlashCode\")" +#~ msgstr "" +#~ "elenco separato da virgole di tag da notificare (confronto non sensibile " +#~ "alle maiuscole, esempi: \"irc_notice\" per gli annunci IRC, " +#~ "\"nick_flashcode\" per i messaggi dal nick \"FlashCode\")" + #, fuzzy #~ msgid "manage layouts for buffers and windows" #~ msgstr "salva/applica/ripristina il layout per i buffer e le finestre" diff --git a/po/ja.po b/po/ja.po index 3163a5338..89ddd2262 100644 --- a/po/ja.po +++ b/po/ja.po @@ -20,7 +20,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2013-12-13 12:43+0100\n" +"POT-Creation-Date: 2013-12-14 10:20+0100\n" "PO-Revision-Date: 2013-11-09 10:18+0100\n" "Last-Translator: AYANOKOUZI, Ryuunosuke \n" "Language-Team: Japanese \n" @@ -1431,6 +1431,7 @@ msgstr "" "list || enable|disable|toggle [] || add [,...] " " || del |-all" +#, fuzzy msgid "" " list: list all filters\n" " enable: enable filters (filters are enabled by default)\n" @@ -1446,8 +1447,10 @@ msgid "" " - \"*\" means all buffers\n" " - a name starting with '!' is excluded\n" " - name can start or end with '*' to match many buffers\n" -" tags: comma separated list of tags, for example: \"irc_join,irc_part," +" tags: comma separated list of tags, for example \"irc_join,irc_part," "irc_quit\"\n" +" (it is possible to combine many tags as a logical \"and\" with " +"separator \"+\", for example: \"nick_toto+irc_action\")\n" " regex: regular expression to search in line\n" " - use '\\t' to separate prefix from message, special chars like '|' " "must be escaped: '\\|'\n" @@ -1482,6 +1485,8 @@ msgid "" " /filter add nicks * irc_366 *\n" " filter nick \"toto\" on IRC channel #weechat:\n" " /filter add toto irc.freenode.#weechat nick_toto *\n" +" filter IRC join/action messages from nick \"toto\":\n" +" /filter add toto * nick_toto+irc_join,nick_toto+irc_action *\n" " filter lines containing \"weechat sucks\" on IRC channel #weechat:\n" " /filter add sucks irc.freenode.#weechat * weechat sucks" msgstr "" @@ -2967,13 +2972,12 @@ msgstr "" "i)FlashCode|flashy\"" msgid "" -"comma separated list of tags to highlight (case insensitive comparison, " -"examples: \"irc_notice\" for IRC notices, \"nick_flashcode\" for messages " -"from nick \"FlashCode\")" +"comma separated list of tags to highlight; case insensitive comparison; each " +"tag can start or end with \"*\" to match more than one tag; many tags can be " +"separated by \"+\" to make a logical \"and\" between tags; examples: " +"\"nick_flashcode\" for messages from nick \"FlashCode\", \"irc_notice" +"+nick_toto*\" for notices from a nick starting with \"toto\"" msgstr "" -"ハイライトするタグのコンマ区切りリスト (大文字小文字の区別無し、例: IRC " -"notices には \"irc_notice\"、ニックネーム \"FlashCode\" からのメッセージには " -"\"nick_flashcode\")" msgid "" "add any buffer to hotlist (including current or visible buffers) if local " @@ -10328,6 +10332,15 @@ msgstr "タイプ" msgid "Constants" msgstr "定数" +#~ msgid "" +#~ "comma separated list of tags to highlight (case insensitive comparison, " +#~ "examples: \"irc_notice\" for IRC notices, \"nick_flashcode\" for messages " +#~ "from nick \"FlashCode\")" +#~ msgstr "" +#~ "ハイライトするタグのコンマ区切りリスト (大文字小文字の区別無し、例: IRC " +#~ "notices には \"irc_notice\"、ニックネーム \"FlashCode\" からのメッセージに" +#~ "は \"nick_flashcode\")" + #, fuzzy #~ msgid "manage layouts for buffers and windows" #~ msgstr "バッファとウィンドウのレイアウトを保存/適用/リセット" diff --git a/po/pl.po b/po/pl.po index 34ba02d0b..ffb14fa79 100644 --- a/po/pl.po +++ b/po/pl.po @@ -21,7 +21,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2013-12-13 12:43+0100\n" +"POT-Creation-Date: 2013-12-14 10:20+0100\n" "PO-Revision-Date: 2013-11-11 09:07+0100\n" "Last-Translator: Krzysztof Korościk \n" "Language-Team: weechat-dev \n" @@ -1468,6 +1468,7 @@ msgstr "" "list || enable|disable|toggle [] || add [,...] " " || del |-all" +#, fuzzy msgid "" " list: list all filters\n" " enable: enable filters (filters are enabled by default)\n" @@ -1483,8 +1484,10 @@ msgid "" " - \"*\" means all buffers\n" " - a name starting with '!' is excluded\n" " - name can start or end with '*' to match many buffers\n" -" tags: comma separated list of tags, for example: \"irc_join,irc_part," +" tags: comma separated list of tags, for example \"irc_join,irc_part," "irc_quit\"\n" +" (it is possible to combine many tags as a logical \"and\" with " +"separator \"+\", for example: \"nick_toto+irc_action\")\n" " regex: regular expression to search in line\n" " - use '\\t' to separate prefix from message, special chars like '|' " "must be escaped: '\\|'\n" @@ -1519,6 +1522,8 @@ msgid "" " /filter add nicks * irc_366 *\n" " filter nick \"toto\" on IRC channel #weechat:\n" " /filter add toto irc.freenode.#weechat nick_toto *\n" +" filter IRC join/action messages from nick \"toto\":\n" +" /filter add toto * nick_toto+irc_join,nick_toto+irc_action *\n" " filter lines containing \"weechat sucks\" on IRC channel #weechat:\n" " /filter add sucks irc.freenode.#weechat * weechat sucks" msgstr "" @@ -3039,13 +3044,12 @@ msgstr "" "znaczenie), przykłady: \"flashcode|flashy\", \"(?-i)FlashCode|flashy\"" msgid "" -"comma separated list of tags to highlight (case insensitive comparison, " -"examples: \"irc_notice\" for IRC notices, \"nick_flashcode\" for messages " -"from nick \"FlashCode\")" +"comma separated list of tags to highlight; case insensitive comparison; each " +"tag can start or end with \"*\" to match more than one tag; many tags can be " +"separated by \"+\" to make a logical \"and\" between tags; examples: " +"\"nick_flashcode\" for messages from nick \"FlashCode\", \"irc_notice" +"+nick_toto*\" for notices from a nick starting with \"toto\"" msgstr "" -"lista tagów do podświetlania oddzielona przecinkami (porównanie wrażliwe na " -"wielkość znaków, przykłady: \"irc_notice\" dla powiadomień IRC, " -"\"nick_flashcode\" dla wiadomości od nicka \"FlashCode\")" msgid "" "add any buffer to hotlist (including current or visible buffers) if local " @@ -10528,6 +10532,15 @@ msgstr "Typ" msgid "Constants" msgstr "Stałe" +#~ msgid "" +#~ "comma separated list of tags to highlight (case insensitive comparison, " +#~ "examples: \"irc_notice\" for IRC notices, \"nick_flashcode\" for messages " +#~ "from nick \"FlashCode\")" +#~ msgstr "" +#~ "lista tagów do podświetlania oddzielona przecinkami (porównanie wrażliwe " +#~ "na wielkość znaków, przykłady: \"irc_notice\" dla powiadomień IRC, " +#~ "\"nick_flashcode\" dla wiadomości od nicka \"FlashCode\")" + #, fuzzy #~ msgid "manage layouts for buffers and windows" #~ msgstr "zapisz/zatwierdź/zresetuj układ buforów i okien" diff --git a/po/pt_BR.po b/po/pt_BR.po index 7849d45d5..45a9e7921 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -21,7 +21,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2013-12-13 12:43+0100\n" +"POT-Creation-Date: 2013-12-14 10:20+0100\n" "PO-Revision-Date: 2013-11-09 10:18+0100\n" "Last-Translator: Sergio Durigan Junior \n" "Language-Team: weechat-dev \n" @@ -1442,8 +1442,10 @@ msgid "" " - \"*\" means all buffers\n" " - a name starting with '!' is excluded\n" " - name can start or end with '*' to match many buffers\n" -" tags: comma separated list of tags, for example: \"irc_join,irc_part," +" tags: comma separated list of tags, for example \"irc_join,irc_part," "irc_quit\"\n" +" (it is possible to combine many tags as a logical \"and\" with " +"separator \"+\", for example: \"nick_toto+irc_action\")\n" " regex: regular expression to search in line\n" " - use '\\t' to separate prefix from message, special chars like '|' " "must be escaped: '\\|'\n" @@ -1478,6 +1480,8 @@ msgid "" " /filter add nicks * irc_366 *\n" " filter nick \"toto\" on IRC channel #weechat:\n" " /filter add toto irc.freenode.#weechat nick_toto *\n" +" filter IRC join/action messages from nick \"toto\":\n" +" /filter add toto * nick_toto+irc_join,nick_toto+irc_action *\n" " filter lines containing \"weechat sucks\" on IRC channel #weechat:\n" " /filter add sucks irc.freenode.#weechat * weechat sucks" msgstr "" @@ -2830,13 +2834,12 @@ msgstr "" "em conta maiúscula/minúscula, exemplo: \"FlashCode|flashy\"" msgid "" -"comma separated list of tags to highlight (case insensitive comparison, " -"examples: \"irc_notice\" for IRC notices, \"nick_flashcode\" for messages " -"from nick \"FlashCode\")" +"comma separated list of tags to highlight; case insensitive comparison; each " +"tag can start or end with \"*\" to match more than one tag; many tags can be " +"separated by \"+\" to make a logical \"and\" between tags; examples: " +"\"nick_flashcode\" for messages from nick \"FlashCode\", \"irc_notice" +"+nick_toto*\" for notices from a nick starting with \"toto\"" msgstr "" -"lista de marcações separada por vírgulas a serem destacadas (comparação sem " -"levar em conta maiúscula/minúscula, exemplos: \"irc_notice\" for IRC " -"notices, \"nick_flashcode\" para mensagens do apelido \"FlashCode\")" msgid "" "add any buffer to hotlist (including current or visible buffers) if local " @@ -9573,6 +9576,15 @@ msgstr "" msgid "Constants" msgstr "" +#~ msgid "" +#~ "comma separated list of tags to highlight (case insensitive comparison, " +#~ "examples: \"irc_notice\" for IRC notices, \"nick_flashcode\" for messages " +#~ "from nick \"FlashCode\")" +#~ msgstr "" +#~ "lista de marcações separada por vírgulas a serem destacadas (comparação " +#~ "sem levar em conta maiúscula/minúscula, exemplos: \"irc_notice\" for IRC " +#~ "notices, \"nick_flashcode\" para mensagens do apelido \"FlashCode\")" + #, fuzzy #~ msgid "manage layouts for buffers and windows" #~ msgstr "salvar/aplicar/resetar a disposição dos buffers e janelas" diff --git a/po/ru.po b/po/ru.po index 67711292e..08c87d6ea 100644 --- a/po/ru.po +++ b/po/ru.po @@ -21,7 +21,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2013-12-13 12:43+0100\n" +"POT-Creation-Date: 2013-12-14 10:20+0100\n" "PO-Revision-Date: 2013-11-09 10:18+0100\n" "Last-Translator: Aleksey V Zapparov AKA ixti \n" "Language-Team: weechat-dev \n" @@ -1335,8 +1335,10 @@ msgid "" " - \"*\" means all buffers\n" " - a name starting with '!' is excluded\n" " - name can start or end with '*' to match many buffers\n" -" tags: comma separated list of tags, for example: \"irc_join,irc_part," +" tags: comma separated list of tags, for example \"irc_join,irc_part," "irc_quit\"\n" +" (it is possible to combine many tags as a logical \"and\" with " +"separator \"+\", for example: \"nick_toto+irc_action\")\n" " regex: regular expression to search in line\n" " - use '\\t' to separate prefix from message, special chars like '|' " "must be escaped: '\\|'\n" @@ -1371,6 +1373,8 @@ msgid "" " /filter add nicks * irc_366 *\n" " filter nick \"toto\" on IRC channel #weechat:\n" " /filter add toto irc.freenode.#weechat nick_toto *\n" +" filter IRC join/action messages from nick \"toto\":\n" +" /filter add toto * nick_toto+irc_join,nick_toto+irc_action *\n" " filter lines containing \"weechat sucks\" on IRC channel #weechat:\n" " /filter add sucks irc.freenode.#weechat * weechat sucks" msgstr "" @@ -2410,14 +2414,13 @@ msgid "" "i)FlashCode|flashy\"" msgstr "" -#, fuzzy msgid "" -"comma separated list of tags to highlight (case insensitive comparison, " -"examples: \"irc_notice\" for IRC notices, \"nick_flashcode\" for messages " -"from nick \"FlashCode\")" +"comma separated list of tags to highlight; case insensitive comparison; each " +"tag can start or end with \"*\" to match more than one tag; many tags can be " +"separated by \"+\" to make a logical \"and\" between tags; examples: " +"\"nick_flashcode\" for messages from nick \"FlashCode\", \"irc_notice" +"+nick_toto*\" for notices from a nick starting with \"toto\"" msgstr "" -"разделённый запятыми список подсвечиваемых слов (регистр учитывается, слова " -"могут начинаться или кончаться \"*\" для неполного соответствия)" msgid "" "add any buffer to hotlist (including current or visible buffers) if local " @@ -9385,3 +9388,12 @@ msgstr "" msgid "Constants" msgstr "" + +#, fuzzy +#~ msgid "" +#~ "comma separated list of tags to highlight (case insensitive comparison, " +#~ "examples: \"irc_notice\" for IRC notices, \"nick_flashcode\" for messages " +#~ "from nick \"FlashCode\")" +#~ msgstr "" +#~ "разделённый запятыми список подсвечиваемых слов (регистр учитывается, " +#~ "слова могут начинаться или кончаться \"*\" для неполного соответствия)" diff --git a/po/tr.po b/po/tr.po index bc440c883..5e7f7f608 100644 --- a/po/tr.po +++ b/po/tr.po @@ -20,7 +20,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2013-12-13 12:43+0100\n" +"POT-Creation-Date: 2013-12-14 10:20+0100\n" "PO-Revision-Date: 2013-11-09 10:13+0100\n" "Last-Translator: Hasan Kiran \n" "Language-Team: weechat-dev \n" @@ -1177,8 +1177,10 @@ msgid "" " - \"*\" means all buffers\n" " - a name starting with '!' is excluded\n" " - name can start or end with '*' to match many buffers\n" -" tags: comma separated list of tags, for example: \"irc_join,irc_part," +" tags: comma separated list of tags, for example \"irc_join,irc_part," "irc_quit\"\n" +" (it is possible to combine many tags as a logical \"and\" with " +"separator \"+\", for example: \"nick_toto+irc_action\")\n" " regex: regular expression to search in line\n" " - use '\\t' to separate prefix from message, special chars like '|' " "must be escaped: '\\|'\n" @@ -1213,6 +1215,8 @@ msgid "" " /filter add nicks * irc_366 *\n" " filter nick \"toto\" on IRC channel #weechat:\n" " /filter add toto irc.freenode.#weechat nick_toto *\n" +" filter IRC join/action messages from nick \"toto\":\n" +" /filter add toto * nick_toto+irc_join,nick_toto+irc_action *\n" " filter lines containing \"weechat sucks\" on IRC channel #weechat:\n" " /filter add sucks irc.freenode.#weechat * weechat sucks" msgstr "" @@ -2145,9 +2149,11 @@ msgid "" msgstr "" msgid "" -"comma separated list of tags to highlight (case insensitive comparison, " -"examples: \"irc_notice\" for IRC notices, \"nick_flashcode\" for messages " -"from nick \"FlashCode\")" +"comma separated list of tags to highlight; case insensitive comparison; each " +"tag can start or end with \"*\" to match more than one tag; many tags can be " +"separated by \"+\" to make a logical \"and\" between tags; examples: " +"\"nick_flashcode\" for messages from nick \"FlashCode\", \"irc_notice" +"+nick_toto*\" for notices from a nick starting with \"toto\"" msgstr "" msgid "" diff --git a/po/weechat.pot b/po/weechat.pot index 67a2f68cb..82f00d4d1 100644 --- a/po/weechat.pot +++ b/po/weechat.pot @@ -21,7 +21,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.4.1-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2013-12-13 12:43+0100\n" +"POT-Creation-Date: 2013-12-14 10:20+0100\n" "PO-Revision-Date: 2013-02-14 18:20+0100\n" "Last-Translator: FULL NAME \n" "Language-Team: weechat-dev \n" @@ -1183,8 +1183,10 @@ msgid "" " - \"*\" means all buffers\n" " - a name starting with '!' is excluded\n" " - name can start or end with '*' to match many buffers\n" -" tags: comma separated list of tags, for example: \"irc_join,irc_part," +" tags: comma separated list of tags, for example \"irc_join,irc_part," "irc_quit\"\n" +" (it is possible to combine many tags as a logical \"and\" with " +"separator \"+\", for example: \"nick_toto+irc_action\")\n" " regex: regular expression to search in line\n" " - use '\\t' to separate prefix from message, special chars like '|' " "must be escaped: '\\|'\n" @@ -1219,6 +1221,8 @@ msgid "" " /filter add nicks * irc_366 *\n" " filter nick \"toto\" on IRC channel #weechat:\n" " /filter add toto irc.freenode.#weechat nick_toto *\n" +" filter IRC join/action messages from nick \"toto\":\n" +" /filter add toto * nick_toto+irc_join,nick_toto+irc_action *\n" " filter lines containing \"weechat sucks\" on IRC channel #weechat:\n" " /filter add sucks irc.freenode.#weechat * weechat sucks" msgstr "" @@ -2148,9 +2152,11 @@ msgid "" msgstr "" msgid "" -"comma separated list of tags to highlight (case insensitive comparison, " -"examples: \"irc_notice\" for IRC notices, \"nick_flashcode\" for messages " -"from nick \"FlashCode\")" +"comma separated list of tags to highlight; case insensitive comparison; each " +"tag can start or end with \"*\" to match more than one tag; many tags can be " +"separated by \"+\" to make a logical \"and\" between tags; examples: " +"\"nick_flashcode\" for messages from nick \"FlashCode\", \"irc_notice" +"+nick_toto*\" for notices from a nick starting with \"toto\"" msgstr "" msgid "" diff --git a/src/core/wee-command.c b/src/core/wee-command.c index e7342ff47..5c1956bed 100644 --- a/src/core/wee-command.c +++ b/src/core/wee-command.c @@ -6589,8 +6589,11 @@ command_init () " - a name starting with '!' is excluded\n" " - name can start or end with '*' to " "match many buffers\n" - " tags: comma separated list of tags, for " - "example: \"irc_join,irc_part,irc_quit\"\n" + " tags: comma separated list of tags, for example " + "\"irc_join,irc_part,irc_quit\"\n" + " (it is possible to combine many tags as a logical " + "\"and\" with separator \"+\", for example: " + "\"nick_toto+irc_action\")\n" " regex: regular expression to search in line\n" " - use '\\t' to separate prefix from message, special " "chars like '|' must be escaped: '\\|'\n" @@ -6624,6 +6627,8 @@ command_init () " /filter add nicks * irc_366 *\n" " filter nick \"toto\" on IRC channel #weechat:\n" " /filter add toto irc.freenode.#weechat nick_toto *\n" + " filter IRC join/action messages from nick \"toto\":\n" + " /filter add toto * nick_toto+irc_join,nick_toto+irc_action *\n" " filter lines containing \"weechat sucks\" on IRC " "channel #weechat:\n" " /filter add sucks irc.freenode.#weechat * weechat sucks"), diff --git a/src/core/wee-config.c b/src/core/wee-config.c index 06632699d..698bee162 100644 --- a/src/core/wee-config.c +++ b/src/core/wee-config.c @@ -276,7 +276,7 @@ struct t_hook *config_day_change_timer = NULL; int config_day_change_old_day = -1; int config_emphasized_attributes = 0; regex_t *config_highlight_regex = NULL; -char **config_highlight_tags = NULL; +char ***config_highlight_tags = NULL; int config_num_highlight_tags = 0; char **config_plugin_extensions = NULL; int config_num_plugin_extensions = 0; @@ -584,13 +584,20 @@ config_change_highlight_regex (void *data, struct t_config_option *option) void config_change_highlight_tags (void *data, struct t_config_option *option) { + int i; + char **tags_array; + /* make C compiler happy */ (void) data; (void) option; if (config_highlight_tags) { - string_free_split (config_highlight_tags); + for (i = 0; i < config_num_highlight_tags; i++) + { + string_free_split (config_highlight_tags[i]); + } + free (config_highlight_tags); config_highlight_tags = NULL; } config_num_highlight_tags = 0; @@ -598,8 +605,22 @@ config_change_highlight_tags (void *data, struct t_config_option *option) if (CONFIG_STRING(config_look_highlight_tags) && CONFIG_STRING(config_look_highlight_tags)[0]) { - config_highlight_tags = string_split (CONFIG_STRING(config_look_highlight_tags), - ",", 0, 0, &config_num_highlight_tags); + tags_array = string_split (CONFIG_STRING(config_look_highlight_tags), + ",", 0, 0, &config_num_highlight_tags); + if (tags_array) + { + config_highlight_tags = malloc (config_num_highlight_tags * + sizeof (*config_highlight_tags)); + if (config_highlight_tags) + { + for (i = 0; i < config_num_highlight_tags; i++) + { + config_highlight_tags[i] = string_split (tags_array[i], + "+", 0, 0, NULL); + } + } + string_free_split (tags_array); + } } } @@ -2194,9 +2215,12 @@ config_weechat_init_options () config_look_highlight_tags = config_file_new_option ( weechat_config_file, ptr_section, "highlight_tags", "string", - N_("comma separated list of tags to highlight (case insensitive " - "comparison, examples: \"irc_notice\" for IRC notices, " - "\"nick_flashcode\" for messages from nick \"FlashCode\")"), + N_("comma separated list of tags to highlight; case insensitive " + "comparison; each tag can start or end with \"*\" to match more " + "than one tag; many tags can be separated by \"+\" to make a " + "logical \"and\" between tags; examples: \"nick_flashcode\" for " + "messages from nick \"FlashCode\", \"irc_notice+nick_toto*\" for " + "notices from a nick starting with \"toto\""), NULL, 0, 0, "", NULL, 0, NULL, NULL, &config_change_highlight_tags, NULL, NULL, NULL); config_look_hotlist_add_buffer_if_away = config_file_new_option ( weechat_config_file, ptr_section, @@ -3388,6 +3412,8 @@ config_weechat_write () void config_weechat_free () { + int i; + config_file_free (weechat_config_file); if (config_highlight_regex) @@ -3399,10 +3425,14 @@ config_weechat_free () if (config_highlight_tags) { - string_free_split (config_highlight_tags); + for (i = 0; i < config_num_highlight_tags; i++) + { + string_free_split (config_highlight_tags[i]); + } + free (config_highlight_tags); config_highlight_tags = NULL; - config_num_highlight_tags = 0; } + config_num_highlight_tags = 0; if (config_plugin_extensions) { diff --git a/src/core/wee-config.h b/src/core/wee-config.h index cefed77ee..9f1374978 100644 --- a/src/core/wee-config.h +++ b/src/core/wee-config.h @@ -292,7 +292,7 @@ extern int config_length_nick_prefix_suffix; extern int config_length_prefix_same_nick; extern int config_emphasized_attributes; extern regex_t *config_highlight_regex; -extern char **config_highlight_tags; +extern char ***config_highlight_tags; extern int config_num_highlight_tags; extern char **config_plugin_extensions; extern int config_num_plugin_extensions; diff --git a/src/gui/gui-buffer.c b/src/gui/gui-buffer.c index 7379685c7..c9e33e88e 100644 --- a/src/gui/gui-buffer.c +++ b/src/gui/gui-buffer.c @@ -1413,6 +1413,9 @@ void gui_buffer_set_highlight_tags (struct t_gui_buffer *buffer, const char *new_highlight_tags) { + int i; + char **tags_array; + if (buffer->highlight_tags) { free (buffer->highlight_tags); @@ -1420,20 +1423,38 @@ gui_buffer_set_highlight_tags (struct t_gui_buffer *buffer, } if (buffer->highlight_tags_array) { - string_free_split (buffer->highlight_tags_array); + for (i = 0; i < buffer->highlight_tags_count; i++) + { + string_free_split (buffer->highlight_tags_array[i]); + } + free (buffer->highlight_tags_array); buffer->highlight_tags_array = NULL; } buffer->highlight_tags_count = 0; - if (new_highlight_tags) + if (!new_highlight_tags) + return; + + buffer->highlight_tags = strdup (new_highlight_tags); + if (!buffer->highlight_tags) + return; + + tags_array = string_split (buffer->highlight_tags, ",", 0, 0, + &buffer->highlight_tags_count); + if (tags_array) { - buffer->highlight_tags = strdup (new_highlight_tags); - if (buffer->highlight_tags) + buffer->highlight_tags_array = malloc (buffer->highlight_tags_count * + sizeof (*buffer->highlight_tags_array)); + if (buffer->highlight_tags_array) { - buffer->highlight_tags_array = string_split (new_highlight_tags, - ",", 0, 0, - &buffer->highlight_tags_count); + for (i = 0; i < buffer->highlight_tags_count; i++) + { + buffer->highlight_tags_array[i] = string_split (tags_array[i], + "+", 0, 0, + NULL); + } } + string_free_split (tags_array); } } @@ -2317,7 +2338,7 @@ gui_buffer_close (struct t_gui_buffer *buffer) struct t_gui_window *ptr_window; struct t_gui_buffer *ptr_buffer, *ptr_back_to_buffer; struct t_gui_buffer *ptr_buffer_visited_buffer; - int index; + int index, i; struct t_gui_buffer_visited *ptr_buffer_visited; hook_signal_send ("buffer_closing", @@ -2468,7 +2489,13 @@ gui_buffer_close (struct t_gui_buffer *buffer) if (buffer->highlight_tags) free (buffer->highlight_tags); if (buffer->highlight_tags_array) - string_free_split (buffer->highlight_tags_array); + { + for (i = 0; i < buffer->highlight_tags_count; i++) + { + string_free_split (buffer->highlight_tags_array[i]); + } + free (buffer->highlight_tags_array); + } /* remove buffer from buffers list */ if (buffer->prev_buffer) @@ -3668,7 +3695,7 @@ gui_buffer_hdata_buffer_cb (void *data, const char *hdata_name) HDATA_VAR(struct t_gui_buffer, highlight_regex_compiled, POINTER, 0, NULL, NULL); HDATA_VAR(struct t_gui_buffer, highlight_tags, STRING, 0, NULL, NULL); HDATA_VAR(struct t_gui_buffer, highlight_tags_count, INTEGER, 0, NULL, NULL); - HDATA_VAR(struct t_gui_buffer, highlight_tags_array, STRING, 0, "highlight_tags_count", NULL); + HDATA_VAR(struct t_gui_buffer, highlight_tags_array, POINTER, 0, "highlight_tags_count", NULL); HDATA_VAR(struct t_gui_buffer, hotlist_max_level_nicks, HASHTABLE, 0, NULL, NULL); HDATA_VAR(struct t_gui_buffer, keys, POINTER, 0, NULL, "key"); HDATA_VAR(struct t_gui_buffer, last_key, POINTER, 0, NULL, "key"); diff --git a/src/gui/gui-buffer.h b/src/gui/gui-buffer.h index a370abb90..70ca1696b 100644 --- a/src/gui/gui-buffer.h +++ b/src/gui/gui-buffer.h @@ -180,7 +180,7 @@ struct t_gui_buffer char *highlight_tags; /* tags to highlight */ int highlight_tags_count; /* number of tags to highlight */ /* (if 0, any tag is highlighted) */ - char **highlight_tags_array; /* tags to highlight */ + char ***highlight_tags_array; /* tags to highlight */ /* hotlist settings for buffer */ struct t_hashtable *hotlist_max_level_nicks; /* max hotlist level for */ diff --git a/src/gui/gui-filter.c b/src/gui/gui-filter.c index c4ee81de7..f912369d9 100644 --- a/src/gui/gui-filter.c +++ b/src/gui/gui-filter.c @@ -47,30 +47,6 @@ struct t_gui_filter *last_gui_filter = NULL; /* last filter */ int gui_filters_enabled = 1; /* filters enabled? */ -/* - * Checks if a line has tag "no_filter" (which means that line should never been - * filtered: it is always displayed). - * - * Returns: - * 1: line has tag "no_filter" - * 0: line does not have tag "no_filter" - */ - -int -gui_filter_line_has_tag_no_filter (struct t_gui_line_data *line_data) -{ - int i; - - for (i = 0; i < line_data->tags_count; i++) - { - if (strcmp (line_data->tags_array[i], GUI_FILTER_TAG_NO_FILTER) == 0) - return 1; - } - - /* tag not found, line may be filtered */ - return 0; -} - /* * Checks if a line must be displayed or not (filtered). * @@ -89,7 +65,7 @@ gui_filter_check_line (struct t_gui_line_data *line_data) if (!gui_filters_enabled) return 1; - if (gui_filter_line_has_tag_no_filter (line_data)) + if (gui_line_has_tag_no_filter (line_data)) return 1; for (ptr_filter = gui_filters; ptr_filter; @@ -289,8 +265,9 @@ gui_filter_new (int enabled, const char *name, const char *buffer_name, { struct t_gui_filter *new_filter; regex_t *regex1, *regex2; - char *pos_tab, *regex_prefix; + char *pos_tab, *regex_prefix, **tags_array; const char *ptr_start_regex, *pos_regex_message; + int i; if (!name || !buffer_name || !tags || !regex) return NULL; @@ -367,17 +344,25 @@ gui_filter_new (int enabled, const char *name, const char *buffer_name, new_filter->buffers = string_split (new_filter->buffer_name, ",", 0, 0, &new_filter->num_buffers); - if (tags) + new_filter->tags = (tags) ? strdup (tags) : NULL; + new_filter->tags_count = 0; + new_filter->tags_array = NULL; + if (new_filter->tags) { - new_filter->tags = (tags) ? strdup (tags) : NULL; - new_filter->tags_array = string_split (tags, ",", 0, 0, - &new_filter->tags_count); - } - else - { - new_filter->tags = NULL; - new_filter->tags_count = 0; - new_filter->tags_array = NULL; + tags_array = string_split (new_filter->tags, ",", 0, 0, + &new_filter->tags_count); + if (tags_array) + { + new_filter->tags_array = malloc (new_filter->tags_count * + sizeof (*new_filter->tags_array)); + for (i = 0; i < new_filter->tags_count; i++) + { + new_filter->tags_array[i] = string_split (tags_array[i], + "+", 0, 0, + NULL); + } + string_free_split (tags_array); + } } new_filter->regex = strdup (regex); new_filter->regex_prefix = regex1; @@ -429,6 +414,8 @@ gui_filter_rename (struct t_gui_filter *filter, const char *new_name) void gui_filter_free (struct t_gui_filter *filter) { + int i; + hook_signal_send ("filter_removing", WEECHAT_HOOK_SIGNAL_POINTER, filter); @@ -442,7 +429,13 @@ gui_filter_free (struct t_gui_filter *filter) if (filter->tags) free (filter->tags); if (filter->tags_array) - string_free_split (filter->tags_array); + { + for (i = 0; i < filter->tags_count; i++) + { + string_free_split (filter->tags_array[i]); + } + free (filter->tags_array); + } if (filter->regex) free (filter->regex); if (filter->regex_prefix) @@ -507,7 +500,7 @@ gui_filter_hdata_filter_cb (void *data, const char *hdata_name) HDATA_VAR(struct t_gui_filter, buffers, POINTER, 0, NULL, NULL); HDATA_VAR(struct t_gui_filter, tags, STRING, 0, NULL, NULL); HDATA_VAR(struct t_gui_filter, tags_count, INTEGER, 0, NULL, NULL); - HDATA_VAR(struct t_gui_filter, tags_array, STRING, 0, "tags_count", NULL); + HDATA_VAR(struct t_gui_filter, tags_array, POINTER, 0, "tags_count", NULL); HDATA_VAR(struct t_gui_filter, regex, STRING, 0, NULL, NULL); HDATA_VAR(struct t_gui_filter, regex_prefix, POINTER, 0, NULL, NULL); HDATA_VAR(struct t_gui_filter, regex_message, POINTER, 0, NULL, NULL); @@ -532,7 +525,7 @@ gui_filter_add_to_infolist (struct t_infolist *infolist, struct t_gui_filter *filter) { struct t_infolist_item *ptr_item; - char option_name[64]; + char option_name[64], *tags; int i; if (!infolist || !filter) @@ -555,9 +548,17 @@ gui_filter_add_to_infolist (struct t_infolist *infolist, for (i = 0; i < filter->tags_count; i++) { snprintf (option_name, sizeof (option_name), "tag_%05d", i + 1); - if (!infolist_new_var_string (ptr_item, option_name, - filter->tags_array[i])) - return 0; + tags = string_build_with_split_string ((const char **)filter->tags_array[i], + "+"); + if (tags) + { + if (!infolist_new_var_string (ptr_item, option_name, tags)) + { + free (tags); + return 0; + } + free (tags); + } } if (!infolist_new_var_string (ptr_item, "regex", filter->regex)) return 0; diff --git a/src/gui/gui-filter.h b/src/gui/gui-filter.h index b89263559..1eb019bac 100644 --- a/src/gui/gui-filter.h +++ b/src/gui/gui-filter.h @@ -37,7 +37,7 @@ struct t_gui_filter char **buffers; /* list of buffer names */ char *tags; /* tags */ int tags_count; /* number of tags */ - char **tags_array; /* array of tags */ + char ***tags_array; /* array of tags */ char *regex; /* regex */ regex_t *regex_prefix; /* regex for line prefix */ regex_t *regex_message; /* regex for line message */ diff --git a/src/gui/gui-line.c b/src/gui/gui-line.c index 4136c3d3b..f6e4d863f 100644 --- a/src/gui/gui-line.c +++ b/src/gui/gui-line.c @@ -561,6 +561,30 @@ gui_line_match_regex (struct t_gui_line_data *line_data, regex_t *regex_prefix, return (match_prefix && match_message); } +/* + * Checks if a line has tag "no_filter" (which means that line should never been + * filtered: it is always displayed). + * + * Returns: + * 1: line has tag "no_filter" + * 0: line does not have tag "no_filter" + */ + +int +gui_line_has_tag_no_filter (struct t_gui_line_data *line_data) +{ + int i; + + for (i = 0; i < line_data->tags_count; i++) + { + if (strcmp (line_data->tags_array[i], GUI_FILTER_TAG_NO_FILTER) == 0) + return 1; + } + + /* tag not found, line may be filtered */ + return 0; +} + /* * Checks if line matches tags. * @@ -571,9 +595,9 @@ gui_line_match_regex (struct t_gui_line_data *line_data, regex_t *regex_prefix, int gui_line_match_tags (struct t_gui_line_data *line_data, - int tags_count, char **tags_array) + int tags_count, char ***tags_array) { - int i, j; + int i, j, k, match, tag_found; if (!line_data) return 0; @@ -583,14 +607,28 @@ gui_line_match_tags (struct t_gui_line_data *line_data, for (i = 0; i < tags_count; i++) { - for (j = 0; j < line_data->tags_count; j++) + match = 1; + for (j = 0; tags_array[i][j]; j++) { - /* check tag */ - if (string_match (line_data->tags_array[j], - tags_array[i], - 0)) - return 1; + tag_found = 0; + for (k = 0; k < line_data->tags_count; k++) + { + if (string_match (line_data->tags_array[k], + tags_array[i][j], + 0)) + { + tag_found = 1; + break; + } + } + if (!tag_found) + { + match = 0; + break; + } } + if (match) + return 1; } return 0; @@ -648,7 +686,7 @@ gui_line_get_nick_tag (struct t_gui_line *line) int gui_line_has_highlight (struct t_gui_line *line) { - int rc, i, j, no_highlight, action, length; + int rc, i, no_highlight, action, length; char *msg_no_color, *ptr_msg_no_color, *highlight_words; const char *ptr_nick; @@ -671,14 +709,12 @@ gui_line_has_highlight (struct t_gui_line *line) ptr_nick = NULL; for (i = 0; i < line->data->tags_count; i++) { - if (config_highlight_tags) + if (config_highlight_tags + && gui_line_match_tags (line->data, + config_num_highlight_tags, + config_highlight_tags)) { - for (j = 0; j < config_num_highlight_tags; j++) - { - if (string_strcasecmp (line->data->tags_array[i], - config_highlight_tags[j]) == 0) - return 1; - } + return 1; } if (strcmp (line->data->tags_array[i], GUI_CHAT_TAG_NO_HIGHLIGHT) == 0) no_highlight = 1; diff --git a/src/gui/gui-line.h b/src/gui/gui-line.h index 7004b6353..a53f6e9e5 100644 --- a/src/gui/gui-line.h +++ b/src/gui/gui-line.h @@ -85,8 +85,9 @@ extern int gui_line_search_text (struct t_gui_buffer *buffer, extern int gui_line_match_regex (struct t_gui_line_data *line_data, regex_t *regex_prefix, regex_t *regex_message); +extern int gui_line_has_tag_no_filter (struct t_gui_line_data *line_data); extern int gui_line_match_tags (struct t_gui_line_data *line_data, - int tags_count, char **tags_array); + int tags_count, char ***tags_array); extern const char *gui_line_search_tag_starting_with (struct t_gui_line *line, const char *tag); extern const char *gui_line_get_nick_tag (struct t_gui_line *line);