diff --git a/doc/de/autogen/irc_options.xml b/doc/de/autogen/irc_options.xml
index 4b35c1489..5b20732cc 100644
--- a/doc/de/autogen/irc_options.xml
+++ b/doc/de/autogen/irc_options.xml
@@ -86,6 +86,22 @@
+irc.look.display_channel_modes
+
+
+ description: display channel modes in "buffer_name" bar item
+
+
+ type: boolean
+
+
+ values: on, off
+
+
+ default value: on
+
+
+
irc.look.highlight_tags
diff --git a/doc/de/autogen/weechat_commands.xml b/doc/de/autogen/weechat_commands.xml
index c69d15a06..3a40652af 100644
--- a/doc/de/autogen/weechat_commands.xml
+++ b/doc/de/autogen/weechat_commands.xml
@@ -54,17 +54,18 @@ Examples:
Puffer verwalten
- action: action to do:
- clear: clear buffer content (-all for all buffers, number for a buffer, or nothing for current buffer)
- move: move buffer in the list (may be relative, for example -1)
- close: close buffer
- list: list buffers (no parameter implies this list)
- notify: display notify levels for all open buffers
- scroll: scroll in history (may be relative, and may end by a letter: s=sec, m=min, h=hour, d=day, M=month, y=year); if there is only letter, then scroll to beginning of this item
+ action: action to do:
+ clear: clear buffer content (-all for all buffers, number for a buffer, or nothing for current buffer)
+ move: move buffer in the list (may be relative, for example -1)
+ close: close buffer
+ list: list buffers (no parameter implies this list)
+ notify: display notify levels for all open buffers
+localvar: display local variables for current buffer
+ scroll: scroll in history (may be relative, and may end by a letter: s=sec, m=min, h=hour, d=day, M=month, y=year); if there is only letter, then scroll to beginning of this item
- number: jump to buffer by number
+ number: jump to buffer by number
server,
-channel: jump to buffer by server and/or channel name
+ channel: jump to buffer by server and/or channel name
Examples:
clear current buffer: /buffer clear
diff --git a/doc/de/autogen/weechat_options.xml b/doc/de/autogen/weechat_options.xml
index fc295e76f..5394f1155 100644
--- a/doc/de/autogen/weechat_options.xml
+++ b/doc/de/autogen/weechat_options.xml
@@ -1462,22 +1462,6 @@
-weechat.look.input_format
-
-
- description: Format der Eingabezeile ('%c' wird durch den Channel- oder Servernamen ersetzt, '%n' durch den Nicknamen und '%m' durch die Nick-Modi)
-
-
- type: string
-
-
- values: any string
-
-
- default value: '[%n(%m)] '
-
-
-
weechat.look.item_time_format
diff --git a/doc/en/autogen/irc_options.xml b/doc/en/autogen/irc_options.xml
index 2199cf1e1..ca2ca4c09 100644
--- a/doc/en/autogen/irc_options.xml
+++ b/doc/en/autogen/irc_options.xml
@@ -86,6 +86,22 @@
+irc.look.display_channel_modes
+
+
+ description: display channel modes in "buffer_name" bar item
+
+
+ type: boolean
+
+
+ values: on, off
+
+
+ default value: on
+
+
+
irc.look.highlight_tags
diff --git a/doc/en/autogen/weechat_commands.xml b/doc/en/autogen/weechat_commands.xml
index 63f17c4c9..ad6d1f7d6 100644
--- a/doc/en/autogen/weechat_commands.xml
+++ b/doc/en/autogen/weechat_commands.xml
@@ -54,17 +54,18 @@ Examples:
manage buffers
- action: action to do:
- clear: clear buffer content (-all for all buffers, number for a buffer, or nothing for current buffer)
- move: move buffer in the list (may be relative, for example -1)
- close: close buffer
- list: list buffers (no parameter implies this list)
- notify: display notify levels for all open buffers
- scroll: scroll in history (may be relative, and may end by a letter: s=sec, m=min, h=hour, d=day, M=month, y=year); if there is only letter, then scroll to beginning of this item
+ action: action to do:
+ clear: clear buffer content (-all for all buffers, number for a buffer, or nothing for current buffer)
+ move: move buffer in the list (may be relative, for example -1)
+ close: close buffer
+ list: list buffers (no parameter implies this list)
+ notify: display notify levels for all open buffers
+localvar: display local variables for current buffer
+ scroll: scroll in history (may be relative, and may end by a letter: s=sec, m=min, h=hour, d=day, M=month, y=year); if there is only letter, then scroll to beginning of this item
- number: jump to buffer by number
+ number: jump to buffer by number
server,
-channel: jump to buffer by server and/or channel name
+ channel: jump to buffer by server and/or channel name
Examples:
clear current buffer: /buffer clear
diff --git a/doc/en/autogen/weechat_options.xml b/doc/en/autogen/weechat_options.xml
index eff963f69..1e5017806 100644
--- a/doc/en/autogen/weechat_options.xml
+++ b/doc/en/autogen/weechat_options.xml
@@ -1462,22 +1462,6 @@
-weechat.look.input_format
-
-
- description: format for input prompt ('%c' is replaced by channel or server, '%n' by nick and '%m' by nick modes)
-
-
- type: string
-
-
- values: any string
-
-
- default value: '[%n(%m)] '
-
-
-
weechat.look.item_time_format
diff --git a/doc/fr/autogen/irc_options.xml b/doc/fr/autogen/irc_options.xml
index 2dca1d342..9c554f923 100644
--- a/doc/fr/autogen/irc_options.xml
+++ b/doc/fr/autogen/irc_options.xml
@@ -86,6 +86,22 @@
+irc.look.display_channel_modes
+
+
+ description: affiche les modes du canal dans l'objet de barre "buffer_name"
+
+
+ type: booléen
+
+
+ valeurs: on, off
+
+
+ valeur par défaut: on
+
+
+
irc.look.highlight_tags
diff --git a/doc/fr/autogen/weechat_commands.xml b/doc/fr/autogen/weechat_commands.xml
index 07d71a706..af1787508 100644
--- a/doc/fr/autogen/weechat_commands.xml
+++ b/doc/fr/autogen/weechat_commands.xml
@@ -54,17 +54,18 @@ Exemples :
gestion des tampons
- action: action à effectuer:
- clear: efface le contenu du tampon (-all pour tous les tampons, un numéro pour un tampon, ou rien pour le tampon courant)
- move: déplace le tampon dans la liste (peut être relatif, par exemple -1)
- close: ferme le tampon
- list: liste les tampons ouverts (pas de paramètre affiche cette liste)
- notify: affiche les niveaux de notification pour tous les tampons ouverts
- scroll: fait défiler l'historique (peut être relatif, et peut se terminer par une lettre: s=sec, m=min, h=heure, d=jour, M=mois, y=année); s'il y a seulement une lettre, alors fait défiler jusqu'au début de cet élément
+ action: action à effectuer:
+ clear: efface le contenu du tampon (-all pour tous les tampons, un numéro pour un tampon, ou rien pour le tampon courant)
+ move: déplace le tampon dans la liste (peut être relatif, par exemple -1)
+ close: ferme le tampon
+ list: liste les tampons ouverts (pas de paramètre affiche cette liste)
+ notify: affiche les niveaux de notification pour tous les tampons ouverts
+localvar: affiche la liste des variables locales pour le tampon courant
+ scroll: fait défiler l'historique (peut être relatif, et peut se terminer par une lettre: s=sec, m=min, h=heure, d=jour, M=mois, y=année); s'il y a seulement une lettre, alors fait défiler jusqu'au début de cet élément
- nombre: saute au tampon qui a ce numéro
+ nombre: saute au tampon qui a ce numéro
serveur,
- canal: saute au tampon par serveur et/ou nom de canal
+ canal: saute au tampon par serveur et/ou nom de canal
Exemples:
déplacer tampon: /buffer move 5
diff --git a/doc/fr/autogen/weechat_options.xml b/doc/fr/autogen/weechat_options.xml
index cb9dd062d..733091ce5 100644
--- a/doc/fr/autogen/weechat_options.xml
+++ b/doc/fr/autogen/weechat_options.xml
@@ -1462,22 +1462,6 @@
-weechat.look.input_format
-
-
- description: format pour l'invite de la zone de saisie ('%c' est remplacé par le canal ou serveur, '%n' par le pseudo et '%m' par les modes du pseudo)
-
-
- type: chaîne
-
-
- valeurs: toute chaîne
-
-
- valeur par défaut: '[%n(%m)] '
-
-
-
weechat.look.item_time_format
diff --git a/po/cs.po b/po/cs.po
index 8f4a45d46..7f0c42c3d 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.2.7-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2008-10-23 18:35+0200\n"
+"POT-Creation-Date: 2008-10-24 12:58+0200\n"
"PO-Revision-Date: 2008-09-17 16:19+0200\n"
"Last-Translator: Jiri Golembiovsky \n"
"Language-Team: weechat-dev \n"
@@ -214,6 +214,14 @@ msgstr "%sChyba: hlavní buffer WeeChat nemůže být zavřen"
msgid "Notify levels:"
msgstr "Level upozornění:"
+#, fuzzy, c-format
+msgid "Local variables for buffer \"%s\":"
+msgstr "časová známka pro buffer"
+
+#, c-format
+msgid "No local variable defined for buffer \"%s\""
+msgstr ""
+
#, fuzzy, c-format
msgid "%sPlugin \"%s\" not found"
msgstr "%s adresa \"%s\" nenalezena\n"
@@ -718,20 +726,21 @@ msgstr "[akce [args] | číslo | [[server] [kanál]]]"
#, fuzzy
msgid ""
-" action: action to do:\n"
-" clear: clear buffer content (-all for all buffers, number for a buffer, or "
-"nothing for current buffer)\n"
-" move: move buffer in the list (may be relative, for example -1)\n"
-" close: close buffer\n"
-" list: list buffers (no parameter implies this list)\n"
-" notify: display notify levels for all open buffers\n"
-" scroll: scroll in history (may be relative, and may end by a letter: s=sec, "
-"m=min, h=hour, d=day, M=month, y=year); if there is only letter, then scroll "
-"to beginning of this item\n"
+" action: action to do:\n"
+" clear: clear buffer content (-all for all buffers, number for a buffer, "
+"or nothing for current buffer)\n"
+" move: move buffer in the list (may be relative, for example -1)\n"
+" close: close buffer\n"
+" list: list buffers (no parameter implies this list)\n"
+" notify: display notify levels for all open buffers\n"
+"localvar: display local variables for current buffer\n"
+" scroll: scroll in history (may be relative, and may end by a letter: "
+"s=sec, m=min, h=hour, d=day, M=month, y=year); if there is only letter, then "
+"scroll to beginning of this item\n"
"\n"
-" number: jump to buffer by number\n"
+" number: jump to buffer by number\n"
"server,\n"
-"channel: jump to buffer by server and/or channel name\n"
+" channel: jump to buffer by server and/or channel name\n"
"\n"
"Examples:\n"
"clear current buffer: /buffer clear\n"
diff --git a/po/de.po b/po/de.po
index 624be0cef..176deaca5 100644
--- a/po/de.po
+++ b/po/de.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.2.7-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2008-10-23 18:35+0200\n"
+"POT-Creation-Date: 2008-10-24 12:58+0200\n"
"PO-Revision-Date: 2007-09-06 12:44+0200\n"
"Last-Translator: Thomas Schuetz \n"
"Language-Team: weechat-dev \n"
@@ -219,6 +219,14 @@ msgstr ""
msgid "Notify levels:"
msgstr "Notify-Ebenen:"
+#, fuzzy, c-format
+msgid "Local variables for buffer \"%s\":"
+msgstr "Timestamp für Puffer"
+
+#, c-format
+msgid "No local variable defined for buffer \"%s\""
+msgstr ""
+
#, fuzzy, c-format
msgid "%sPlugin \"%s\" not found"
msgstr "%s Adresse \"%s\" nicht gefunden\n"
@@ -724,20 +732,21 @@ msgstr "[Aktion [Argumente] | Nummer | [[Server] [Channel]]]"
#, fuzzy
msgid ""
-" action: action to do:\n"
-" clear: clear buffer content (-all for all buffers, number for a buffer, or "
-"nothing for current buffer)\n"
-" move: move buffer in the list (may be relative, for example -1)\n"
-" close: close buffer\n"
-" list: list buffers (no parameter implies this list)\n"
-" notify: display notify levels for all open buffers\n"
-" scroll: scroll in history (may be relative, and may end by a letter: s=sec, "
-"m=min, h=hour, d=day, M=month, y=year); if there is only letter, then scroll "
-"to beginning of this item\n"
+" action: action to do:\n"
+" clear: clear buffer content (-all for all buffers, number for a buffer, "
+"or nothing for current buffer)\n"
+" move: move buffer in the list (may be relative, for example -1)\n"
+" close: close buffer\n"
+" list: list buffers (no parameter implies this list)\n"
+" notify: display notify levels for all open buffers\n"
+"localvar: display local variables for current buffer\n"
+" scroll: scroll in history (may be relative, and may end by a letter: "
+"s=sec, m=min, h=hour, d=day, M=month, y=year); if there is only letter, then "
+"scroll to beginning of this item\n"
"\n"
-" number: jump to buffer by number\n"
+" number: jump to buffer by number\n"
"server,\n"
-"channel: jump to buffer by server and/or channel name\n"
+" channel: jump to buffer by server and/or channel name\n"
"\n"
"Examples:\n"
"clear current buffer: /buffer clear\n"
diff --git a/po/es.po b/po/es.po
index a001ff3ae..64be63753 100644
--- a/po/es.po
+++ b/po/es.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.2.7-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2008-10-23 18:35+0200\n"
+"POT-Creation-Date: 2008-10-24 12:58+0200\n"
"PO-Revision-Date: 2007-09-19 12:09+0200\n"
"Last-Translator: Roberto González Cardenete \n"
"Language-Team: weechat-dev \n"
@@ -215,6 +215,14 @@ msgstr ""
msgid "Notify levels:"
msgstr "Niveles de notificación:"
+#, fuzzy, c-format
+msgid "Local variables for buffer \"%s\":"
+msgstr "fecha y hora para las búfers"
+
+#, c-format
+msgid "No local variable defined for buffer \"%s\""
+msgstr ""
+
#, fuzzy, c-format
msgid "%sPlugin \"%s\" not found"
msgstr "%s dirección \"%s\" no encontrada\n"
@@ -720,20 +728,21 @@ msgstr "[acción [argumentos] | número | [[servidor] [canal]]]"
#, fuzzy
msgid ""
-" action: action to do:\n"
-" clear: clear buffer content (-all for all buffers, number for a buffer, or "
-"nothing for current buffer)\n"
-" move: move buffer in the list (may be relative, for example -1)\n"
-" close: close buffer\n"
-" list: list buffers (no parameter implies this list)\n"
-" notify: display notify levels for all open buffers\n"
-" scroll: scroll in history (may be relative, and may end by a letter: s=sec, "
-"m=min, h=hour, d=day, M=month, y=year); if there is only letter, then scroll "
-"to beginning of this item\n"
+" action: action to do:\n"
+" clear: clear buffer content (-all for all buffers, number for a buffer, "
+"or nothing for current buffer)\n"
+" move: move buffer in the list (may be relative, for example -1)\n"
+" close: close buffer\n"
+" list: list buffers (no parameter implies this list)\n"
+" notify: display notify levels for all open buffers\n"
+"localvar: display local variables for current buffer\n"
+" scroll: scroll in history (may be relative, and may end by a letter: "
+"s=sec, m=min, h=hour, d=day, M=month, y=year); if there is only letter, then "
+"scroll to beginning of this item\n"
"\n"
-" number: jump to buffer by number\n"
+" number: jump to buffer by number\n"
"server,\n"
-"channel: jump to buffer by server and/or channel name\n"
+" channel: jump to buffer by server and/or channel name\n"
"\n"
"Examples:\n"
"clear current buffer: /buffer clear\n"
diff --git a/po/fr.po b/po/fr.po
index fab5e67fa..0af94f1d4 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.2.7-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2008-10-23 18:35+0200\n"
+"POT-Creation-Date: 2008-10-24 12:58+0200\n"
"PO-Revision-Date: 2008-10-23 18:38+0200\n"
"Last-Translator: FlashCode \n"
"Language-Team: weechat-dev \n"
@@ -209,6 +209,14 @@ msgstr "%sErreur: le tampon principal de WeeChat ne peut pas être fermé"
msgid "Notify levels:"
msgstr "Niveaux de notification:"
+#, c-format
+msgid "Local variables for buffer \"%s\":"
+msgstr "Variables locales pour le tampon \"%s\" :"
+
+#, c-format
+msgid "No local variable defined for buffer \"%s\""
+msgstr "Pas de variable locale définie pour le tampon \"%s\""
+
#, c-format
msgid "%sPlugin \"%s\" not found"
msgstr "%sExtension \"%s\" non trouvée"
@@ -718,20 +726,21 @@ msgid "[action [args] | number | [[server] [channel]]]"
msgstr "[action [args] | nombre | [[serveur] [canal]]]"
msgid ""
-" action: action to do:\n"
-" clear: clear buffer content (-all for all buffers, number for a buffer, or "
-"nothing for current buffer)\n"
-" move: move buffer in the list (may be relative, for example -1)\n"
-" close: close buffer\n"
-" list: list buffers (no parameter implies this list)\n"
-" notify: display notify levels for all open buffers\n"
-" scroll: scroll in history (may be relative, and may end by a letter: s=sec, "
-"m=min, h=hour, d=day, M=month, y=year); if there is only letter, then scroll "
-"to beginning of this item\n"
+" action: action to do:\n"
+" clear: clear buffer content (-all for all buffers, number for a buffer, "
+"or nothing for current buffer)\n"
+" move: move buffer in the list (may be relative, for example -1)\n"
+" close: close buffer\n"
+" list: list buffers (no parameter implies this list)\n"
+" notify: display notify levels for all open buffers\n"
+"localvar: display local variables for current buffer\n"
+" scroll: scroll in history (may be relative, and may end by a letter: "
+"s=sec, m=min, h=hour, d=day, M=month, y=year); if there is only letter, then "
+"scroll to beginning of this item\n"
"\n"
-" number: jump to buffer by number\n"
+" number: jump to buffer by number\n"
"server,\n"
-"channel: jump to buffer by server and/or channel name\n"
+" channel: jump to buffer by server and/or channel name\n"
"\n"
"Examples:\n"
"clear current buffer: /buffer clear\n"
@@ -746,21 +755,22 @@ msgid ""
" scroll 20 msgs up: /buffer scroll -20\n"
" jump to #weechat: /buffer #weechat"
msgstr ""
-" action: action à effectuer:\n"
-" clear: efface le contenu du tampon (-all pour tous les tampons, un numéro "
+" action: action à effectuer:\n"
+" clear: efface le contenu du tampon (-all pour tous les tampons, un numéro "
"pour un tampon, ou rien pour le tampon courant)\n"
-" move: déplace le tampon dans la liste (peut être relatif, par exemple -"
+" move: déplace le tampon dans la liste (peut être relatif, par exemple -"
"1)\n"
-" close: ferme le tampon\n"
-" list: liste les tampons ouverts (pas de paramètre affiche cette liste)\n"
-" notify: affiche les niveaux de notification pour tous les tampons ouverts\n"
-" scroll: fait défiler l'historique (peut être relatif, et peut se terminer "
+" close: ferme le tampon\n"
+" list: liste les tampons ouverts (pas de paramètre affiche cette liste)\n"
+" notify: affiche les niveaux de notification pour tous les tampons ouverts\n"
+"localvar: affiche la liste des variables locales pour le tampon courant\n"
+" scroll: fait défiler l'historique (peut être relatif, et peut se terminer "
"par une lettre: s=sec, m=min, h=heure, d=jour, M=mois, y=année); s'il y a "
"seulement une lettre, alors fait défiler jusqu'au début de cet élément\n"
"\n"
-" nombre: saute au tampon qui a ce numéro\n"
+" nombre: saute au tampon qui a ce numéro\n"
"serveur,\n"
-" canal: saute au tampon par serveur et/ou nom de canal\n"
+" canal: saute au tampon par serveur et/ou nom de canal\n"
"\n"
"Exemples:\n"
" déplacer tampon: /buffer move 5\n"
diff --git a/po/hu.po b/po/hu.po
index 24840ac3a..08c97cb00 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -12,7 +12,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.2.7-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2008-10-23 18:35+0200\n"
+"POT-Creation-Date: 2008-10-24 12:58+0200\n"
"PO-Revision-Date: 2007-10-10 18:07+0200\n"
"Last-Translator: Andras Voroskoi \n"
"Language-Team: weechat-dev \n"
@@ -220,6 +220,14 @@ msgstr ""
msgid "Notify levels:"
msgstr "Értesítési szintek:"
+#, fuzzy, c-format
+msgid "Local variables for buffer \"%s\":"
+msgstr "a pufferek időbélyege"
+
+#, c-format
+msgid "No local variable defined for buffer \"%s\""
+msgstr ""
+
#, fuzzy, c-format
msgid "%sPlugin \"%s\" not found"
msgstr "%s cím \"%s\" nem található\n"
@@ -724,20 +732,21 @@ msgstr "[utasítás[argumentumok] | szám | [[szerver] [szoba]]]"
#, fuzzy
msgid ""
-" action: action to do:\n"
-" clear: clear buffer content (-all for all buffers, number for a buffer, or "
-"nothing for current buffer)\n"
-" move: move buffer in the list (may be relative, for example -1)\n"
-" close: close buffer\n"
-" list: list buffers (no parameter implies this list)\n"
-" notify: display notify levels for all open buffers\n"
-" scroll: scroll in history (may be relative, and may end by a letter: s=sec, "
-"m=min, h=hour, d=day, M=month, y=year); if there is only letter, then scroll "
-"to beginning of this item\n"
+" action: action to do:\n"
+" clear: clear buffer content (-all for all buffers, number for a buffer, "
+"or nothing for current buffer)\n"
+" move: move buffer in the list (may be relative, for example -1)\n"
+" close: close buffer\n"
+" list: list buffers (no parameter implies this list)\n"
+" notify: display notify levels for all open buffers\n"
+"localvar: display local variables for current buffer\n"
+" scroll: scroll in history (may be relative, and may end by a letter: "
+"s=sec, m=min, h=hour, d=day, M=month, y=year); if there is only letter, then "
+"scroll to beginning of this item\n"
"\n"
-" number: jump to buffer by number\n"
+" number: jump to buffer by number\n"
"server,\n"
-"channel: jump to buffer by server and/or channel name\n"
+" channel: jump to buffer by server and/or channel name\n"
"\n"
"Examples:\n"
"clear current buffer: /buffer clear\n"
diff --git a/po/ru.po b/po/ru.po
index b53f43d7e..2c9479e16 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.2.7-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2008-10-23 18:35+0200\n"
+"POT-Creation-Date: 2008-10-24 12:58+0200\n"
"PO-Revision-Date: 2007-09-06 12:44+0200\n"
"Last-Translator: Pavel Shevchuk \n"
"Language-Team: weechat-dev \n"
@@ -216,6 +216,14 @@ msgstr ""
msgid "Notify levels:"
msgstr "Уровни уведомления:"
+#, fuzzy, c-format
+msgid "Local variables for buffer \"%s\":"
+msgstr "время в буферах"
+
+#, c-format
+msgid "No local variable defined for buffer \"%s\""
+msgstr ""
+
#, fuzzy, c-format
msgid "%sPlugin \"%s\" not found"
msgstr "%s адрес \"%s\" не найден\n"
@@ -718,20 +726,21 @@ msgstr "[действие [аргументы] | номер | [[сервер] [
#, fuzzy
msgid ""
-" action: action to do:\n"
-" clear: clear buffer content (-all for all buffers, number for a buffer, or "
-"nothing for current buffer)\n"
-" move: move buffer in the list (may be relative, for example -1)\n"
-" close: close buffer\n"
-" list: list buffers (no parameter implies this list)\n"
-" notify: display notify levels for all open buffers\n"
-" scroll: scroll in history (may be relative, and may end by a letter: s=sec, "
-"m=min, h=hour, d=day, M=month, y=year); if there is only letter, then scroll "
-"to beginning of this item\n"
+" action: action to do:\n"
+" clear: clear buffer content (-all for all buffers, number for a buffer, "
+"or nothing for current buffer)\n"
+" move: move buffer in the list (may be relative, for example -1)\n"
+" close: close buffer\n"
+" list: list buffers (no parameter implies this list)\n"
+" notify: display notify levels for all open buffers\n"
+"localvar: display local variables for current buffer\n"
+" scroll: scroll in history (may be relative, and may end by a letter: "
+"s=sec, m=min, h=hour, d=day, M=month, y=year); if there is only letter, then "
+"scroll to beginning of this item\n"
"\n"
-" number: jump to buffer by number\n"
+" number: jump to buffer by number\n"
"server,\n"
-"channel: jump to buffer by server and/or channel name\n"
+" channel: jump to buffer by server and/or channel name\n"
"\n"
"Examples:\n"
"clear current buffer: /buffer clear\n"
diff --git a/po/weechat.pot b/po/weechat.pot
index d088a7c62..8444b7c9e 100644
--- a/po/weechat.pot
+++ b/po/weechat.pot
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2008-10-23 18:35+0200\n"
+"POT-Creation-Date: 2008-10-24 12:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -190,6 +190,14 @@ msgstr ""
msgid "Notify levels:"
msgstr ""
+#, c-format
+msgid "Local variables for buffer \"%s\":"
+msgstr ""
+
+#, c-format
+msgid "No local variable defined for buffer \"%s\""
+msgstr ""
+
#, c-format
msgid "%sPlugin \"%s\" not found"
msgstr ""
@@ -636,20 +644,21 @@ msgid "[action [args] | number | [[server] [channel]]]"
msgstr ""
msgid ""
-" action: action to do:\n"
-" clear: clear buffer content (-all for all buffers, number for a buffer, or "
-"nothing for current buffer)\n"
-" move: move buffer in the list (may be relative, for example -1)\n"
-" close: close buffer\n"
-" list: list buffers (no parameter implies this list)\n"
-" notify: display notify levels for all open buffers\n"
-" scroll: scroll in history (may be relative, and may end by a letter: s=sec, "
-"m=min, h=hour, d=day, M=month, y=year); if there is only letter, then scroll "
-"to beginning of this item\n"
+" action: action to do:\n"
+" clear: clear buffer content (-all for all buffers, number for a buffer, "
+"or nothing for current buffer)\n"
+" move: move buffer in the list (may be relative, for example -1)\n"
+" close: close buffer\n"
+" list: list buffers (no parameter implies this list)\n"
+" notify: display notify levels for all open buffers\n"
+"localvar: display local variables for current buffer\n"
+" scroll: scroll in history (may be relative, and may end by a letter: "
+"s=sec, m=min, h=hour, d=day, M=month, y=year); if there is only letter, then "
+"scroll to beginning of this item\n"
"\n"
-" number: jump to buffer by number\n"
+" number: jump to buffer by number\n"
"server,\n"
-"channel: jump to buffer by server and/or channel name\n"
+" channel: jump to buffer by server and/or channel name\n"
"\n"
"Examples:\n"
"clear current buffer: /buffer clear\n"
diff --git a/src/core/wee-command.c b/src/core/wee-command.c
index a36fdacf5..914cb9717 100644
--- a/src/core/wee-command.c
+++ b/src/core/wee-command.c
@@ -478,6 +478,7 @@ command_buffer (void *data, struct t_gui_buffer *buffer,
int argc, char **argv, char **argv_eol)
{
struct t_gui_buffer *ptr_buffer;
+ struct t_gui_buffer_local_var *ptr_local_var;
long number;
char *error, *value;
int i, target_buffer;
@@ -594,7 +595,7 @@ command_buffer (void *data, struct t_gui_buffer *buffer,
return WEECHAT_RC_OK;
}
- /* display/change buffer notify */
+ /* display buffer notify */
if (string_strcasecmp (argv[1], "notify") == 0)
{
/* display notify level for all buffers */
@@ -615,6 +616,31 @@ command_buffer (void *data, struct t_gui_buffer *buffer,
return WEECHAT_RC_OK;
}
+ /* display local variables on buffer */
+ if (string_strcasecmp (argv[1], "localvar") == 0)
+ {
+ if (buffer->local_variables)
+ {
+ gui_chat_printf (NULL, "");
+ gui_chat_printf (NULL, _("Local variables for buffer \"%s\":"),
+ buffer->name);
+ for (ptr_local_var = buffer->local_variables; ptr_local_var;
+ ptr_local_var = ptr_local_var->next_var)
+ {
+ gui_chat_printf (NULL,
+ " %s: \"%s\"",
+ ptr_local_var->name,
+ ptr_local_var->value);
+ }
+ }
+ else
+ {
+ gui_chat_printf (NULL, _("No local variable defined for buffer \"%s\""),
+ buffer->name);
+ }
+ return WEECHAT_RC_OK;
+ }
+
/* set a property on buffer */
if (string_strcasecmp (argv[1], "set") == 0)
{
@@ -634,7 +660,7 @@ command_buffer (void *data, struct t_gui_buffer *buffer,
return WEECHAT_RC_OK;
}
-
+
/* relative jump '-' */
if (argv[1][0] == '-')
{
@@ -2931,21 +2957,22 @@ command_init ()
hook_command (NULL, "buffer",
N_("manage buffers"),
N_("[action [args] | number | [[server] [channel]]]"),
- N_(" action: action to do:\n"
- " clear: clear buffer content (-all for all buffers, "
+ N_(" action: action to do:\n"
+ " clear: clear buffer content (-all for all buffers, "
"number for a buffer, or nothing for current buffer)\n"
- " move: move buffer in the list (may be relative, for "
+ " move: move buffer in the list (may be relative, for "
"example -1)\n"
- " close: close buffer\n"
- " list: list buffers (no parameter implies this list)\n"
- " notify: display notify levels for all open buffers\n"
- " scroll: scroll in history (may be relative, and may "
+ " close: close buffer\n"
+ " list: list buffers (no parameter implies this list)\n"
+ " notify: display notify levels for all open buffers\n"
+ "localvar: display local variables for current buffer\n"
+ " scroll: scroll in history (may be relative, and may "
"end by a letter: s=sec, m=min, h=hour, d=day, M=month, "
"y=year); if there is only letter, then scroll to "
"beginning of this item\n\n"
- " number: jump to buffer by number\n"
+ " number: jump to buffer by number\n"
"server,\n"
- "channel: jump to buffer by server and/or channel name\n\n"
+ " channel: jump to buffer by server and/or channel name\n\n"
"Examples:\n"
"clear current buffer: /buffer clear\n"
" clear all buffers: /buffer clear -all\n"
@@ -2958,7 +2985,7 @@ command_init ()
" scroll 15 min down: /buffer scroll +15m\n"
" scroll 20 msgs up: /buffer scroll -20\n"
" jump to #weechat: /buffer #weechat"),
- "clear|move|close|list|notify|scroll|set|%b %b",
+ "clear|move|close|list|notify|localvar|scroll|set|%b %b",
&command_buffer, NULL);
hook_command (NULL, "command",
N_("launch explicit WeeChat or plugin command"),
diff --git a/src/gui/gui-buffer.c b/src/gui/gui-buffer.c
index 1d779764f..25776bef7 100644
--- a/src/gui/gui-buffer.c
+++ b/src/gui/gui-buffer.c
@@ -242,6 +242,10 @@ gui_buffer_new (struct t_weechat_plugin *plugin,
new_buffer->keys = NULL;
new_buffer->last_key = NULL;
+ /* local variables */
+ new_buffer->local_variables = NULL;
+ new_buffer->last_local_var = NULL;
+
/* add buffer to buffers list */
gui_buffer_insert (new_buffer);
@@ -295,6 +299,195 @@ gui_buffer_valid (struct t_gui_buffer *buffer)
return 0;
}
+/*
+ * gui_buffer_local_var_search: search a local variable with name
+ */
+
+struct t_gui_buffer_local_var *
+gui_buffer_local_var_search (struct t_gui_buffer *buffer, const char *name)
+{
+ struct t_gui_buffer_local_var *ptr_local_var;
+
+ if (!buffer || !name)
+ return NULL;
+
+ for (ptr_local_var = buffer->local_variables; ptr_local_var;
+ ptr_local_var = ptr_local_var->next_var)
+ {
+ if (strcmp (ptr_local_var->name, name) == 0)
+ return ptr_local_var;
+ }
+
+ /* local variable not found */
+ return NULL;
+}
+
+
+/*
+ * gui_buffer_local_var_add: add a new local variable to a buffer
+ */
+
+struct t_gui_buffer_local_var *
+gui_buffer_local_var_add (struct t_gui_buffer *buffer, const char *name,
+ const char *value)
+{
+ struct t_gui_buffer_local_var *new_local_var;
+
+ if (!buffer || !name || !value)
+ return NULL;
+
+ new_local_var = gui_buffer_local_var_search (buffer, name);
+ if (new_local_var)
+ {
+ if (new_local_var->name)
+ free (new_local_var->name);
+ if (new_local_var->value)
+ free (new_local_var->value);
+ new_local_var->name = strdup (name);
+ new_local_var->value = strdup (value);
+ }
+ else
+ {
+ new_local_var = malloc (sizeof (*new_local_var));
+ if (new_local_var)
+ {
+ new_local_var->name = strdup (name);
+ new_local_var->value = strdup (value);
+
+ new_local_var->prev_var = buffer->last_local_var;
+ new_local_var->next_var = NULL;
+ if (buffer->local_variables)
+ buffer->last_local_var->next_var = new_local_var;
+ else
+ buffer->local_variables = new_local_var;
+ buffer->last_local_var = new_local_var;
+ }
+ }
+
+ return new_local_var;
+}
+
+/*
+ * gui_buffer_local_var_remove: remove a local variable in a buffer
+ */
+
+void
+gui_buffer_local_var_remove (struct t_gui_buffer *buffer,
+ struct t_gui_buffer_local_var *local_var)
+{
+ if (!buffer || !local_var)
+ return;
+
+ /* free data */
+ if (local_var->name)
+ free (local_var->name);
+ if (local_var->value)
+ free (local_var->value);
+
+ /* remove local variable from list */
+ if (local_var->prev_var)
+ (local_var->prev_var)->next_var = local_var->next_var;
+ if (local_var->next_var)
+ (local_var->next_var)->prev_var = local_var->prev_var;
+ if (buffer->local_variables == local_var)
+ buffer->local_variables = local_var->next_var;
+ if (buffer->last_local_var == local_var)
+ buffer->last_local_var = local_var->prev_var;
+}
+
+/*
+ * gui_buffer_local_var_remove_all: remove all local variables in a buffer
+ */
+
+void
+gui_buffer_local_var_remove_all (struct t_gui_buffer *buffer)
+{
+ if (buffer)
+ {
+ while (buffer->local_variables)
+ {
+ gui_buffer_local_var_remove (buffer, buffer->local_variables);
+ }
+ }
+}
+
+/*
+ * gui_buffer_string_replace_local_var: replace local variables ($var) in a
+ * string, using value of local variables
+ */
+
+char *
+gui_buffer_string_replace_local_var (struct t_gui_buffer *buffer,
+ const char *string)
+{
+ int length, length_var, index_string, index_result;
+ char *result, *local_var;
+ const char *pos_end_name;
+ struct t_gui_buffer_local_var *ptr_local_var;
+
+ length = strlen (string) + 1;
+ result = malloc (length);
+ if (result)
+ {
+ index_string = 0;
+ index_result = 0;
+ while (string[index_string])
+ {
+ if ((string[index_string] == '$')
+ && ((index_string == 0) || (string[index_string - 1] != '\\')))
+ {
+ pos_end_name = string + index_string + 1;
+ while (pos_end_name[0])
+ {
+ if (isalnum (pos_end_name[0])
+ && (pos_end_name[0] != '_')
+ && (pos_end_name[0] != '$'))
+ pos_end_name++;
+ else
+ break;
+ }
+ if (pos_end_name > string + index_string + 1)
+ {
+ local_var = string_strndup (string + index_string + 1,
+ pos_end_name - (string + index_string + 1));
+ if (local_var)
+ {
+ ptr_local_var = gui_buffer_local_var_search (buffer,
+ local_var);
+ if (ptr_local_var)
+ {
+ length_var = strlen (ptr_local_var->value);
+ length += length_var;
+ result = realloc (result, length);
+ if (!result)
+ {
+ free (local_var);
+ return NULL;
+ }
+ strcpy (result + index_result, ptr_local_var->value);
+ index_result += length_var;
+ index_string += strlen (local_var) + 1;
+ }
+ else
+ result[index_result++] = string[index_string++];
+
+ free (local_var);
+ }
+ else
+ result[index_result++] = string[index_string++];
+ }
+ else
+ result[index_result++] = string[index_string++];
+ }
+ else
+ result[index_result++] = string[index_string++];
+ }
+ result[index_result] = '\0';
+ }
+
+ return result;
+}
+
/*
* gui_buffer_set_plugin_for_upgrade: set plugin pointer for buffers with a
* given name (used after /upgrade)
@@ -346,6 +539,8 @@ gui_buffer_get_integer (struct t_gui_buffer *buffer, const char *property)
char *
gui_buffer_get_string (struct t_gui_buffer *buffer, const char *property)
{
+ struct t_gui_buffer_local_var *ptr_local_var;
+
if (buffer && property)
{
if (string_strcasecmp (property, "plugin") == 0)
@@ -356,6 +551,12 @@ gui_buffer_get_string (struct t_gui_buffer *buffer, const char *property)
return buffer->short_name;
else if (string_strcasecmp (property, "title") == 0)
return buffer->title;
+ else if (string_strncasecmp (property, "localvar_", 9) == 0)
+ {
+ ptr_local_var = gui_buffer_local_var_search (buffer, property + 9);
+ if (ptr_local_var)
+ return ptr_local_var->value;
+ }
}
return NULL;
@@ -575,6 +776,7 @@ gui_buffer_set (struct t_gui_buffer *buffer, const char *property,
{
long number;
char *error;
+ struct t_gui_buffer_local_var *ptr_local_var;
if (!property || !value)
return;
@@ -686,6 +888,17 @@ gui_buffer_set (struct t_gui_buffer *buffer, const char *property,
gui_input_text_changed_signal ();
gui_buffer_ask_input_refresh (buffer, 1);
}
+ else if (string_strncasecmp (property, "localvar_set_", 13) == 0)
+ {
+ if (value)
+ gui_buffer_local_var_add (buffer, property + 13, value);
+ }
+ else if (string_strncasecmp (property, "localvar_del_", 13) == 0)
+ {
+ ptr_local_var = gui_buffer_local_var_search (buffer, property + 13);
+ if (ptr_local_var)
+ gui_buffer_local_var_remove (buffer, ptr_local_var);
+ }
}
/*
@@ -1021,6 +1234,7 @@ gui_buffer_close (struct t_gui_buffer *buffer, int switch_to_another)
if (buffer->highlight_tags_array)
string_free_exploded (buffer->highlight_tags_array);
gui_keyboard_free_all (&buffer->keys, &buffer->last_key);
+ gui_buffer_local_var_remove_all (buffer);
/* remove buffer from buffers list */
if (buffer->prev_buffer)
@@ -1220,8 +1434,9 @@ gui_buffer_add_to_infolist (struct t_infolist *infolist,
{
struct t_infolist_item *ptr_item;
struct t_gui_key *ptr_key;
- char option_name[32];
- int i;
+ struct t_gui_buffer_local_var *ptr_local_var;
+ char option_name[32], *var_name;
+ int i, length;
if (!infolist || !buffer)
return 0;
@@ -1278,6 +1493,23 @@ gui_buffer_add_to_infolist (struct t_infolist *infolist,
if (!infolist_new_var_string (ptr_item, option_name, ptr_key->command))
return 0;
}
+ for (ptr_local_var = buffer->local_variables; ptr_local_var;
+ ptr_local_var = ptr_local_var->next_var)
+ {
+ length = strlen (ptr_local_var->name) + 16 + 1;
+ var_name = malloc (length);
+ if (var_name)
+ {
+ snprintf (var_name, length, "localvar_%s", ptr_local_var->name);
+ if (!infolist_new_var_string (ptr_item, var_name,
+ ptr_local_var->value))
+ {
+ free (var_name);
+ return 0;
+ }
+ free (var_name);
+ }
+ }
return 1;
}
@@ -1420,6 +1652,7 @@ void
gui_buffer_print_log ()
{
struct t_gui_buffer *ptr_buffer;
+ struct t_gui_buffer_local_var *ptr_local_var;
struct t_gui_line *ptr_line;
char *tags;
int num;
@@ -1481,11 +1714,7 @@ gui_buffer_print_log ()
log_printf (" last_key . . . . . . . : 0x%x", ptr_buffer->last_key);
log_printf (" prev_buffer. . . . . . : 0x%x", ptr_buffer->prev_buffer);
log_printf (" next_buffer. . . . . . : 0x%x", ptr_buffer->next_buffer);
-
- log_printf ("");
- log_printf (" => nicklist_root (addr:0x%x):", ptr_buffer->nicklist_root);
- gui_nicklist_print_log (ptr_buffer->nicklist_root, 0);
-
+
if (ptr_buffer->keys)
{
log_printf ("");
@@ -1493,6 +1722,26 @@ gui_buffer_print_log ()
ptr_buffer->keys, ptr_buffer->last_key);
gui_keyboard_print_log (ptr_buffer);
}
+
+ if (ptr_buffer->local_variables)
+ {
+ log_printf ("");
+ log_printf (" => local_variables = 0x%x, last_local_var = 0x%x:",
+ ptr_buffer->local_variables, ptr_buffer->last_local_var);
+ for (ptr_local_var = ptr_buffer->local_variables; ptr_local_var;
+ ptr_local_var = ptr_local_var->next_var)
+ {
+ log_printf ("");
+ log_printf (" [local variable (addr:0x%x)]",
+ ptr_local_var);
+ log_printf (" name . . . . . . . : '%s'", ptr_local_var->name);
+ log_printf (" value. . . . . . . : '%s'", ptr_local_var->value);
+ }
+ }
+
+ log_printf ("");
+ log_printf (" => nicklist_root (addr:0x%x):", ptr_buffer->nicklist_root);
+ gui_nicklist_print_log (ptr_buffer->nicklist_root, 0);
log_printf ("");
log_printf (" => last 100 lines:");
diff --git a/src/gui/gui-buffer.h b/src/gui/gui-buffer.h
index 9e9b0bfe4..050f463e6 100644
--- a/src/gui/gui-buffer.h
+++ b/src/gui/gui-buffer.h
@@ -66,6 +66,14 @@ struct t_gui_line
struct t_gui_line *next_line; /* link to next line */
};
+struct t_gui_buffer_local_var
+{
+ char *name; /* variable name */
+ char *value; /* value */
+ struct t_gui_buffer_local_var *prev_var; /* link to previous variable */
+ struct t_gui_buffer_local_var *next_var; /* link to next variable */
+};
+
struct t_gui_buffer
{
struct t_weechat_plugin *plugin; /* plugin which created this buffer */
@@ -154,6 +162,10 @@ struct t_gui_buffer
struct t_gui_key *keys; /* keys specific to buffer */
struct t_gui_key *last_key; /* last key for buffer */
+ /* local variables */
+ struct t_gui_buffer_local_var *local_variables; /* local variables */
+ struct t_gui_buffer_local_var *last_local_var; /* last local variable */
+
/* link to previous/next buffer */
struct t_gui_buffer *prev_buffer; /* link to previous buffer */
struct t_gui_buffer *next_buffer; /* link to next buffer */
@@ -178,6 +190,8 @@ extern struct t_gui_buffer *gui_buffer_new (struct t_weechat_plugin *plugin,
struct t_gui_buffer *buffer),
void *close_callback_data);
extern int gui_buffer_valid (struct t_gui_buffer *buffer);
+extern char *gui_buffer_string_replace_local_var (struct t_gui_buffer *buffer,
+ const char *string);
extern void gui_buffer_set_plugin_for_upgrade (char *name,
struct t_weechat_plugin *plugin);
extern int gui_buffer_get_integer (struct t_gui_buffer *buffer,
diff --git a/src/plugins/alias/alias.c b/src/plugins/alias/alias.c
index 1c1a80c56..3fbf012e0 100644
--- a/src/plugins/alias/alias.c
+++ b/src/plugins/alias/alias.c
@@ -212,6 +212,23 @@ alias_replace_args (const char *alias_args, const char *user_args)
return res;
}
+/*
+ * alias_run_command: replace local buffer variables in string, then run
+ * command on buffer
+ */
+
+void
+alias_run_command (struct t_gui_buffer *buffer, const char *command)
+{
+ char *string;
+
+ string = weechat_buffer_string_replace_local_var (buffer, command);
+ weechat_command (buffer,
+ (string) ? string : command);
+ if (string)
+ free (string);
+}
+
/*
* alias_cb: callback for alias (called when user uses an alias)
*/
@@ -226,7 +243,6 @@ alias_cb (void *data, struct t_gui_buffer *buffer, int argc, char **argv,
int some_args_replaced, length1, length2;
/* make C compiler happy */
- (void) buffer;
(void) argc;
(void) argv;
@@ -260,7 +276,7 @@ alias_cb (void *data, struct t_gui_buffer *buffer, int argc, char **argv,
{
some_args_replaced = 1;
if (*ptr_cmd[0] == '/')
- weechat_command (weechat_current_buffer, args_replaced);
+ alias_run_command (buffer, args_replaced);
else
{
alias_command = malloc (1 + strlen(args_replaced) + 1);
@@ -268,7 +284,7 @@ alias_cb (void *data, struct t_gui_buffer *buffer, int argc, char **argv,
{
strcpy (alias_command, "/");
strcat (alias_command, args_replaced);
- weechat_command (weechat_current_buffer, alias_command);
+ alias_run_command (buffer, alias_command);
free (alias_command);
}
}
@@ -295,16 +311,14 @@ alias_cb (void *data, struct t_gui_buffer *buffer, int argc, char **argv,
strcat (alias_command, " ");
strcat (alias_command, argv_eol[1]);
- weechat_command (weechat_current_buffer,
- alias_command);
+ alias_run_command (buffer, alias_command);
free (alias_command);
}
}
else
{
if (*ptr_cmd[0] == '/')
- (void) weechat_command(weechat_current_buffer,
- *ptr_cmd);
+ alias_run_command (buffer, *ptr_cmd);
else
{
alias_command = malloc (1 + strlen (*ptr_cmd) + 1);
@@ -312,8 +326,7 @@ alias_cb (void *data, struct t_gui_buffer *buffer, int argc, char **argv,
{
strcpy (alias_command, "/");
strcat (alias_command, *ptr_cmd);
- weechat_command (weechat_current_buffer,
- alias_command);
+ alias_run_command (buffer, alias_command);
free (alias_command);
}
}
@@ -706,6 +719,7 @@ alias_command_cb (void *data, struct t_gui_buffer *buffer, int argc,
{
char *alias_name;
struct t_alias *ptr_alias;
+ struct t_config_option *ptr_option;
/* make C compiler happy */
(void) data;
@@ -728,6 +742,11 @@ alias_command_cb (void *data, struct t_gui_buffer *buffer, int argc,
}
/* create config option */
+ ptr_option = weechat_config_search_option (alias_config_file,
+ alias_config_section_cmd,
+ alias_name);
+ if (ptr_option)
+ weechat_config_option_free (ptr_option);
weechat_config_new_option (
alias_config_file, alias_config_section_cmd,
alias_name, "string", NULL,
diff --git a/src/plugins/irc/irc-channel.c b/src/plugins/irc/irc-channel.c
index 2c015ed57..0d2debba5 100644
--- a/src/plugins/irc/irc-channel.c
+++ b/src/plugins/irc/irc-channel.c
@@ -97,6 +97,9 @@ irc_channel_new (struct t_irc_server *server, int channel_type,
}
weechat_buffer_set (new_buffer, "short_name", channel_name);
+ weechat_buffer_set (new_buffer, "localvar_set_nick", server->nick);
+ weechat_buffer_set (new_buffer, "localvar_set_server", server->name);
+ weechat_buffer_set (new_buffer, "localvar_set_channel", channel_name);
weechat_hook_signal_send ("logger_backlog",
WEECHAT_HOOK_SIGNAL_POINTER, new_buffer);
diff --git a/src/plugins/irc/irc-command.c b/src/plugins/irc/irc-command.c
index c962ba206..a8892592f 100644
--- a/src/plugins/irc/irc-command.c
+++ b/src/plugins/irc/irc-command.c
@@ -3138,6 +3138,8 @@ irc_command_server (void *data, struct t_gui_buffer *buffer, int argc,
}
weechat_buffer_set (irc_current_server->buffer, "short_name",
irc_current_server->name);
+ weechat_buffer_set (irc_current_server->buffer, "localvar_set_server",
+ irc_current_server->name);
weechat_bar_item_update ("buffer_name");
weechat_bar_item_update ("input_prompt");
return WEECHAT_RC_OK;
diff --git a/src/plugins/irc/irc-server.c b/src/plugins/irc/irc-server.c
index 998856a5e..4f9ea7916 100644
--- a/src/plugins/irc/irc-server.c
+++ b/src/plugins/irc/irc-server.c
@@ -300,12 +300,22 @@ irc_server_set_with_option (struct t_irc_server *server,
void
irc_server_set_nick (struct t_irc_server *server, const char *nick)
{
+ struct t_irc_channel *ptr_channel;
+
if (server->nick)
free (server->nick);
server->nick = (nick) ? strdup (nick) : NULL;
weechat_buffer_set (server->buffer, "highlight_words", nick);
+ /* set local variable "nick" for server and all channels/pv */
+ weechat_buffer_set (server->buffer, "localvar_set_nick", nick);
+ for (ptr_channel = server->channels; ptr_channel;
+ ptr_channel = ptr_channel->next_channel)
+ {
+ weechat_buffer_set (ptr_channel->buffer, "localvar_set_nick", nick);
+ }
+
weechat_bar_item_update ("input_prompt");
}
@@ -2180,6 +2190,7 @@ irc_server_connect (struct t_irc_server *server, int disable_autojoin)
}
weechat_buffer_set (server->buffer, "short_name", server->name);
+ weechat_buffer_set (server->buffer, "localvar_set_server", server->name);
weechat_buffer_set (server->buffer, "display", "1");
diff --git a/src/plugins/plugin.c b/src/plugins/plugin.c
index 0afd2192d..81ef8375c 100644
--- a/src/plugins/plugin.c
+++ b/src/plugins/plugin.c
@@ -415,6 +415,7 @@ plugin_load (const char *filename)
new_plugin->buffer_get_pointer = &gui_buffer_get_pointer;
new_plugin->buffer_set = &gui_buffer_set;
new_plugin->buffer_set_pointer = &gui_buffer_set_pointer;
+ new_plugin->buffer_string_replace_local_var = &gui_buffer_string_replace_local_var;
new_plugin->window_get_integer = &gui_window_get_integer;
new_plugin->window_get_string = &gui_window_get_string;
diff --git a/src/plugins/weechat-plugin.h b/src/plugins/weechat-plugin.h
index 4536acf2d..f39e04216 100644
--- a/src/plugins/weechat-plugin.h
+++ b/src/plugins/weechat-plugin.h
@@ -423,6 +423,8 @@ struct t_weechat_plugin
const char *value);
void (*buffer_set_pointer) (struct t_gui_buffer *buffer,
const char *property, void *pointer);
+ char *(*buffer_string_replace_local_var) (struct t_gui_buffer *buffer,
+ const char *string);
/* windows */
int (*window_get_integer) (struct t_gui_window *window,
@@ -912,6 +914,8 @@ extern int weechat_plugin_end (struct t_weechat_plugin *plugin);
weechat_plugin->buffer_set(__buffer, __property, __value)
#define weechat_buffer_set_pointer(__buffer, __property, __pointer) \
weechat_plugin->buffer_set_pointer(__buffer, __property, __pointer)
+#define weechat_buffer_string_replace_local_var(__buffer, __string) \
+ weechat_plugin->buffer_string_replace_local_var(__buffer, __string)
/* windows */
#define weechat_window_get_integer(__window, __property) \