summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--doc/de/autogen/plugin_api/hdata.txt3
-rw-r--r--doc/de/autogen/user/irc_options.txt4
-rw-r--r--doc/en/autogen/plugin_api/hdata.txt3
-rw-r--r--doc/en/autogen/user/irc_options.txt4
-rw-r--r--doc/en/weechat_plugin_api.en.txt14
-rw-r--r--doc/fr/autogen/plugin_api/hdata.txt3
-rw-r--r--doc/fr/autogen/user/irc_options.txt4
-rw-r--r--doc/fr/weechat_plugin_api.fr.txt16
-rw-r--r--doc/it/autogen/plugin_api/hdata.txt3
-rw-r--r--doc/it/autogen/user/irc_options.txt4
-rw-r--r--doc/it/weechat_plugin_api.it.txt19
-rw-r--r--doc/ja/autogen/plugin_api/hdata.txt3
-rw-r--r--doc/ja/autogen/user/irc_options.txt4
-rw-r--r--po/cs.po19
-rw-r--r--po/de.po20
-rw-r--r--po/es.po20
-rw-r--r--po/fr.po28
-rw-r--r--po/hu.po9
-rw-r--r--po/it.po20
-rw-r--r--po/ja.po18
-rw-r--r--po/pl.po20
-rw-r--r--po/pt_BR.po9
-rw-r--r--po/ru.po9
-rw-r--r--po/tr.po9
-rw-r--r--po/weechat.pot9
-rw-r--r--src/core/wee-infolist.c23
-rw-r--r--src/core/wee-infolist.h2
-rw-r--r--src/core/wee-upgrade.c19
-rw-r--r--src/gui/gui-buffer.c102
-rw-r--r--src/gui/gui-buffer.h14
-rw-r--r--src/gui/gui-line.c44
-rw-r--r--src/plugins/irc/irc-channel.c8
-rw-r--r--src/plugins/irc/irc-config.c33
-rw-r--r--src/plugins/irc/irc-config.h2
-rw-r--r--src/plugins/irc/irc-server.c8
36 files changed, 397 insertions, 135 deletions
diff --git a/ChangeLog b/ChangeLog
index 956e87e3e..841bf94f7 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: rename buffer property "highlight_tags" to "highlight_tags_restrict",
+ new behavior for buffer property "highlight_tags" (force highlight on tags),
+ rename option irc.look.highlight_tags to irc.look.highlight_tags_restrict
* core: use "+" separator to make a logical "and" between tags in command
/filter, option weechat.look.highlight_tags and buffer property
"highlight_tags"
diff --git a/doc/de/autogen/plugin_api/hdata.txt b/doc/de/autogen/plugin_api/hdata.txt
index 579619e60..1e078985a 100644
--- a/doc/de/autogen/plugin_api/hdata.txt
+++ b/doc/de/autogen/plugin_api/hdata.txt
@@ -537,6 +537,9 @@
*** 'highlight_words' (string)
*** 'highlight_regex' (string)
*** 'highlight_regex_compiled' (pointer)
+*** 'highlight_tags_restrict' (string)
+*** 'highlight_tags_restrict_count' (integer)
+*** 'highlight_tags_restrict_array' (pointer, array_size: "highlight_tags_restrict_count")
*** 'highlight_tags' (string)
*** 'highlight_tags_count' (integer)
*** 'highlight_tags_array' (pointer, array_size: "highlight_tags_count")
diff --git a/doc/de/autogen/user/irc_options.txt b/doc/de/autogen/user/irc_options.txt
index 072af1372..7ade2ce82 100644
--- a/doc/de/autogen/user/irc_options.txt
+++ b/doc/de/autogen/user/irc_options.txt
@@ -168,8 +168,8 @@
** Typ: Zeichenkette
** Werte: beliebige Zeichenkette (Standardwert: `"$nick"`)
-* [[option_irc.look.highlight_tags]] *irc.look.highlight_tags*
-** Beschreibung: `durch Kommata getrennte Liste von Schlagwörtern, welche eine Nachricht hervorheben sollen (Highlight) (normalerweise trifft dies auf jede Nachricht eines Users zu, ausgenommen Nachrichten vom Server,..)`
+* [[option_irc.look.highlight_tags_restrict]] *irc.look.highlight_tags_restrict*
+** Beschreibung: `restrict highlights to these tags on irc buffers (to have highlight on user messages but not server messages); tags must be separated by a comma and "+" can be used to make a logical "and" between tags; tags can start or end with "*" to match more than one tag; an empty value allows highlight on any tag`
** Typ: Zeichenkette
** Werte: beliebige Zeichenkette (Standardwert: `"irc_privmsg,irc_notice"`)
diff --git a/doc/en/autogen/plugin_api/hdata.txt b/doc/en/autogen/plugin_api/hdata.txt
index 5b8995aa5..3cb1ca8c4 100644
--- a/doc/en/autogen/plugin_api/hdata.txt
+++ b/doc/en/autogen/plugin_api/hdata.txt
@@ -537,6 +537,9 @@
*** 'highlight_words' (string)
*** 'highlight_regex' (string)
*** 'highlight_regex_compiled' (pointer)
+*** 'highlight_tags_restrict' (string)
+*** 'highlight_tags_restrict_count' (integer)
+*** 'highlight_tags_restrict_array' (pointer, array_size: "highlight_tags_restrict_count")
*** 'highlight_tags' (string)
*** 'highlight_tags_count' (integer)
*** 'highlight_tags_array' (pointer, array_size: "highlight_tags_count")
diff --git a/doc/en/autogen/user/irc_options.txt b/doc/en/autogen/user/irc_options.txt
index 4f27958cf..1c73e0cd4 100644
--- a/doc/en/autogen/user/irc_options.txt
+++ b/doc/en/autogen/user/irc_options.txt
@@ -168,8 +168,8 @@
** type: string
** values: any string (default value: `"$nick"`)
-* [[option_irc.look.highlight_tags]] *irc.look.highlight_tags*
-** description: `comma separated list of tags for messages that may produce highlight (usually any message from another user, not server messages,..)`
+* [[option_irc.look.highlight_tags_restrict]] *irc.look.highlight_tags_restrict*
+** description: `restrict highlights to these tags on irc buffers (to have highlight on user messages but not server messages); tags must be separated by a comma and "+" can be used to make a logical "and" between tags; tags can start or end with "*" to match more than one tag; an empty value allows highlight on any tag`
** type: string
** values: any string (default value: `"irc_privmsg,irc_notice"`)
diff --git a/doc/en/weechat_plugin_api.en.txt b/doc/en/weechat_plugin_api.en.txt
index d93953b45..07b577f1b 100644
--- a/doc/en/weechat_plugin_api.en.txt
+++ b/doc/en/weechat_plugin_api.en.txt
@@ -9983,7 +9983,8 @@ Arguments:
** 'text_search_input': input saved before text search
** 'highlight_words': list of words to highlight
** 'highlight_regex': regular expression for highlight
-** 'highlight_tags': list of tags to highlight
+** 'highlight_tags_restrict': restrict highlights to messages with these tags
+** 'highlight_tags': force highlight on messages with these tags
** 'hotlist_max_level_nicks': max hotlist level for some nicks
** 'localvar_xxx': get content of local variable "xxx" (replace "xxx" by the
name of variable to read)
@@ -10153,10 +10154,15 @@ Arguments:
| highlight_regex | any string |
Regular expression for highlight
+| highlight_tags_restrict | comma separated list of tags |
+ Restrict highlights to messages with these tags in this buffer
+ (it is possible to combine many tags as a logical "and" with separator "+",
+ for example: "nick_toto+irc_action")
+
| 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")
+ Force highlight on messages with these tags in this buffer
+ (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 346260692..9109636f7 100644
--- a/doc/fr/autogen/plugin_api/hdata.txt
+++ b/doc/fr/autogen/plugin_api/hdata.txt
@@ -537,6 +537,9 @@
*** 'highlight_words' (string)
*** 'highlight_regex' (string)
*** 'highlight_regex_compiled' (pointer)
+*** 'highlight_tags_restrict' (string)
+*** 'highlight_tags_restrict_count' (integer)
+*** 'highlight_tags_restrict_array' (pointer, array_size: "highlight_tags_restrict_count")
*** 'highlight_tags' (string)
*** 'highlight_tags_count' (integer)
*** 'highlight_tags_array' (pointer, array_size: "highlight_tags_count")
diff --git a/doc/fr/autogen/user/irc_options.txt b/doc/fr/autogen/user/irc_options.txt
index ef03c0ac0..261b68b1d 100644
--- a/doc/fr/autogen/user/irc_options.txt
+++ b/doc/fr/autogen/user/irc_options.txt
@@ -168,8 +168,8 @@
** type: chaîne
** valeurs: toute chaîne (valeur par défaut: `"$nick"`)
-* [[option_irc.look.highlight_tags]] *irc.look.highlight_tags*
-** description: `liste des tags pour les messages qui peuvent produire un highlight (séparés par des virgules, typiquement tout message venant d'un autre utilisateur, pas les messages du serveur, ...)`
+* [[option_irc.look.highlight_tags_restrict]] *irc.look.highlight_tags_restrict*
+** description: `restreindre les highlights à ces tags sur les tampons irc (pour avoir un highlight seulement sur les messages utilisateur et pas les messages du serveur); les tags doivent être séparés par des virgules et "+" peut être utilisé pour faire un "et" logique entre tags; les tags peuvent commencer ou se terminer par "*" pour correspondre à plus d'un tag; une valeur vide autorise le highlight sur n'importe quel tag`
** type: chaîne
** valeurs: toute chaîne (valeur par défaut: `"irc_privmsg,irc_notice"`)
diff --git a/doc/fr/weechat_plugin_api.fr.txt b/doc/fr/weechat_plugin_api.fr.txt
index f8bb13ca4..8daa538a4 100644
--- a/doc/fr/weechat_plugin_api.fr.txt
+++ b/doc/fr/weechat_plugin_api.fr.txt
@@ -10154,7 +10154,9 @@ Paramètres :
** 'text_search_input' : texte saisi sauvegardé avant la recherche de texte
** 'highlight_words' : liste des mots pour le highlight
** 'highlight_regex' : expression régulière pour le highlight
-** 'highlight_tags' : liste des étiquettes pour le highlight
+** 'highlight_tags_restrict' : restreindre les highlights aux messages
+ comportant ces étiquettes
+** 'highlight_tags' : forcer le highlight pour les messages avec ces étiquettes
** 'hotlist_max_level_nicks' : niveau maximum pour la hotlist pour certains
pseudos
** 'localvar_xxx' : contenu de la variable locale "xxx" (remplacer "xxx" par le
@@ -10333,11 +10335,15 @@ Paramètres :
| highlight_regex | toute chaîne |
Expression régulière pour le highlight
+| highlight_tags_restrict | liste d'étiquettes ("tags") séparées par des virgules |
+ Restreindre les highlights aux messages avec ces étiquettes dans ce tampon
+ (il est possible de combiner plusieurs étiquettes sous forme d'un "et" logique
+ avec le séparateur "+", par exemple : "nick_toto+irc_action")
+
| 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")
+ Forcer le highlight pour les messages avec ces étiquettes dans ce tampon
+ (il est possible de combiner plusieurs étiquettes 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 2b62596bc..f61ce9960 100644
--- a/doc/it/autogen/plugin_api/hdata.txt
+++ b/doc/it/autogen/plugin_api/hdata.txt
@@ -537,6 +537,9 @@
*** 'highlight_words' (string)
*** 'highlight_regex' (string)
*** 'highlight_regex_compiled' (pointer)
+*** 'highlight_tags_restrict' (string)
+*** 'highlight_tags_restrict_count' (integer)
+*** 'highlight_tags_restrict_array' (pointer, array_size: "highlight_tags_restrict_count")
*** 'highlight_tags' (string)
*** 'highlight_tags_count' (integer)
*** 'highlight_tags_array' (pointer, array_size: "highlight_tags_count")
diff --git a/doc/it/autogen/user/irc_options.txt b/doc/it/autogen/user/irc_options.txt
index 08df42b78..4730959e6 100644
--- a/doc/it/autogen/user/irc_options.txt
+++ b/doc/it/autogen/user/irc_options.txt
@@ -168,8 +168,8 @@
** tipo: stringa
** valori: qualsiasi stringa (valore predefinito: `"$nick"`)
-* [[option_irc.look.highlight_tags]] *irc.look.highlight_tags*
-** descrizione: `elenco separato da liste di tag per i messaggi che potrebbero generare notifiche (di solito qualsiasi messaggio da altri utenti, non quelli dal server...)`
+* [[option_irc.look.highlight_tags_restrict]] *irc.look.highlight_tags_restrict*
+** descrizione: `restrict highlights to these tags on irc buffers (to have highlight on user messages but not server messages); tags must be separated by a comma and "+" can be used to make a logical "and" between tags; tags can start or end with "*" to match more than one tag; an empty value allows highlight on any tag`
** tipo: stringa
** valori: qualsiasi stringa (valore predefinito: `"irc_privmsg,irc_notice"`)
diff --git a/doc/it/weechat_plugin_api.it.txt b/doc/it/weechat_plugin_api.it.txt
index 0005870fa..c391dcb8b 100644
--- a/doc/it/weechat_plugin_api.it.txt
+++ b/doc/it/weechat_plugin_api.it.txt
@@ -10141,7 +10141,10 @@ Argomenti:
** 'text_search_input': input salvato prima della ricerca nel testo
** 'highlight_words': elenco di parole da evidenziare
** 'highlight_regex': espressione regolare per l'evento
-** 'highlight_tags': elenco di tag da evidenziare
+// TRANSLATION MISSING
+** 'highlight_tags_restrict': restrict highlights to messages with these tags
+// TRANSLATION MISSING
+** 'highlight_tags': force highlight on messages with these tags
** 'hotlist_max_level_nicks': livello massimo della hotlist per alcuni nick
** 'localvar_xxx': ottiene il contenuto della variabile locale "xxx"
(sostituire "xxx" con il nome della variabile da leggere)
@@ -10315,7 +10318,7 @@ Argomenti:
queste parole vengono aggiunte alle parole evidenziate esistenti nel
buffer
-| highlight_words_del | elenco di parole separate da virgole|
+| highlight_words_del | elenco di parole separate da virgole |
Elenco di parole separate da virgole da rimuovere dalle
parole evidenziate nel buffer
@@ -10323,10 +10326,16 @@ Argomenti:
Espressione regolare per l'evento
// TRANSLATION MISSING
+| highlight_tags_restrict | elenco separato da virgole di tag |
+ Restrict highlights to messages with these tags in this buffer
+ (it is possible to combine many tags as a logical "and" with separator "+",
+ for example: "nick_toto+irc_action")
+
+// 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")
+ Force highlight on messages with these tags in this buffer
+ (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 37e41f79b..8e1fd7d5e 100644
--- a/doc/ja/autogen/plugin_api/hdata.txt
+++ b/doc/ja/autogen/plugin_api/hdata.txt
@@ -537,6 +537,9 @@
*** 'highlight_words' (string)
*** 'highlight_regex' (string)
*** 'highlight_regex_compiled' (pointer)
+*** 'highlight_tags_restrict' (string)
+*** 'highlight_tags_restrict_count' (integer)
+*** 'highlight_tags_restrict_array' (pointer, array_size: "highlight_tags_restrict_count")
*** 'highlight_tags' (string)
*** 'highlight_tags_count' (integer)
*** 'highlight_tags_array' (pointer, array_size: "highlight_tags_count")
diff --git a/doc/ja/autogen/user/irc_options.txt b/doc/ja/autogen/user/irc_options.txt
index 34fa3d5b3..11a92848f 100644
--- a/doc/ja/autogen/user/irc_options.txt
+++ b/doc/ja/autogen/user/irc_options.txt
@@ -168,8 +168,8 @@
** タイプ: 文字列
** 値: 未制約文字列 (デフォルト値: `"$nick"`)
-* [[option_irc.look.highlight_tags]] *irc.look.highlight_tags*
-** 説明: `ハイライトされるメッセージにつけられたタグのコンマ区切りリスト (通例、他のユーザからの任意のメッセージ、サーバメッセージをのぞく、...)`
+* [[option_irc.look.highlight_tags_restrict]] *irc.look.highlight_tags_restrict*
+** 説明: `restrict highlights to these tags on irc buffers (to have highlight on user messages but not server messages); tags must be separated by a comma and "+" can be used to make a logical "and" between tags; tags can start or end with "*" to match more than one tag; an empty value allows highlight on any tag`
** タイプ: 文字列
** 値: 未制約文字列 (デフォルト値: `"irc_privmsg,irc_notice"`)
diff --git a/po/cs.po b/po/cs.po
index d48f4e0d1..2d767c3ca 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-14 11:41+0100\n"
+"POT-Creation-Date: 2013-12-14 12:31+0100\n"
"PO-Revision-Date: 2013-11-09 10:18+0100\n"
"Last-Translator: Jiri Golembiovsky <golemj@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -6365,11 +6365,12 @@ msgid ""
msgstr ""
msgid ""
-"comma separated list of tags for messages that may produce highlight "
-"(usually any message from another user, not server messages,..)"
+"restrict highlights to these tags on irc buffers (to have highlight on user "
+"messages but not server messages); tags must be separated by a comma and \"+"
+"\" can be used to make a logical \"and\" between tags; tags can start or end "
+"with \"*\" to match more than one tag; an empty value allows highlight on "
+"any tag"
msgstr ""
-"čárkami oddělený seznam tagů pro zprávy, které mohou vyprodukovat zvýraznění "
-"(obvykle jakákoliv zpráva od jiného uživatele, ne zprávy serveru,...)"
msgid "display server away message in away bar item"
msgstr "zobrazit zprávu nepřítomnosti na serveru v položce nepřítomnosti pole"
@@ -9948,6 +9949,14 @@ msgid "Constants"
msgstr ""
#~ msgid ""
+#~ "comma separated list of tags for messages that may produce highlight "
+#~ "(usually any message from another user, not server messages,..)"
+#~ msgstr ""
+#~ "čárkami oddělený seznam tagů pro zprávy, které mohou vyprodukovat "
+#~ "zvýraznění (obvykle jakákoliv zpráva od jiného uživatele, ne zprávy "
+#~ "serveru,...)"
+
+#~ msgid ""
#~ "comma separated list of tags to highlight (case insensitive comparison, "
#~ "examples: \"irc_notice\" for IRC notices, \"nick_flashcode\" for messages "
#~ "from nick \"FlashCode\")"
diff --git a/po/de.po b/po/de.po
index 24990f789..5da56f323 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-14 11:41+0100\n"
+"POT-Creation-Date: 2013-12-14 12:31+0100\n"
"PO-Revision-Date: 2013-11-20 15:12+0100\n"
"Last-Translator: Nils Görs <weechatter@arcor.de>\n"
"Language-Team: German <weechatter@arcor.de>\n"
@@ -7143,12 +7143,12 @@ msgstr ""
"Highlight für den Nick. Beispiel: \"$nick\", \"(?-i)$nick\""
msgid ""
-"comma separated list of tags for messages that may produce highlight "
-"(usually any message from another user, not server messages,..)"
+"restrict highlights to these tags on irc buffers (to have highlight on user "
+"messages but not server messages); tags must be separated by a comma and \"+"
+"\" can be used to make a logical \"and\" between tags; tags can start or end "
+"with \"*\" to match more than one tag; an empty value allows highlight on "
+"any tag"
msgstr ""
-"durch Kommata getrennte Liste von Schlagwörtern, welche eine Nachricht "
-"hervorheben sollen (Highlight) (normalerweise trifft dies auf jede Nachricht "
-"eines Users zu, ausgenommen Nachrichten vom Server,..)"
msgid "display server away message in away bar item"
msgstr "Abwesenheitsnachricht in der Away-Bar-Item anzeigen"
@@ -11002,6 +11002,14 @@ msgid "Constants"
msgstr "Konstanten"
#~ msgid ""
+#~ "comma separated list of tags for messages that may produce highlight "
+#~ "(usually any message from another user, not server messages,..)"
+#~ msgstr ""
+#~ "durch Kommata getrennte Liste von Schlagwörtern, welche eine Nachricht "
+#~ "hervorheben sollen (Highlight) (normalerweise trifft dies auf jede "
+#~ "Nachricht eines Users zu, ausgenommen Nachrichten vom Server,..)"
+
+#~ msgid ""
#~ "comma separated list of tags to highlight (case insensitive comparison, "
#~ "examples: \"irc_notice\" for IRC notices, \"nick_flashcode\" for messages "
#~ "from nick \"FlashCode\")"
diff --git a/po/es.po b/po/es.po
index d22be5841..56656dd55 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-14 11:41+0100\n"
+"POT-Creation-Date: 2013-12-14 12:31+0100\n"
"PO-Revision-Date: 2013-11-09 10:18+0100\n"
"Last-Translator: Elián Hanisch <lambdae2@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -6621,12 +6621,12 @@ msgstr ""
"del apodo, ejemplos: \"$nick\", \"(?-i)$nick\""
msgid ""
-"comma separated list of tags for messages that may produce highlight "
-"(usually any message from another user, not server messages,..)"
+"restrict highlights to these tags on irc buffers (to have highlight on user "
+"messages but not server messages); tags must be separated by a comma and \"+"
+"\" can be used to make a logical \"and\" between tags; tags can start or end "
+"with \"*\" to match more than one tag; an empty value allows highlight on "
+"any tag"
msgstr ""
-"lista de etiquetas (separadas por comas) para mensajes que podrían ser "
-"realzados (usualmente cualquier mensaje de otro usuario, no mensajes del "
-"servidor...)"
msgid "display server away message in away bar item"
msgstr "mostrar mensaje de ausencia en el elemento de barra \"away\""
@@ -10210,6 +10210,14 @@ msgid "Constants"
msgstr "Constantes"
#~ msgid ""
+#~ "comma separated list of tags for messages that may produce highlight "
+#~ "(usually any message from another user, not server messages,..)"
+#~ msgstr ""
+#~ "lista de etiquetas (separadas por comas) para mensajes que podrían ser "
+#~ "realzados (usualmente cualquier mensaje de otro usuario, no mensajes del "
+#~ "servidor...)"
+
+#~ msgid ""
#~ "comma separated list of tags to highlight (case insensitive comparison, "
#~ "examples: \"irc_notice\" for IRC notices, \"nick_flashcode\" for messages "
#~ "from nick \"FlashCode\")"
diff --git a/po/fr.po b/po/fr.po
index 80f8104a6..7ca6a7c3b 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-14 11:41+0100\n"
-"PO-Revision-Date: 2013-12-14 11:41+0100\n"
+"POT-Creation-Date: 2013-12-14 12:31+0100\n"
+"PO-Revision-Date: 2013-12-14 12:33+0100\n"
"Last-Translator: Sebastien Helleu <flashcode@flashtux.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
"Language: fr\n"
@@ -6982,12 +6982,18 @@ msgstr ""
"\"(?-i)$nick\""
msgid ""
-"comma separated list of tags for messages that may produce highlight "
-"(usually any message from another user, not server messages,..)"
+"restrict highlights to these tags on irc buffers (to have highlight on user "
+"messages but not server messages); tags must be separated by a comma and \"+"
+"\" can be used to make a logical \"and\" between tags; tags can start or end "
+"with \"*\" to match more than one tag; an empty value allows highlight on "
+"any tag"
msgstr ""
-"liste des tags pour les messages qui peuvent produire un highlight (séparés "
-"par des virgules, typiquement tout message venant d'un autre utilisateur, "
-"pas les messages du serveur, ...)"
+"restreindre les highlights à ces tags sur les tampons irc (pour avoir un "
+"highlight seulement sur les messages utilisateur et pas les messages du "
+"serveur); les tags doivent être séparés par des virgules et \"+\" peut être "
+"utilisé pour faire un \"et\" logique entre tags; les tags peuvent commencer "
+"ou se terminer par \"*\" pour correspondre à plus d'un tag; une valeur vide "
+"autorise le highlight sur n'importe quel tag"
msgid "display server away message in away bar item"
msgstr ""
@@ -10759,6 +10765,14 @@ msgid "Constants"
msgstr "Constantes"
#~ msgid ""
+#~ "comma separated list of tags for messages that may produce highlight "
+#~ "(usually any message from another user, not server messages,..)"
+#~ msgstr ""
+#~ "liste des tags pour les messages qui peuvent produire un highlight "
+#~ "(séparés par des virgules, typiquement tout message venant d'un autre "
+#~ "utilisateur, pas les messages du serveur, ...)"
+
+#~ msgid ""
#~ "comma separated list of tags to highlight (case insensitive comparison, "
#~ "examples: \"irc_notice\" for IRC notices, \"nick_flashcode\" for messages "
#~ "from nick \"FlashCode\")"
diff --git a/po/hu.po b/po/hu.po
index 327b3f89b..de3104aec 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-14 11:41+0100\n"
+"POT-Creation-Date: 2013-12-14 12:31+0100\n"
"PO-Revision-Date: 2013-11-09 10:18+0100\n"
"Last-Translator: Andras Voroskoi <voroskoi@frugalware.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -5897,8 +5897,11 @@ msgid ""
msgstr ""
msgid ""
-"comma separated list of tags for messages that may produce highlight "
-"(usually any message from another user, not server messages,..)"
+"restrict highlights to these tags on irc buffers (to have highlight on user "
+"messages but not server messages); tags must be separated by a comma and \"+"
+"\" can be used to make a logical \"and\" between tags; tags can start or end "
+"with \"*\" to match more than one tag; an empty value allows highlight on "
+"any tag"
msgstr ""
#, fuzzy
diff --git a/po/it.po b/po/it.po
index 573fab057..b5903bca5 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-14 11:41+0100\n"
+"POT-Creation-Date: 2013-12-14 12:31+0100\n"
"PO-Revision-Date: 2013-11-09 10:18+0100\n"
"Last-Translator: Esteban I. Ruiz Moreno <exio4.com@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -6758,12 +6758,12 @@ msgstr ""
"\""
msgid ""
-"comma separated list of tags for messages that may produce highlight "
-"(usually any message from another user, not server messages,..)"
+"restrict highlights to these tags on irc buffers (to have highlight on user "
+"messages but not server messages); tags must be separated by a comma and \"+"
+"\" can be used to make a logical \"and\" between tags; tags can start or end "
+"with \"*\" to match more than one tag; an empty value allows highlight on "
+"any tag"
msgstr ""
-"elenco separato da liste di tag per i messaggi che potrebbero generare "
-"notifiche (di solito qualsiasi messaggio da altri utenti, non quelli dal "
-"server...)"
msgid "display server away message in away bar item"
msgstr "mostra il messaggio di assenza del server nell'elemento barra di away"
@@ -10358,6 +10358,14 @@ msgid "Constants"
msgstr "Costanti"
#~ msgid ""
+#~ "comma separated list of tags for messages that may produce highlight "
+#~ "(usually any message from another user, not server messages,..)"
+#~ msgstr ""
+#~ "elenco separato da liste di tag per i messaggi che potrebbero generare "
+#~ "notifiche (di solito qualsiasi messaggio da altri utenti, non quelli dal "
+#~ "server...)"
+
+#~ msgid ""
#~ "comma separated list of tags to highlight (case insensitive comparison, "
#~ "examples: \"irc_notice\" for IRC notices, \"nick_flashcode\" for messages "
#~ "from nick \"FlashCode\")"
diff --git a/po/ja.po b/po/ja.po
index 628520222..85a7b5937 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-14 11:41+0100\n"
+"POT-Creation-Date: 2013-12-14 12:31+0100\n"
"PO-Revision-Date: 2013-11-09 10:18+0100\n"
"Last-Translator: AYANOKOUZI, Ryuunosuke <i38w7i3@yahoo.co.jp>\n"
"Language-Team: Japanese <https://github.com/l/WeeChat>\n"
@@ -6683,11 +6683,12 @@ msgstr ""
"無効にする、例: \"$nick\", \"(?-i)$nick\""
msgid ""
-"comma separated list of tags for messages that may produce highlight "
-"(usually any message from another user, not server messages,..)"
+"restrict highlights to these tags on irc buffers (to have highlight on user "
+"messages but not server messages); tags must be separated by a comma and \"+"
+"\" can be used to make a logical \"and\" between tags; tags can start or end "
+"with \"*\" to match more than one tag; an empty value allows highlight on "
+"any tag"
msgstr ""
-"ハイライトされるメッセージにつけられたタグのコンマ区切りリスト (通例、他の"
-"ユーザからの任意のメッセージ、サーバメッセージをのぞく、...)"
msgid "display server away message in away bar item"
msgstr "サーバの離席メッセージを離席バーアイテムに表示"
@@ -10334,6 +10335,13 @@ msgid "Constants"
msgstr "定数"
#~ msgid ""
+#~ "comma separated list of tags for messages that may produce highlight "
+#~ "(usually any message from another user, not server messages,..)"
+#~ 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\")"
diff --git a/po/pl.po b/po/pl.po
index 009b73698..5c869531e 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-14 11:41+0100\n"
+"POT-Creation-Date: 2013-12-14 12:31+0100\n"
"PO-Revision-Date: 2013-11-11 09:07+0100\n"
"Last-Translator: Krzysztof Korościk <soltys@szluug.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -6840,12 +6840,12 @@ msgstr ""
"podświetlenia nicka, przykłady: \"$nick\", \"(?-i)$nick\""
msgid ""
-"comma separated list of tags for messages that may produce highlight "
-"(usually any message from another user, not server messages,..)"
+"restrict highlights to these tags on irc buffers (to have highlight on user "
+"messages but not server messages); tags must be separated by a comma and \"+"
+"\" can be used to make a logical \"and\" between tags; tags can start or end "
+"with \"*\" to match more than one tag; an empty value allows highlight on "
+"any tag"
msgstr ""
-"oddzielona przecinkami lista tagów dla wiadomości mogących powodować "
-"podświetlenie (zazwyczaj dowolna wiadomość od innego użytkownika, nie "
-"wiadomość od serwera...)"
msgid "display server away message in away bar item"
msgstr "wyświetla wiadomość o nieobecności dla serwera w elemencie paska"
@@ -10534,6 +10534,14 @@ msgid "Constants"
msgstr "Stałe"
#~ msgid ""
+#~ "comma separated list of tags for messages that may produce highlight "
+#~ "(usually any message from another user, not server messages,..)"
+#~ msgstr ""
+#~ "oddzielona przecinkami lista tagów dla wiadomości mogących powodować "
+#~ "podświetlenie (zazwyczaj dowolna wiadomość od innego użytkownika, nie "
+#~ "wiadomość od serwera...)"
+
+#~ msgid ""
#~ "comma separated list of tags to highlight (case insensitive comparison, "
#~ "examples: \"irc_notice\" for IRC notices, \"nick_flashcode\" for messages "
#~ "from nick \"FlashCode\")"
diff --git a/po/pt_BR.po b/po/pt_BR.po
index f8ddceae3..fa5dd9b3e 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-14 11:41+0100\n"
+"POT-Creation-Date: 2013-12-14 12:31+0100\n"
"PO-Revision-Date: 2013-11-09 10:18+0100\n"
"Last-Translator: Sergio Durigan Junior <sergiosdj@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -6114,8 +6114,11 @@ msgid ""
msgstr ""
msgid ""
-"comma separated list of tags for messages that may produce highlight "
-"(usually any message from another user, not server messages,..)"
+"restrict highlights to these tags on irc buffers (to have highlight on user "
+"messages but not server messages); tags must be separated by a comma and \"+"
+"\" can be used to make a logical \"and\" between tags; tags can start or end "
+"with \"*\" to match more than one tag; an empty value allows highlight on "
+"any tag"
msgstr ""
msgid "display server away message in away bar item"
diff --git a/po/ru.po b/po/ru.po
index 6bff4815e..92b77f4a7 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-14 11:41+0100\n"
+"POT-Creation-Date: 2013-12-14 12:31+0100\n"
"PO-Revision-Date: 2013-11-09 10:18+0100\n"
"Last-Translator: Aleksey V Zapparov AKA ixti <ixti@member.fsf.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -5921,8 +5921,11 @@ msgid ""
msgstr ""
msgid ""
-"comma separated list of tags for messages that may produce highlight "
-"(usually any message from another user, not server messages,..)"
+"restrict highlights to these tags on irc buffers (to have highlight on user "
+"messages but not server messages); tags must be separated by a comma and \"+"
+"\" can be used to make a logical \"and\" between tags; tags can start or end "
+"with \"*\" to match more than one tag; an empty value allows highlight on "
+"any tag"
msgstr ""
#, fuzzy
diff --git a/po/tr.po b/po/tr.po
index 440977a4a..a2a16521e 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-14 11:41+0100\n"
+"POT-Creation-Date: 2013-12-14 12:31+0100\n"
"PO-Revision-Date: 2013-11-09 10:13+0100\n"
"Last-Translator: Hasan Kiran <sunder67@hotmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -5218,8 +5218,11 @@ msgid ""
msgstr ""
msgid ""
-"comma separated list of tags for messages that may produce highlight "
-"(usually any message from another user, not server messages,..)"
+"restrict highlights to these tags on irc buffers (to have highlight on user "
+"messages but not server messages); tags must be separated by a comma and \"+"
+"\" can be used to make a logical \"and\" between tags; tags can start or end "
+"with \"*\" to match more than one tag; an empty value allows highlight on "
+"any tag"
msgstr ""
msgid "display server away message in away bar item"
diff --git a/po/weechat.pot b/po/weechat.pot
index 15a177c56..4fa016237 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-14 11:41+0100\n"
+"POT-Creation-Date: 2013-12-14 12:31+0100\n"
"PO-Revision-Date: 2013-02-14 18:20+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -5175,8 +5175,11 @@ msgid ""
msgstr ""
msgid ""
-"comma separated list of tags for messages that may produce highlight "
-"(usually any message from another user, not server messages,..)"
+"restrict highlights to these tags on irc buffers (to have highlight on user "
+"messages but not server messages); tags must be separated by a comma and \"+"
+"\" can be used to make a logical \"and\" between tags; tags can start or end "
+"with \"*\" to match more than one tag; an empty value allows highlight on "
+"any tag"
msgstr ""
msgid "display server away message in away bar item"
diff --git a/src/core/wee-infolist.c b/src/core/wee-infolist.c
index c2aa0c6c6..3392ffeca 100644
--- a/src/core/wee-infolist.c
+++ b/src/core/wee-infolist.c
@@ -549,6 +549,29 @@ infolist_time (struct t_infolist *infolist, const char *var)
}
/*
+ * Searches for a variable in current infolist item.
+ */
+
+struct t_infolist_var *
+infolist_search_var (struct t_infolist *infolist, const char *var)
+{
+ struct t_infolist_var *ptr_var;
+
+ if (!infolist || !infolist->ptr_item || !var || !var[0])
+ return NULL;
+
+ for (ptr_var = infolist->ptr_item->vars; ptr_var;
+ ptr_var = ptr_var->next_var)
+ {
+ if (string_strcasecmp (ptr_var->name, var) == 0)
+ return ptr_var;
+ }
+
+ /* variable not found */
+ return NULL;
+}
+
+/*
* Frees a variable in item.
*/
diff --git a/src/core/wee-infolist.h b/src/core/wee-infolist.h
index 13a05eee5..772ac4a72 100644
--- a/src/core/wee-infolist.h
+++ b/src/core/wee-infolist.h
@@ -101,6 +101,8 @@ extern void *infolist_buffer (struct t_infolist *infolist,
const char *var, int *size);
extern time_t infolist_time (struct t_infolist *infolist,
const char *var);
+extern struct t_infolist_var *infolist_search_var (struct t_infolist *infolist,
+ const char *var);
extern void infolist_free (struct t_infolist *infolist);
extern void infolist_free_all_plugin (struct t_weechat_plugin *plugin);
extern void infolist_print_log ();
diff --git a/src/core/wee-upgrade.c b/src/core/wee-upgrade.c
index 09af3d0b2..6c1c87477 100644
--- a/src/core/wee-upgrade.c
+++ b/src/core/wee-upgrade.c
@@ -521,8 +521,23 @@ upgrade_weechat_read_cb (void *data,
infolist_string (infolist, "highlight_words"));
gui_buffer_set_highlight_regex (upgrade_current_buffer,
infolist_string (infolist, "highlight_regex"));
- gui_buffer_set_highlight_tags (upgrade_current_buffer,
- infolist_string (infolist, "highlight_tags"));
+ if (infolist_search_var (infolist,
+ "highlight_tags_restrict"))
+ {
+ /* WeeChat >= 0.4.3 */
+ gui_buffer_set_highlight_tags_restrict (upgrade_current_buffer,
+ infolist_string (infolist,
+ "highlight_tags_restrict"));
+ gui_buffer_set_highlight_tags (upgrade_current_buffer,
+ infolist_string (infolist,
+ "highlight_tags"));
+ }
+ else
+ {
+ /* WeeChat <= 0.4.2 */
+ gui_buffer_set_highlight_tags_restrict (upgrade_current_buffer,
+ infolist_string (infolist, "highlight_tags"));
+ }
gui_buffer_set_hotlist_max_level_nicks (upgrade_current_buffer,
infolist_string (infolist, "hotlist_max_level_nicks"));
index = 0;
diff --git a/src/gui/gui-buffer.c b/src/gui/gui-buffer.c
index c9e33e88e..1080996aa 100644
--- a/src/gui/gui-buffer.c
+++ b/src/gui/gui-buffer.c
@@ -88,8 +88,8 @@ char *gui_buffer_properties_get_integer[] =
};
char *gui_buffer_properties_get_string[] =
{ "plugin", "name", "full_name", "short_name", "title", "input",
- "text_search_input", "highlight_words", "highlight_regex", "highlight_tags",
- "hotlist_max_level_nicks",
+ "text_search_input", "highlight_words", "highlight_regex",
+ "highlight_tags_restrict", "highlight_tags", "hotlist_max_level_nicks",
NULL
};
char *gui_buffer_properties_get_pointer[] =
@@ -101,9 +101,9 @@ char *gui_buffer_properties_set[] =
"short_name", "type", "notify", "title", "time_for_each_line", "nicklist",
"nicklist_case_sensitive", "nicklist_display_groups", "highlight_words",
"highlight_words_add", "highlight_words_del", "highlight_regex",
- "highlight_tags", "hotlist_max_level_nicks", "hotlist_max_level_nicks_add",
- "hotlist_max_level_nicks_del", "input", "input_pos",
- "input_get_unknown_commands",
+ "highlight_tags_restrict", "highlight_tags", "hotlist_max_level_nicks",
+ "hotlist_max_level_nicks_add", "hotlist_max_level_nicks_del",
+ "input", "input_pos", "input_get_unknown_commands",
NULL
};
@@ -643,6 +643,9 @@ gui_buffer_new (struct t_weechat_plugin *plugin,
new_buffer->highlight_words = NULL;
new_buffer->highlight_regex = NULL;
new_buffer->highlight_regex_compiled = NULL;
+ new_buffer->highlight_tags_restrict = NULL;
+ new_buffer->highlight_tags_restrict_count = 0;
+ new_buffer->highlight_tags_restrict_array = NULL;
new_buffer->highlight_tags = NULL;
new_buffer->highlight_tags_count = 0;
new_buffer->highlight_tags_array = NULL;
@@ -1034,6 +1037,8 @@ gui_buffer_get_string (struct t_gui_buffer *buffer, const char *property)
return buffer->highlight_words;
else if (string_strcasecmp (property, "highlight_regex") == 0)
return buffer->highlight_regex;
+ else if (string_strcasecmp (property, "highlight_tags_restrict") == 0)
+ return buffer->highlight_tags_restrict;
else if (string_strcasecmp (property, "highlight_tags") == 0)
return buffer->highlight_tags;
else if (string_strcasecmp (property, "hotlist_max_level_nicks") == 0)
@@ -1406,12 +1411,66 @@ gui_buffer_set_highlight_regex (struct t_gui_buffer *buffer,
}
/*
+ * Sets tags to restrict highlights for a buffer.
+ */
+
+void
+gui_buffer_set_highlight_tags_restrict (struct t_gui_buffer *buffer,
+ const char *new_tags)
+{
+ int i;
+ char **tags_array;
+
+ if (buffer->highlight_tags_restrict)
+ {
+ free (buffer->highlight_tags_restrict);
+ buffer->highlight_tags_restrict = NULL;
+ }
+ if (buffer->highlight_tags_restrict_array)
+ {
+ for (i = 0; i < buffer->highlight_tags_restrict_count; i++)
+ {
+ string_free_split (buffer->highlight_tags_restrict_array[i]);
+ }
+ free (buffer->highlight_tags_restrict_array);
+ buffer->highlight_tags_restrict_array = NULL;
+ }
+ buffer->highlight_tags_restrict_count = 0;
+
+ if (!new_tags)
+ return;
+
+ buffer->highlight_tags_restrict = strdup (new_tags);
+ if (!buffer->highlight_tags_restrict)
+ return;
+
+ tags_array = string_split (buffer->highlight_tags_restrict, ",", 0, 0,
+ &buffer->highlight_tags_restrict_count);
+ if (tags_array)
+ {
+ buffer->highlight_tags_restrict_array =
+ malloc (buffer->highlight_tags_restrict_count *
+ sizeof (*buffer->highlight_tags_restrict_array));
+ if (buffer->highlight_tags_restrict_array)
+ {
+ for (i = 0; i < buffer->highlight_tags_restrict_count; i++)
+ {
+ buffer->highlight_tags_restrict_array[i] = string_split (tags_array[i],
+ "+", 0, 0,
+ NULL);
+ }
+ }
+ string_free_split (tags_array);
+ }
+}
+
+/*
* Sets highlight tags for a buffer.
*/
void
gui_buffer_set_highlight_tags (struct t_gui_buffer *buffer,
- const char *new_highlight_tags)
+ const char *new_tags)
{
int i;
char **tags_array;
@@ -1432,10 +1491,10 @@ gui_buffer_set_highlight_tags (struct t_gui_buffer *buffer,
}
buffer->highlight_tags_count = 0;
- if (!new_highlight_tags)
+ if (!new_tags)
return;
- buffer->highlight_tags = strdup (new_highlight_tags);
+ buffer->highlight_tags = strdup (new_tags);
if (!buffer->highlight_tags)
return;
@@ -1443,8 +1502,9 @@ gui_buffer_set_highlight_tags (struct t_gui_buffer *buffer,
&buffer->highlight_tags_count);
if (tags_array)
{
- buffer->highlight_tags_array = malloc (buffer->highlight_tags_count *
- sizeof (*buffer->highlight_tags_array));
+ buffer->highlight_tags_array =
+ malloc (buffer->highlight_tags_count *
+ sizeof (*buffer->highlight_tags_array));
if (buffer->highlight_tags_array)
{
for (i = 0; i < buffer->highlight_tags_count; i++)
@@ -1751,6 +1811,10 @@ gui_buffer_set (struct t_gui_buffer *buffer, const char *property,
{
gui_buffer_set_highlight_regex (buffer, value);
}
+ else if (string_strcasecmp (property, "highlight_tags_restrict") == 0)
+ {
+ gui_buffer_set_highlight_tags_restrict (buffer, value);
+ }
else if (string_strcasecmp (property, "highlight_tags") == 0)
{
gui_buffer_set_highlight_tags (buffer, value);
@@ -2486,6 +2550,16 @@ gui_buffer_close (struct t_gui_buffer *buffer)
regfree (buffer->highlight_regex_compiled);
free (buffer->highlight_regex_compiled);
}
+ if (buffer->highlight_tags_restrict)
+ free (buffer->highlight_tags_restrict);
+ if (buffer->highlight_tags_restrict_array)
+ {
+ for (i = 0; i < buffer->highlight_tags_restrict_count; i++)
+ {
+ string_free_split (buffer->highlight_tags_restrict_array[i]);
+ }
+ free (buffer->highlight_tags_restrict_array);
+ }
if (buffer->highlight_tags)
free (buffer->highlight_tags);
if (buffer->highlight_tags_array)
@@ -3693,6 +3767,9 @@ gui_buffer_hdata_buffer_cb (void *data, const char *hdata_name)
HDATA_VAR(struct t_gui_buffer, highlight_words, STRING, 0, NULL, NULL);
HDATA_VAR(struct t_gui_buffer, highlight_regex, STRING, 0, NULL, NULL);
HDATA_VAR(struct t_gui_buffer, highlight_regex_compiled, POINTER, 0, NULL, NULL);
+ HDATA_VAR(struct t_gui_buffer, highlight_tags_restrict, STRING, 0, NULL, NULL);
+ HDATA_VAR(struct t_gui_buffer, highlight_tags_restrict_count, INTEGER, 0, NULL, NULL);
+ HDATA_VAR(struct t_gui_buffer, highlight_tags_restrict_array, POINTER, 0, "highlight_tags_restrict_count", 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, POINTER, 0, "highlight_tags_count", NULL);
@@ -3879,6 +3956,8 @@ gui_buffer_add_to_infolist (struct t_infolist *infolist,
return 0;
if (!infolist_new_var_pointer (ptr_item, "highlight_regex_compiled", buffer->highlight_regex_compiled))
return 0;
+ if (!infolist_new_var_string (ptr_item, "highlight_tags_restrict", buffer->highlight_tags_restrict))
+ return 0;
if (!infolist_new_var_string (ptr_item, "highlight_tags", buffer->highlight_tags))
return 0;
if (!infolist_new_var_string (ptr_item, "hotlist_max_level_nicks", hashtable_get_string (buffer->hotlist_max_level_nicks, "keys_values")))
@@ -4081,6 +4160,9 @@ gui_buffer_print_log ()
log_printf (" highlight_words . . . . : '%s'", ptr_buffer->highlight_words);
log_printf (" highlight_regex . . . . : '%s'", ptr_buffer->highlight_regex);
log_printf (" highlight_regex_compiled: 0x%lx", ptr_buffer->highlight_regex_compiled);
+ log_printf (" highlight_tags_restrict. . . : '%s'", ptr_buffer->highlight_tags_restrict);
+ log_printf (" highlight_tags_restrict_count: %d", ptr_buffer->highlight_tags_restrict_count);
+ log_printf (" highlight_tags_restrict_array: 0x%lx", ptr_buffer->highlight_tags_restrict_array);
log_printf (" highlight_tags. . . . . : '%s'", ptr_buffer->highlight_tags);
log_printf (" highlight_tags_count. . : %d", ptr_buffer->highlight_tags_count);
log_printf (" highlight_tags_array. . : 0x%lx", ptr_buffer->highlight_tags_array);
diff --git a/src/gui/gui-buffer.h b/src/gui/gui-buffer.h
index 70ca1696b..1ab93f06d 100644
--- a/src/gui/gui-buffer.h
+++ b/src/gui/gui-buffer.h
@@ -177,10 +177,12 @@ struct t_gui_buffer
char *highlight_words; /* list of words to highlight */
char *highlight_regex; /* regex for highlight */
regex_t *highlight_regex_compiled; /* compiled regex */
- 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_restrict; /* restrict highlight to these tags */
+ int highlight_tags_restrict_count; /* number of restricted tags */
+ char ***highlight_tags_restrict_array; /* array with restricted tags */
+ char *highlight_tags; /* force highlight on these tags */
+ int highlight_tags_count; /* number of highlight tags */
+ char ***highlight_tags_array; /* array with highlight tags */
/* hotlist settings for buffer */
struct t_hashtable *hotlist_max_level_nicks; /* max hotlist level for */
@@ -263,8 +265,10 @@ extern void gui_buffer_set_highlight_words (struct t_gui_buffer *buffer,
const char *new_highlight_words);
extern void gui_buffer_set_highlight_regex (struct t_gui_buffer *buffer,
const char *new_highlight_regex);
+extern void gui_buffer_set_highlight_tags_restrict (struct t_gui_buffer *buffer,
+ const char *new_tags);
extern void gui_buffer_set_highlight_tags (struct t_gui_buffer *buffer,
- const char *new_highlight_tags);
+ const char *new_tags);
extern void gui_buffer_set_hotlist_max_level_nicks (struct t_gui_buffer *buffer,
const char *new_hotlist_max_level_nicks);
extern void gui_buffer_set_unread (struct t_gui_buffer *buffer);
diff --git a/src/gui/gui-line.c b/src/gui/gui-line.c
index f6e4d863f..4a2460c64 100644
--- a/src/gui/gui-line.c
+++ b/src/gui/gui-line.c
@@ -699,23 +699,15 @@ gui_line_has_highlight (struct t_gui_line *line)
return 0;
/*
- * check if highlight is forced by a tag (with option highlight_tags) or
- * disabled for line; also check if the line is an action message (for
- * example tag "irc_action") and get pointer on the nick (tag "nick_xxx"),
- * these info will be used later (see below)
+ * check if highlight is disabled for line; also check if the line is an
+ * action message (for example tag "irc_action") and get pointer on the nick
+ * (tag "nick_xxx"), these info will be used later (see below)
*/
no_highlight = 0;
action = 0;
ptr_nick = NULL;
for (i = 0; i < line->data->tags_count; i++)
{
- if (config_highlight_tags
- && gui_line_match_tags (line->data,
- config_num_highlight_tags,
- config_highlight_tags))
- {
- return 1;
- }
if (strcmp (line->data->tags_array[i], GUI_CHAT_TAG_NO_HIGHLIGHT) == 0)
no_highlight = 1;
else if (strncmp (line->data->tags_array[i], "nick_", 5) == 0)
@@ -734,14 +726,38 @@ gui_line_has_highlight (struct t_gui_line *line)
return 0;
/*
+ * check if highlight is forced by a tag
+ * (with global option "weechat.look.highlight_tags")
+ */
+ if (config_highlight_tags
+ && gui_line_match_tags (line->data,
+ config_num_highlight_tags,
+ config_highlight_tags))
+ {
+ return 1;
+ }
+
+ /*
+ * check if highlight is forced by a tag
+ * (with buffer property "highlight_tags")
+ */
+ if (line->data->buffer->highlight_tags
+ && gui_line_match_tags (line->data,
+ line->data->buffer->highlight_tags_count,
+ line->data->buffer->highlight_tags_array))
+ {
+ return 1;
+ }
+
+ /*
* check that line matches highlight tags, if any (if no tag is specified,
* then any tag is allowed)
*/
- if (line->data->buffer->highlight_tags_count > 0)
+ if (line->data->buffer->highlight_tags_restrict_count > 0)
{
if (!gui_line_match_tags (line->data,
- line->data->buffer->highlight_tags_count,
- line->data->buffer->highlight_tags_array))
+ line->data->buffer->highlight_tags_restrict_count,
+ line->data->buffer->highlight_tags_restrict_array))
return 0;
}
diff --git a/src/plugins/irc/irc-channel.c b/src/plugins/irc/irc-channel.c
index f30696881..28a51e724 100644
--- a/src/plugins/irc/irc-channel.c
+++ b/src/plugins/irc/irc-channel.c
@@ -253,11 +253,11 @@ irc_channel_new (struct t_irc_server *server, int channel_type,
(channel_type == IRC_CHANNEL_TYPE_CHANNEL) ?
weechat_config_string (irc_config_look_highlight_channel) :
weechat_config_string (irc_config_look_highlight_pv));
- if (weechat_config_string (irc_config_look_highlight_tags)
- && weechat_config_string (irc_config_look_highlight_tags)[0])
+ if (weechat_config_string (irc_config_look_highlight_tags_restrict)
+ && weechat_config_string (irc_config_look_highlight_tags_restrict)[0])
{
- weechat_buffer_set (new_buffer, "highlight_tags",
- weechat_config_string (irc_config_look_highlight_tags));
+ weechat_buffer_set (new_buffer, "highlight_tags_restrict",
+ weechat_config_string (irc_config_look_highlight_tags_restrict));
}
}
diff --git a/src/plugins/irc/irc-config.c b/src/plugins/irc/irc-config.c
index 49d06b575..6b3b1f818 100644
--- a/src/plugins/irc/irc-config.c
+++ b/src/plugins/irc/irc-config.c
@@ -69,7 +69,7 @@ struct t_config_option *irc_config_look_display_pv_back;
struct t_config_option *irc_config_look_highlight_server;
struct t_config_option *irc_config_look_highlight_channel;
struct t_config_option *irc_config_look_highlight_pv;
-struct t_config_option *irc_config_look_highlight_tags;
+struct t_config_option *irc_config_look_highlight_tags_restrict;
struct t_config_option *irc_config_look_item_away_message;
struct t_config_option *irc_config_look_item_channel_modes_hide_key;
struct t_config_option *irc_config_look_item_display_server;
@@ -488,12 +488,12 @@ irc_config_change_look_item_nick_prefix (void *data,
}
/*
- * Callback for changes on option "irc.look.highlight_tags".
+ * Callback for changes on option "irc.look.highlight_tags_restrict".
*/
void
-irc_config_change_look_highlight_tags (void *data,
- struct t_config_option *option)
+irc_config_change_look_highlight_tags_restrict (void *data,
+ struct t_config_option *option)
{
struct t_irc_server *ptr_server;
struct t_irc_channel *ptr_channel;
@@ -507,16 +507,16 @@ irc_config_change_look_highlight_tags (void *data,
{
if (ptr_server->buffer)
{
- weechat_buffer_set (ptr_server->buffer, "highlight_tags",
- weechat_config_string (irc_config_look_highlight_tags));
+ weechat_buffer_set (ptr_server->buffer, "highlight_tags_restrict",
+ weechat_config_string (irc_config_look_highlight_tags_restrict));
}
for (ptr_channel = ptr_server->channels; ptr_channel;
ptr_channel = ptr_channel->next_channel)
{
if (ptr_channel->buffer)
{
- weechat_buffer_set (ptr_channel->buffer, "highlight_tags",
- weechat_config_string (irc_config_look_highlight_tags));
+ weechat_buffer_set (ptr_channel->buffer, "highlight_tags_restrict",
+ weechat_config_string (irc_config_look_highlight_tags_restrict));
}
}
}
@@ -2343,14 +2343,17 @@ irc_config_init ()
"disables default highlight on nick, examples: \"$nick\", "
"\"(?-i)$nick\""),
NULL, 0, 0, "$nick", NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL);
- irc_config_look_highlight_tags = weechat_config_new_option (
- irc_config_file, ptr_section,
- "highlight_tags", "string",
- N_("comma separated list of tags for messages that may produce "
- "highlight (usually any message from another user, not server "
- "messages,..)"),
+ irc_config_look_highlight_tags_restrict = weechat_config_new_option (
+ irc_config_file, ptr_section,
+ "highlight_tags_restrict", "string",
+ N_("restrict highlights to these tags on irc buffers (to have "
+ "highlight on user messages but not server messages); tags "
+ "must be separated by a comma and \"+\" can be used to make a "
+ "logical \"and\" between tags; tags can start or end with \"*\" "
+ "to match more than one tag; an empty value allows highlight on any "
+ "tag"),
NULL, 0, 0, "irc_privmsg,irc_notice", NULL, 0, NULL, NULL,
- &irc_config_change_look_highlight_tags, NULL, NULL, NULL);
+ &irc_config_change_look_highlight_tags_restrict, NULL, NULL, NULL);
irc_config_look_item_away_message = weechat_config_new_option (
irc_config_file, ptr_section,
"item_away_message", "boolean",
diff --git a/src/plugins/irc/irc-config.h b/src/plugins/irc/irc-config.h
index 6a0759455..0a5e13e0d 100644
--- a/src/plugins/irc/irc-config.h
+++ b/src/plugins/irc/irc-config.h
@@ -117,7 +117,7 @@ extern struct t_config_option *irc_config_look_display_pv_back;
extern struct t_config_option *irc_config_look_highlight_server;
extern struct t_config_option *irc_config_look_highlight_channel;
extern struct t_config_option *irc_config_look_highlight_pv;
-extern struct t_config_option *irc_config_look_highlight_tags;
+extern struct t_config_option *irc_config_look_highlight_tags_restrict;
extern struct t_config_option *irc_config_look_item_away_message;
extern struct t_config_option *irc_config_look_item_channel_modes_hide_key;
extern struct t_config_option *irc_config_look_item_display_server;
diff --git a/src/plugins/irc/irc-server.c b/src/plugins/irc/irc-server.c
index 0f5055c80..0fb4815ff 100644
--- a/src/plugins/irc/irc-server.c
+++ b/src/plugins/irc/irc-server.c
@@ -3460,11 +3460,11 @@ irc_server_create_buffer (struct t_irc_server *server)
/* set highlights settings on server buffer */
weechat_buffer_set (server->buffer, "highlight_words_add",
weechat_config_string (irc_config_look_highlight_server));
- if (weechat_config_string (irc_config_look_highlight_tags)
- && weechat_config_string (irc_config_look_highlight_tags)[0])
+ if (weechat_config_string (irc_config_look_highlight_tags_restrict)
+ && weechat_config_string (irc_config_look_highlight_tags_restrict)[0])
{
- weechat_buffer_set (server->buffer, "highlight_tags",
- weechat_config_string (irc_config_look_highlight_tags));
+ weechat_buffer_set (server->buffer, "highlight_tags_restrict",
+ weechat_config_string (irc_config_look_highlight_tags_restrict));
}
irc_server_set_buffer_title (server);