summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastien Helleu <flashcode@flashtux.org>2013-03-24 13:02:26 +0100
committerSebastien Helleu <flashcode@flashtux.org>2013-03-24 13:02:26 +0100
commita08603c24c2a2b33fe8cdcb6e591ebf4cb7bd986 (patch)
tree344e827cf5bebbbad1dd6103b88df682ca69511b
parente03310cb0d187bcf73485f25e9c40893238b17af (diff)
downloadweechat-a08603c24c2a2b33fe8cdcb6e591ebf4cb7bd986.zip
irc: add option irc.look.display_join_message (task #10895)
-rw-r--r--ChangeLog1
-rw-r--r--doc/de/autogen/plugin_api/hdata.txt2
-rw-r--r--doc/de/autogen/user/irc_options.txt5
-rw-r--r--doc/de/weechat_faq.de.txt17
-rw-r--r--doc/en/autogen/plugin_api/hdata.txt2
-rw-r--r--doc/en/autogen/user/irc_options.txt5
-rw-r--r--doc/en/weechat_faq.en.txt14
-rw-r--r--doc/fr/autogen/plugin_api/hdata.txt2
-rw-r--r--doc/fr/autogen/user/irc_options.txt5
-rw-r--r--doc/fr/weechat_faq.fr.txt14
-rw-r--r--doc/it/autogen/plugin_api/hdata.txt2
-rw-r--r--doc/it/autogen/user/irc_options.txt5
-rw-r--r--doc/it/weechat_faq.it.txt17
-rw-r--r--doc/ja/autogen/plugin_api/hdata.txt2
-rw-r--r--doc/ja/autogen/user/irc_options.txt5
-rw-r--r--doc/ja/weechat_faq.ja.txt17
-rw-r--r--doc/pl/weechat_faq.pl.txt17
-rw-r--r--po/cs.po12
-rw-r--r--po/de.po12
-rw-r--r--po/es.po12
-rw-r--r--po/fr.po16
-rw-r--r--po/hu.po12
-rw-r--r--po/it.po12
-rw-r--r--po/ja.po12
-rw-r--r--po/pl.po12
-rw-r--r--po/pt_BR.po12
-rw-r--r--po/ru.po12
-rw-r--r--po/weechat.pot8
-rw-r--r--src/plugins/irc/irc-channel.c16
-rw-r--r--src/plugins/irc/irc-channel.h4
-rw-r--r--src/plugins/irc/irc-config.c71
-rw-r--r--src/plugins/irc/irc-config.h2
-rw-r--r--src/plugins/irc/irc-protocol.c350
-rw-r--r--src/plugins/irc/irc-upgrade.c19
34 files changed, 530 insertions, 196 deletions
diff --git a/ChangeLog b/ChangeLog
index 2737270cf..627131576 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -45,6 +45,7 @@ Version 0.4.1 (under dev!)
list with arguments inside), guile >= 2.0 is now required (bug #38350)
* guile: fix crash on calls to callbacks during load of script (bug #38343)
* guile: fix compilation with guile 2.0
+* irc: add option irc.look.display_join_message (task #10895)
* irc: fix default completion (like nicks) in commands /msg, /notice, /query and
/topic
* irc: fix prefix color for nick when the prefix is not in
diff --git a/doc/de/autogen/plugin_api/hdata.txt b/doc/de/autogen/plugin_api/hdata.txt
index 0727d104f..69140d35e 100644
--- a/doc/de/autogen/plugin_api/hdata.txt
+++ b/doc/de/autogen/plugin_api/hdata.txt
@@ -27,7 +27,7 @@
'modes' (string) +
'limit' (integer) +
'key' (string) +
- 'names_received' (integer) +
+ 'join_msg_received' (hashtable) +
'checking_away' (integer) +
'away_message' (string) +
'has_quit_server' (integer) +
diff --git a/doc/de/autogen/user/irc_options.txt b/doc/de/autogen/user/irc_options.txt
index 2515c1a5d..90c661a32 100644
--- a/doc/de/autogen/user/irc_options.txt
+++ b/doc/de/autogen/user/irc_options.txt
@@ -143,6 +143,11 @@
** Typ: boolesch
** Werte: on, off (Standardwert: `on`)
+* [[option_irc.look.display_join_message]] *irc.look.display_join_message*
+** Beschreibung: `comma-separated list of messages to display after joining a channel: 329 = channel creation date, 332 = topic, 333 = nick/date for topic, 366 = names on channel`
+** Typ: Zeichenkette
+** Werte: beliebige Zeichenkette (Standardwert: `"329,332,333,366"`)
+
* [[option_irc.look.display_old_topic]] *irc.look.display_old_topic*
** Beschreibung: `Zeige das alte Thema an, falls das Thema des Channels geändert wurde`
** Typ: boolesch
diff --git a/doc/de/weechat_faq.de.txt b/doc/de/weechat_faq.de.txt
index 4ff4949e5..d4e0dc7ec 100644
--- a/doc/de/weechat_faq.de.txt
+++ b/doc/de/weechat_faq.de.txt
@@ -609,7 +609,22 @@ Für weitere Hilfe: `/help filter` und `/help irc.look.smart_filter`
Wie kann ich Nachrichten filtern wenn ich einen IRC Channel betrete?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Es folgen einige Tags die man zum filtern von Nachrichten nutzen kann:
+// TRANSLATION MISSING
+With WeeChat ≥ 0.4.1, you can disable some messages with option
+'irc.look.display_join_message'.
+
+// TRANSLATION MISSING
+For example, to disable names (which is IRC message '366'):
+
+----------------------------------------
+/set irc.look.display_join_message "329,332,333"
+----------------------------------------
+
+[NOTE]
+For help: `/help irc.look.display_join_message`
+
+// TRANSLATION MISSING
+Another solution is to filter messages on tag:
* 'irc_366': Auflistung der Namen die sich im Channel befinden
* 'irc_332,irc_333': Channel Topic/Datum
diff --git a/doc/en/autogen/plugin_api/hdata.txt b/doc/en/autogen/plugin_api/hdata.txt
index e3f6d018e..bd48a5e19 100644
--- a/doc/en/autogen/plugin_api/hdata.txt
+++ b/doc/en/autogen/plugin_api/hdata.txt
@@ -27,7 +27,7 @@
'modes' (string) +
'limit' (integer) +
'key' (string) +
- 'names_received' (integer) +
+ 'join_msg_received' (hashtable) +
'checking_away' (integer) +
'away_message' (string) +
'has_quit_server' (integer) +
diff --git a/doc/en/autogen/user/irc_options.txt b/doc/en/autogen/user/irc_options.txt
index 22db79c64..a22851b15 100644
--- a/doc/en/autogen/user/irc_options.txt
+++ b/doc/en/autogen/user/irc_options.txt
@@ -143,6 +143,11 @@
** type: boolean
** values: on, off (default value: `on`)
+* [[option_irc.look.display_join_message]] *irc.look.display_join_message*
+** description: `comma-separated list of messages to display after joining a channel: 329 = channel creation date, 332 = topic, 333 = nick/date for topic, 366 = names on channel`
+** type: string
+** values: any string (default value: `"329,332,333,366"`)
+
* [[option_irc.look.display_old_topic]] *irc.look.display_old_topic*
** description: `display old topic when channel topic is changed`
** type: boolean
diff --git a/doc/en/weechat_faq.en.txt b/doc/en/weechat_faq.en.txt
index 26a094a87..0553a358b 100644
--- a/doc/en/weechat_faq.en.txt
+++ b/doc/en/weechat_faq.en.txt
@@ -579,7 +579,19 @@ For help: `/help filter` and `/help irc.look.smart_filter`
How can I filter some messages displayed when I join an IRC channel?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Some tags you can use to filter messages:
+With WeeChat ≥ 0.4.1, you can disable some messages with option
+'irc.look.display_join_message'.
+
+For example, to disable names (which is IRC message '366'):
+
+----------------------------------------
+/set irc.look.display_join_message "329,332,333"
+----------------------------------------
+
+[NOTE]
+For help: `/help irc.look.display_join_message`
+
+Another solution is to filter messages on tag:
* 'irc_366': names on channel
* 'irc_332,irc_333': channel topic/date
diff --git a/doc/fr/autogen/plugin_api/hdata.txt b/doc/fr/autogen/plugin_api/hdata.txt
index 14de5d359..c3a14860d 100644
--- a/doc/fr/autogen/plugin_api/hdata.txt
+++ b/doc/fr/autogen/plugin_api/hdata.txt
@@ -27,7 +27,7 @@
'modes' (string) +
'limit' (integer) +
'key' (string) +
- 'names_received' (integer) +
+ 'join_msg_received' (hashtable) +
'checking_away' (integer) +
'away_message' (string) +
'has_quit_server' (integer) +
diff --git a/doc/fr/autogen/user/irc_options.txt b/doc/fr/autogen/user/irc_options.txt
index f00b7bba0..d5489b27f 100644
--- a/doc/fr/autogen/user/irc_options.txt
+++ b/doc/fr/autogen/user/irc_options.txt
@@ -143,6 +143,11 @@
** type: booléen
** valeurs: on, off (valeur par défaut: `on`)
+* [[option_irc.look.display_join_message]] *irc.look.display_join_message*
+** description: `liste de messages (séparés par des virgules) à afficher après avoir rejoint un canal: 329 = date de création du canal, 332 = titre, 333 = pseudo/date pour le titre, 366 = noms sur le canal`
+** type: chaîne
+** valeurs: toute chaîne (valeur par défaut: `"329,332,333,366"`)
+
* [[option_irc.look.display_old_topic]] *irc.look.display_old_topic*
** description: `afficher l'ancien titre lorsque le titre du canal est changé`
** type: booléen
diff --git a/doc/fr/weechat_faq.fr.txt b/doc/fr/weechat_faq.fr.txt
index ababbe88b..600faa9fe 100644
--- a/doc/fr/weechat_faq.fr.txt
+++ b/doc/fr/weechat_faq.fr.txt
@@ -605,7 +605,19 @@ Pour l'aide : `/help filter` et `/help irc.look.smart_filter`
Comment puis-je filtrer certains messages affichés quand je rejoins un canal IRC ?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Quelques étiquettes que vous pouvez utiliser pour filtrer des messages :
+Avec WeeChat ≥ 0.4.1, vous pouvez désactiver des messages avec l'option
+'irc.look.display_join_message'.
+
+Par exemple, pour désactiver les noms (qui est le message IRC '366') :
+
+----------------------------------------
+/set irc.look.display_join_message "329,332,333"
+----------------------------------------
+
+[NOTE]
+Pour l'aide : `/help irc.look.display_join_message`
+
+Une autre solution est de filtrer les messages par l'étiquette :
* 'irc_366' : noms sur le canal
* 'irc_332,irc_333' : titre/date du canal
diff --git a/doc/it/autogen/plugin_api/hdata.txt b/doc/it/autogen/plugin_api/hdata.txt
index 4e2d2b514..ab1c212f4 100644
--- a/doc/it/autogen/plugin_api/hdata.txt
+++ b/doc/it/autogen/plugin_api/hdata.txt
@@ -27,7 +27,7 @@
'modes' (string) +
'limit' (integer) +
'key' (string) +
- 'names_received' (integer) +
+ 'join_msg_received' (hashtable) +
'checking_away' (integer) +
'away_message' (string) +
'has_quit_server' (integer) +
diff --git a/doc/it/autogen/user/irc_options.txt b/doc/it/autogen/user/irc_options.txt
index a85e1529b..65033e631 100644
--- a/doc/it/autogen/user/irc_options.txt
+++ b/doc/it/autogen/user/irc_options.txt
@@ -143,6 +143,11 @@
** tipo: bool
** valori: on, off (valore predefinito: `on`)
+* [[option_irc.look.display_join_message]] *irc.look.display_join_message*
+** descrizione: `comma-separated list of messages to display after joining a channel: 329 = channel creation date, 332 = topic, 333 = nick/date for topic, 366 = names on channel`
+** tipo: stringa
+** valori: qualsiasi stringa (valore predefinito: `"329,332,333,366"`)
+
* [[option_irc.look.display_old_topic]] *irc.look.display_old_topic*
** descrizione: `visualizza l'argomento del canale precedente quando viene cambiato`
** tipo: bool
diff --git a/doc/it/weechat_faq.it.txt b/doc/it/weechat_faq.it.txt
index 7714d484c..fb5e67588 100644
--- a/doc/it/weechat_faq.it.txt
+++ b/doc/it/weechat_faq.it.txt
@@ -600,7 +600,22 @@ Per aiuto: `/help filter` e `/help irc.look.smart_filter`
Come posso filtrare i messaggi visualizzati all'ingresso su un canale IRC?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Ecco alcuni tag da poter utilizzare per filtrare i messaggi:
+// TRANSLATION MISSING
+With WeeChat ≥ 0.4.1, you can disable some messages with option
+'irc.look.display_join_message'.
+
+// TRANSLATION MISSING
+For example, to disable names (which is IRC message '366'):
+
+----------------------------------------
+/set irc.look.display_join_message "329,332,333"
+----------------------------------------
+
+[NOTE]
+For help: `/help irc.look.display_join_message`
+
+// TRANSLATION MISSING
+Another solution is to filter messages on tag:
* 'irc_366': nomi sui canali
* 'irc_332,irc_333': topic/data del canale
diff --git a/doc/ja/autogen/plugin_api/hdata.txt b/doc/ja/autogen/plugin_api/hdata.txt
index 390b683d2..d4ddf64aa 100644
--- a/doc/ja/autogen/plugin_api/hdata.txt
+++ b/doc/ja/autogen/plugin_api/hdata.txt
@@ -27,7 +27,7 @@
'modes' (string) +
'limit' (integer) +
'key' (string) +
- 'names_received' (integer) +
+ 'join_msg_received' (hashtable) +
'checking_away' (integer) +
'away_message' (string) +
'has_quit_server' (integer) +
diff --git a/doc/ja/autogen/user/irc_options.txt b/doc/ja/autogen/user/irc_options.txt
index 6a52b7532..d4e01eb13 100644
--- a/doc/ja/autogen/user/irc_options.txt
+++ b/doc/ja/autogen/user/irc_options.txt
@@ -143,6 +143,11 @@
** タイプ: ブール
** 値: on, off (デフォルト値: `on`)
+* [[option_irc.look.display_join_message]] *irc.look.display_join_message*
+** 説明: `comma-separated list of messages to display after joining a channel: 329 = channel creation date, 332 = topic, 333 = nick/date for topic, 366 = names on channel`
+** タイプ: 文字列
+** 値: 未制約文字列 (デフォルト値: `"329,332,333,366"`)
+
* [[option_irc.look.display_old_topic]] *irc.look.display_old_topic*
** 説明: `チャンネルトピックが変更された場合に、古いトピックを表示`
** タイプ: ブール
diff --git a/doc/ja/weechat_faq.ja.txt b/doc/ja/weechat_faq.ja.txt
index 4184de2c0..093b0dc78 100644
--- a/doc/ja/weechat_faq.ja.txt
+++ b/doc/ja/weechat_faq.ja.txt
@@ -539,7 +539,22 @@ of channels):
[[filter_irc_join_channel_messages]]
=== どうすれば IRC チャンネルに参加した際に表示される一部のメッセージをフィルタできますか。 ===
-メッセージをフィルタするためにいくつかのタグが使えます:
+// TRANSLATION MISSING
+With WeeChat ≥ 0.4.1, you can disable some messages with option
+'irc.look.display_join_message'.
+
+// TRANSLATION MISSING
+For example, to disable names (which is IRC message '366'):
+
+----------------------------------------
+/set irc.look.display_join_message "329,332,333"
+----------------------------------------
+
+[NOTE]
+For help: `/help irc.look.display_join_message`
+
+// TRANSLATION MISSING
+Another solution is to filter messages on tag:
* 'irc_366': チャンネルにいるユーザの名前
* 'irc_332,irc_333': チャンネルのトピック/日時
diff --git a/doc/pl/weechat_faq.pl.txt b/doc/pl/weechat_faq.pl.txt
index b747dc642..3d936c592 100644
--- a/doc/pl/weechat_faq.pl.txt
+++ b/doc/pl/weechat_faq.pl.txt
@@ -583,7 +583,22 @@ Więcej informacji: `/help filter` i `/help irc.look.smart_filter`
Jak mogę filtrować wyświetlane wiadomości podczas wejścia na kanał IRC?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Tagi, które można użyć do filtrowania wiadomości:
+// TRANSLATION MISSING
+With WeeChat ≥ 0.4.1, you can disable some messages with option
+'irc.look.display_join_message'.
+
+// TRANSLATION MISSING
+For example, to disable names (which is IRC message '366'):
+
+----------------------------------------
+/set irc.look.display_join_message "329,332,333"
+----------------------------------------
+
+[NOTE]
+For help: `/help irc.look.display_join_message`
+
+// TRANSLATION MISSING
+Another solution is to filter messages on tag:
* 'irc_366': osoby na kanale
* 'irc_332,irc_333': temat/data kanału
diff --git a/po/cs.po b/po/cs.po
index 49e680d46..24f5981e2 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.4.1-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2013-03-17 22:01+0100\n"
+"POT-Creation-Date: 2013-03-24 12:25+0100\n"
"PO-Revision-Date: 2013-03-16 17:49+0100\n"
"Last-Translator: Jiri Golembiovsky <golemj@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -5997,6 +5997,12 @@ msgstr "zobrazovat hosta ve vezprávách o připojení z lokálního klienta"
msgid "display host in part/quit messages"
msgstr "zobrazovat hosta ve zprávách o odchodu/ukončení"
+msgid ""
+"comma-separated list of messages to display after joining a channel: 329 = "
+"channel creation date, 332 = topic, 333 = nick/date for topic, 366 = names "
+"on channel"
+msgstr ""
+
msgid "display old topic when channel topic is changed"
msgstr "zobrazit staré téma rozhovoru, když se téma změní"
@@ -9403,3 +9409,7 @@ msgstr ""
msgid "Constants"
msgstr ""
+
+#, fuzzy
+#~ msgid "display names when joining channel"
+#~ msgstr "zobrazit speiální zprávy při změně dne"
diff --git a/po/de.po b/po/de.po
index 5db2a65bd..a365b6015 100644
--- a/po/de.po
+++ b/po/de.po
@@ -22,7 +22,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.4.1-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2013-03-17 22:01+0100\n"
+"POT-Creation-Date: 2013-03-24 12:25+0100\n"
"PO-Revision-Date: 2013-03-17 08:20+0100\n"
"Last-Translator: Nils Görs <weechatter@arcor.de>\n"
"Language-Team: German <weechatter@arcor.de>\n"
@@ -6590,6 +6590,12 @@ msgstr "Zeigt den Host in join Nachrichten des lokalen Client an"
msgid "display host in part/quit messages"
msgstr "Zeigt den Host in einer part/quit Nachricht an"
+msgid ""
+"comma-separated list of messages to display after joining a channel: 329 = "
+"channel creation date, 332 = topic, 333 = nick/date for topic, 366 = names "
+"on channel"
+msgstr ""
+
msgid "display old topic when channel topic is changed"
msgstr "Zeige das alte Thema an, falls das Thema des Channels geändert wurde"
@@ -10289,3 +10295,7 @@ msgstr "Type"
msgid "Constants"
msgstr "Konstanten"
+
+#, fuzzy
+#~ msgid "display names when joining channel"
+#~ msgstr "bei einem Datumswechsel wird eine entsprechende Nachricht angezeigt"
diff --git a/po/es.po b/po/es.po
index 85ea080db..e8498e570 100644
--- a/po/es.po
+++ b/po/es.po
@@ -22,7 +22,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.4.1-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2013-03-17 22:01+0100\n"
+"POT-Creation-Date: 2013-03-24 12:25+0100\n"
"PO-Revision-Date: 2013-03-17 08:20+0100\n"
"Last-Translator: Elián Hanisch <lambdae2@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -6220,6 +6220,12 @@ msgstr "muestra el host en mensajes de unión desde el cliente local"
msgid "display host in part/quit messages"
msgstr "muestra el host en mensajes de salida/abandono"
+msgid ""
+"comma-separated list of messages to display after joining a channel: 329 = "
+"channel creation date, 332 = topic, 333 = nick/date for topic, 366 = names "
+"on channel"
+msgstr ""
+
msgid "display old topic when channel topic is changed"
msgstr "mostrar el tema anterior cuando se cambia el tema del canal"
@@ -9649,3 +9655,7 @@ msgstr "Tipo"
msgid "Constants"
msgstr "Constantes"
+
+#, fuzzy
+#~ msgid "display names when joining channel"
+#~ msgstr "mostrar un mensaje especial cuando el día cambia"
diff --git a/po/fr.po b/po/fr.po
index 2876e04af..1cd5371e0 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -21,8 +21,8 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.4.1-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2013-03-17 22:01+0100\n"
-"PO-Revision-Date: 2013-03-17 22:02+0100\n"
+"POT-Creation-Date: 2013-03-24 12:58+0100\n"
+"PO-Revision-Date: 2013-03-24 12:26+0100\n"
"Last-Translator: Sebastien Helleu <flashcode@flashtux.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
"Language: fr\n"
@@ -6405,6 +6405,15 @@ msgstr "afficher le nom d'hôte dans les messages join du client local"
msgid "display host in part/quit messages"
msgstr "afficher le nom d'hôte dans les messages part/quit"
+msgid ""
+"comma-separated list of messages to display after joining a channel: 329 = "
+"channel creation date, 332 = topic, 333 = nick/date for topic, 366 = names "
+"on channel"
+msgstr ""
+"liste de messages (séparés par des virgules) à afficher après avoir rejoint "
+"un canal: 329 = date de création du canal, 332 = titre, 333 = pseudo/date "
+"pour le titre, 366 = noms sur le canal"
+
msgid "display old topic when channel topic is changed"
msgstr "afficher l'ancien titre lorsque le titre du canal est changé"
@@ -10020,3 +10029,6 @@ msgstr "Type"
msgid "Constants"
msgstr "Constantes"
+
+#~ msgid "display names when joining channel"
+#~ msgstr "afficher les noms lorsqu'on rejoint un canal"
diff --git a/po/hu.po b/po/hu.po
index ef6a3059b..56727b060 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.4.1-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2013-03-17 22:01+0100\n"
+"POT-Creation-Date: 2013-03-24 12:25+0100\n"
"PO-Revision-Date: 2013-03-16 17:50+0100\n"
"Last-Translator: Andras Voroskoi <voroskoi@frugalware.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -5549,6 +5549,12 @@ msgstr "új üzenetet tartalmazó ablak színe"
msgid "display host in part/quit messages"
msgstr "alapértelmezett kilépő üzenet"
+msgid ""
+"comma-separated list of messages to display after joining a channel: 329 = "
+"channel creation date, 332 = topic, 333 = nick/date for topic, 366 = names "
+"on channel"
+msgstr ""
+
msgid "display old topic when channel topic is changed"
msgstr ""
@@ -8872,3 +8878,7 @@ msgstr ""
msgid "Constants"
msgstr ""
+
+#, fuzzy
+#~ msgid "display names when joining channel"
+#~ msgstr "speciális üzenet az aktuális nap megváltozásakor"
diff --git a/po/it.po b/po/it.po
index ac6af2d6c..13406d08c 100644
--- a/po/it.po
+++ b/po/it.po
@@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.4.1-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2013-03-17 22:01+0100\n"
+"POT-Creation-Date: 2013-03-24 12:25+0100\n"
"PO-Revision-Date: 2013-03-17 08:20+0100\n"
"Last-Translator: Marco Paolone <marcopaolone@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -6228,6 +6228,12 @@ msgstr "visualizza l'host nei messaggi di entrata dal client locale"
msgid "display host in part/quit messages"
msgstr "visualizza host nei messaggi di uscita/abbandono"
+msgid ""
+"comma-separated list of messages to display after joining a channel: 329 = "
+"channel creation date, 332 = topic, 333 = nick/date for topic, 366 = names "
+"on channel"
+msgstr ""
+
msgid "display old topic when channel topic is changed"
msgstr "visualizza l'argomento del canale precedente quando viene cambiato"
@@ -9680,3 +9686,7 @@ msgstr "Tipo"
msgid "Constants"
msgstr "Costanti"
+
+#, fuzzy
+#~ msgid "display names when joining channel"
+#~ msgstr "mostra un messaggio speciale al cambio di data"
diff --git a/po/ja.po b/po/ja.po
index 197837a4a..52c02a714 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.4.1-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2013-03-17 22:01+0100\n"
+"POT-Creation-Date: 2013-03-24 12:25+0100\n"
"PO-Revision-Date: 2013-03-17 08:20+0100\n"
"Last-Translator: AYANOKOUZI, Ryuunosuke <i38w7i3@yahoo.co.jp>\n"
"Language-Team: Japanese <https://github.com/l/WeeChat>\n"
@@ -6189,6 +6189,12 @@ msgstr "ローカルクライアントからの参加メッセージにホスト
msgid "display host in part/quit messages"
msgstr "退出/終了 メッセージにホスト名を表示"
+msgid ""
+"comma-separated list of messages to display after joining a channel: 329 = "
+"channel creation date, 332 = topic, 333 = nick/date for topic, 366 = names "
+"on channel"
+msgstr ""
+
msgid "display old topic when channel topic is changed"
msgstr "チャンネルトピックが変更された場合に、古いトピックを表示"
@@ -9669,3 +9675,7 @@ msgstr "タイプ"
msgid "Constants"
msgstr "定数"
+
+#, fuzzy
+#~ msgid "display names when joining channel"
+#~ msgstr "日付が変わった際に特殊メッセージを表示"
diff --git a/po/pl.po b/po/pl.po
index 399882b58..aab71bf8a 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -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-03-17 22:01+0100\n"
+"POT-Creation-Date: 2013-03-24 12:25+0100\n"
"PO-Revision-Date: 2013-03-17 08:20+0100\n"
"Last-Translator: Krzysztof Korościk <soltys@szluug.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -6314,6 +6314,12 @@ msgstr "wyświetlaj host podczas wchodzenia na kanał"
msgid "display host in part/quit messages"
msgstr "pokazuj host w wiadomościach o opuszczeniu kanału/wyjściu z IRC"
+msgid ""
+"comma-separated list of messages to display after joining a channel: 329 = "
+"channel creation date, 332 = topic, 333 = nick/date for topic, 366 = names "
+"on channel"
+msgstr ""
+
msgid "display old topic when channel topic is changed"
msgstr "wyświetl stary temat, kiedy zmieniany jest temat kanału"
@@ -9823,3 +9829,7 @@ msgstr "Typ"
msgid "Constants"
msgstr "Stałe"
+
+#, fuzzy
+#~ msgid "display names when joining channel"
+#~ msgstr "wyświetlaj specjalną wiadomość, kiedy zmienia się dzień"
diff --git a/po/pt_BR.po b/po/pt_BR.po
index c06eba288..abbef10e3 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -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-03-17 22:01+0100\n"
+"POT-Creation-Date: 2013-03-24 12:25+0100\n"
"PO-Revision-Date: 2013-03-17 08:20+0100\n"
"Last-Translator: Sergio Durigan Junior <sergiosdj@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -5735,6 +5735,12 @@ msgstr ""
msgid "display host in part/quit messages"
msgstr ""
+msgid ""
+"comma-separated list of messages to display after joining a channel: 329 = "
+"channel creation date, 332 = topic, 333 = nick/date for topic, 366 = names "
+"on channel"
+msgstr ""
+
msgid "display old topic when channel topic is changed"
msgstr "exibir tópico antigo quando o tópico do canal for alterado"
@@ -9035,3 +9041,7 @@ msgstr ""
msgid "Constants"
msgstr ""
+
+#, fuzzy
+#~ msgid "display names when joining channel"
+#~ msgstr "mostra uma mensagem especial quando o dia muda"
diff --git a/po/ru.po b/po/ru.po
index 1d8f3e736..971207e18 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -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-03-17 22:01+0100\n"
+"POT-Creation-Date: 2013-03-24 12:25+0100\n"
"PO-Revision-Date: 2013-03-16 17:50+0100\n"
"Last-Translator: Aleksey V Zapparov AKA ixti <ixti@member.fsf.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -5571,6 +5571,12 @@ msgstr "цвет текущего окна с сообщениями"
msgid "display host in part/quit messages"
msgstr "сообщение о выходе по-умолчанию"
+msgid ""
+"comma-separated list of messages to display after joining a channel: 329 = "
+"channel creation date, 332 = topic, 333 = nick/date for topic, 366 = names "
+"on channel"
+msgstr ""
+
msgid "display old topic when channel topic is changed"
msgstr ""
@@ -8890,3 +8896,7 @@ msgstr ""
msgid "Constants"
msgstr ""
+
+#, fuzzy
+#~ msgid "display names when joining channel"
+#~ msgstr "отображать специальное сообщение при смене дня"
diff --git a/po/weechat.pot b/po/weechat.pot
index c614a2faa..055f1b8ee 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-03-17 22:01+0100\n"
+"POT-Creation-Date: 2013-03-24 12:25+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"
@@ -4828,6 +4828,12 @@ msgstr ""
msgid "display host in part/quit messages"
msgstr ""
+msgid ""
+"comma-separated list of messages to display after joining a channel: 329 = "
+"channel creation date, 332 = topic, 333 = nick/date for topic, 366 = names "
+"on channel"
+msgstr ""
+
msgid "display old topic when channel topic is changed"
msgstr ""
diff --git a/src/plugins/irc/irc-channel.c b/src/plugins/irc/irc-channel.c
index 7d2f518f8..8c5276609 100644
--- a/src/plugins/irc/irc-channel.c
+++ b/src/plugins/irc/irc-channel.c
@@ -294,7 +294,11 @@ irc_channel_new (struct t_irc_server *server, int channel_type,
{
new_channel->key = NULL;
}
- new_channel->names_received = 0;
+ new_channel->join_msg_received = weechat_hashtable_new (32,
+ WEECHAT_HASHTABLE_STRING,
+ WEECHAT_HASHTABLE_STRING,
+ NULL,
+ NULL);
new_channel->checking_away = 0;
new_channel->away_message = NULL;
new_channel->has_quit_server = 0;
@@ -1183,7 +1187,7 @@ irc_channel_hdata_channel_cb (void *data, const char *hdata_name)
WEECHAT_HDATA_VAR(struct t_irc_channel, modes, STRING, 0, NULL, NULL);
WEECHAT_HDATA_VAR(struct t_irc_channel, limit, INTEGER, 0, NULL, NULL);
WEECHAT_HDATA_VAR(struct t_irc_channel, key, STRING, 0, NULL, NULL);
- WEECHAT_HDATA_VAR(struct t_irc_channel, names_received, INTEGER, 0, NULL, NULL);
+ WEECHAT_HDATA_VAR(struct t_irc_channel, join_msg_received, HASHTABLE, 0, NULL, NULL);
WEECHAT_HDATA_VAR(struct t_irc_channel, checking_away, INTEGER, 0, NULL, NULL);
WEECHAT_HDATA_VAR(struct t_irc_channel, away_message, STRING, 0, NULL, NULL);
WEECHAT_HDATA_VAR(struct t_irc_channel, has_quit_server, INTEGER, 0, NULL, NULL);
@@ -1278,7 +1282,8 @@ irc_channel_add_to_infolist (struct t_infolist *infolist,
return 0;
if (!weechat_infolist_new_var_string (ptr_item, "key", channel->key))
return 0;
- if (!weechat_infolist_new_var_integer (ptr_item, "names_received", channel->names_received))
+ if (!weechat_infolist_new_var_string (ptr_item, "join_msg_received",
+ weechat_hashtable_get_string (channel->join_msg_received, "keys")))
return 0;
if (!weechat_infolist_new_var_integer (ptr_item, "checking_away", channel->checking_away))
return 0;
@@ -1360,7 +1365,10 @@ irc_channel_print_log (struct t_irc_channel *channel)
weechat_log_printf (" modes. . . . . . . . . . : '%s'", channel->modes);
weechat_log_printf (" limit. . . . . . . . . . : %d", channel->limit);
weechat_log_printf (" key. . . . . . . . . . . : '%s'", channel->key);
- weechat_log_printf (" names_received . . . . . : %d", channel->names_received);
+ weechat_log_printf (" join_msg_received. . . . : 0x%lx (hashtable: '%s')",
+ channel->join_msg_received,
+ weechat_hashtable_get_string (channel->join_msg_received,
+ "keys_values"));
weechat_log_printf (" checking_away. . . . . . : %d", channel->checking_away);
weechat_log_printf (" away_message . . . . . . : '%s'", channel->away_message);
weechat_log_printf (" has_quit_server. . . . . : %d", channel->has_quit_server);
diff --git a/src/plugins/irc/irc-channel.h b/src/plugins/irc/irc-channel.h
index 3a8d39096..1e76b06fb 100644
--- a/src/plugins/irc/irc-channel.h
+++ b/src/plugins/irc/irc-channel.h
@@ -47,7 +47,9 @@ struct t_irc_channel
char *modes; /* channel modes */
int limit; /* user limit (0 is limit not set) */
char *key; /* channel key (NULL if no key set) */
- int names_received; /* names received (message 366) */
+ struct t_hashtable *join_msg_received; /* messages received after join: */
+ /* 366=names, 332/333=topic, */
+ /* 329=creation date */
int checking_away; /* = 1 if checking away with WHO cmd */
char *away_message; /* to display away only once in pv */
int has_quit_server; /* =1 if nick has quit (pv only), to */
diff --git a/src/plugins/irc/irc-config.c b/src/plugins/irc/irc-config.c
index cdadf97cd..8075903c4 100644
--- a/src/plugins/irc/irc-config.c
+++ b/src/plugins/irc/irc-config.c
@@ -73,6 +73,7 @@ struct t_config_option *irc_config_look_display_ctcp_unknown;
struct t_config_option *irc_config_look_display_host_join;
struct t_config_option *irc_config_look_display_host_join_local;
struct t_config_option *irc_config_look_display_host_quit;
+struct t_config_option *irc_config_look_display_join_message;
struct t_config_option *irc_config_look_display_old_topic;
struct t_config_option *irc_config_look_display_pv_away_once;
struct t_config_option *irc_config_look_display_pv_back;
@@ -141,6 +142,7 @@ struct t_config_option *irc_config_server_default[IRC_SERVER_NUM_OPTIONS];
struct t_hook *irc_config_hook_config_nick_colors = NULL;
char **irc_config_nick_colors = NULL;
int irc_config_num_nick_colors = 0;
+struct t_hashtable *irc_config_hashtable_display_join_message = NULL;
struct t_hashtable *irc_config_hashtable_nick_color_force = NULL;
struct t_hashtable *irc_config_hashtable_nick_prefixes = NULL;
struct t_hashtable *irc_config_hashtable_color_mirc_remap = NULL;
@@ -275,6 +277,45 @@ irc_config_change_look_color_nicks_in_nicklist (void *data,
}
/*
+ * Callback for changes on option "irc.look.display_join_message".
+ */
+
+void
+irc_config_change_look_display_join_message (void *data,
+ struct t_config_option *option)
+{
+ char **items;
+ int num_items, i;
+
+ /* make C compiler happy */
+ (void) data;
+ (void) option;
+
+ if (!irc_config_hashtable_display_join_message)
+ {
+ irc_config_hashtable_display_join_message = weechat_hashtable_new (32,
+ WEECHAT_HASHTABLE_STRING,
+ WEECHAT_HASHTABLE_STRING,
+ NULL,
+ NULL);
+ }
+ else
+ weechat_hashtable_remove_all (irc_config_hashtable_display_join_message);
+
+ items = weechat_string_split (weechat_config_string (irc_config_look_display_join_message),
+ ",", 0, 0, &num_items);
+ if (items)
+ {
+ for (i = 0; i < num_items; i++)
+ {
+ weechat_hashtable_set (irc_config_hashtable_display_join_message,
+ items[i], "1");
+ }
+ weechat_string_free_split (items);
+ }
+}
+
+/*
* Callback for changes on option "irc.look.server_buffer".
*/
@@ -2052,11 +2093,11 @@ irc_config_init ()
{
struct t_config_section *ptr_section;
- irc_config_hashtable_color_mirc_remap = weechat_hashtable_new (32,
- WEECHAT_HASHTABLE_STRING,
- WEECHAT_HASHTABLE_STRING,
- NULL,
- NULL);
+ irc_config_hashtable_display_join_message = weechat_hashtable_new (32,
+ WEECHAT_HASHTABLE_STRING,
+ WEECHAT_HASHTABLE_STRING,
+ NULL,
+ NULL);
irc_config_hashtable_nick_color_force = weechat_hashtable_new (32,
WEECHAT_HASHTABLE_STRING,
WEECHAT_HASHTABLE_STRING,
@@ -2067,6 +2108,11 @@ irc_config_init ()
WEECHAT_HASHTABLE_STRING,
NULL,
NULL);
+ irc_config_hashtable_color_mirc_remap = weechat_hashtable_new (32,
+ WEECHAT_HASHTABLE_STRING,
+ WEECHAT_HASHTABLE_STRING,
+ NULL,
+ NULL);
irc_config_file = weechat_config_new (IRC_CONFIG_NAME,
&irc_config_reload, NULL);
@@ -2257,6 +2303,14 @@ irc_config_init ()
N_("display host in part/quit messages"),
NULL, 0, 0, "on", NULL, 0, NULL, NULL,
NULL, NULL, NULL, NULL);
+ irc_config_look_display_join_message = weechat_config_new_option (
+ irc_config_file, ptr_section,
+ "display_join_message", "string",
+ N_("comma-separated list of messages to display after joining a channel: "
+ "329 = channel creation date, 332 = topic, 333 = nick/date for topic, "
+ "366 = names on channel"),
+ NULL, 0, 0, "329,332,333,366", NULL, 0, NULL, NULL,
+ &irc_config_change_look_display_join_message, NULL, NULL, NULL);
irc_config_look_display_old_topic = weechat_config_new_option (
irc_config_file, ptr_section,
"display_old_topic", "boolean",
@@ -2754,6 +2808,7 @@ irc_config_read ()
if (rc == WEECHAT_CONFIG_READ_OK)
{
irc_notify_new_for_all_servers ();
+ irc_config_change_look_display_join_message (NULL, NULL);
irc_config_change_look_nick_color_force (NULL, NULL);
irc_config_change_look_nicks_hide_password (NULL, NULL);
irc_config_change_color_nick_prefixes (NULL, NULL);
@@ -2804,6 +2859,12 @@ irc_config_free ()
irc_config_num_nicks_hide_password = 0;
}
+ if (irc_config_hashtable_display_join_message)
+ {
+ weechat_hashtable_free (irc_config_hashtable_display_join_message);
+ irc_config_hashtable_display_join_message = NULL;
+ }
+
if (irc_config_hashtable_nick_color_force)
{
weechat_hashtable_free (irc_config_hashtable_nick_color_force);
diff --git a/src/plugins/irc/irc-config.h b/src/plugins/irc/irc-config.h
index 9b28e2ed0..6a9c3f21d 100644
--- a/src/plugins/irc/irc-config.h
+++ b/src/plugins/irc/irc-config.h
@@ -115,6 +115,7 @@ extern struct t_config_option *irc_config_look_display_ctcp_unknown;
extern struct t_config_option *irc_config_look_display_host_join;
extern struct t_config_option *irc_config_look_display_host_join_local;
extern struct t_config_option *irc_config_look_display_host_quit;
+extern struct t_config_option *irc_config_look_display_join_message;
extern struct t_config_option *irc_config_look_display_old_topic;
extern struct t_config_option *irc_config_look_display_pv_away_once;
extern struct t_config_option *irc_config_look_display_pv_back;
@@ -177,6 +178,7 @@ extern struct t_config_option *irc_config_server_default[];
extern char **irc_config_nick_colors;
extern int irc_config_num_nick_colors;
+extern struct t_hashtable *irc_config_hashtable_display_join_message;
extern struct t_hashtable *irc_config_hashtable_nick_color_force;
extern struct t_hashtable *irc_config_hashtable_nick_prefixes;
extern struct t_hashtable *irc_config_hashtable_color_mirc_remap;
diff --git a/src/plugins/irc/irc-protocol.c b/src/plugins/irc/irc-protocol.c
index 2b2d11dd2..de26867ad 100644
--- a/src/plugins/irc/irc-protocol.c
+++ b/src/plugins/irc/irc-protocol.c
@@ -561,7 +561,7 @@ IRC_PROTOCOL_CALLBACK(join)
ptr_channel->modes = NULL;
}
ptr_channel->limit = 0;
- ptr_channel->names_received = 0;
+ weechat_hashtable_remove_all (ptr_channel->join_msg_received);
ptr_channel->checking_away = 0;
}
@@ -2967,15 +2967,19 @@ IRC_PROTOCOL_CALLBACK(329)
if (ptr_channel)
{
- weechat_printf_date_tags (irc_msgbuffer_get_target_buffer (server, NULL,
- command, NULL,
- ptr_channel->buffer),
- date,
- irc_protocol_tags (command, "irc_numeric", NULL),
- /* TRANSLATORS: "%s" after "created on" is a date */
- _("%sChannel created on %s"),
- weechat_prefix ("network"),
- weechat_util_get_time_string (&datetime));
+ if (weechat_hashtable_has_key (ptr_channel->join_msg_received, command)
+ || weechat_hashtable_has_key (irc_config_hashtable_display_join_message, command))
+ {
+ weechat_printf_date_tags (irc_msgbuffer_get_target_buffer (server, NULL,
+ command, NULL,
+ ptr_channel->buffer),
+ date,
+ irc_protocol_tags (command, "irc_numeric", NULL),
+ /* TRANSLATORS: "%s" after "created on" is a date */
+ _("%sChannel created on %s"),
+ weechat_prefix ("network"),
+ weechat_util_get_time_string (&datetime));
+ }
}
else
{
@@ -2993,6 +2997,9 @@ IRC_PROTOCOL_CALLBACK(329)
weechat_util_get_time_string (&datetime));
}
+ if (ptr_channel)
+ weechat_hashtable_set (ptr_channel->join_msg_received, command, "1");
+
return WEECHAT_RC_OK;
}
@@ -3129,21 +3136,31 @@ IRC_PROTOCOL_CALLBACK(332)
topic_color = irc_color_decode (pos_topic,
(weechat_config_boolean (irc_config_network_colors_receive)) ? 1 : 0);
}
- weechat_printf_date_tags (irc_msgbuffer_get_target_buffer (server, NULL,
- command, NULL,
- ptr_buffer),
- date,
- irc_protocol_tags (command, "irc_numeric", NULL),
- _("%sTopic for %s%s%s is \"%s%s\""),
- weechat_prefix ("network"),
- IRC_COLOR_CHAT_CHANNEL,
- argv[3],
- IRC_COLOR_RESET,
- (topic_color) ? topic_color : ((pos_topic) ? pos_topic : ""),
- IRC_COLOR_RESET);
+
+ if (!ptr_channel
+ || (weechat_hashtable_has_key (ptr_channel->join_msg_received, command))
+ || weechat_hashtable_has_key (irc_config_hashtable_display_join_message, command))
+ {
+ weechat_printf_date_tags (irc_msgbuffer_get_target_buffer (server, NULL,
+ command, NULL,
+ ptr_buffer),
+ date,
+ irc_protocol_tags (command, "irc_numeric", NULL),
+ _("%sTopic for %s%s%s is \"%s%s\""),
+ weechat_prefix ("network"),
+ IRC_COLOR_CHAT_CHANNEL,
+ argv[3],
+ IRC_COLOR_RESET,
+ (topic_color) ? topic_color : ((pos_topic) ? pos_topic : ""),
+ IRC_COLOR_RESET);
+ }
+
if (topic_color)
free (topic_color);
+ if (ptr_channel)
+ weechat_hashtable_set (ptr_channel->join_msg_received, command, "1");
+
return WEECHAT_RC_OK;
}
@@ -3182,38 +3199,42 @@ IRC_PROTOCOL_CALLBACK(333)
if (ptr_channel && ptr_channel->nicks)
{
- if (topic_nick)
- {
- weechat_printf_date_tags (irc_msgbuffer_get_target_buffer (server, NULL,
- command, NULL,
- ptr_channel->buffer),
- date,
- irc_protocol_tags (command, "irc_numeric", NULL),
- /* TRANSLATORS: "%s" after "on" is a date */
- _("%sTopic set by %s%s%s%s%s%s%s%s%s on %s"),
- weechat_prefix ("network"),
- irc_nick_color_for_server_message (server, ptr_nick, topic_nick),
- topic_nick,
- IRC_COLOR_CHAT_DELIMITERS,
- (topic_address && topic_address[0]) ? " (" : "",
- IRC_COLOR_CHAT_HOST,
- (topic_address) ? topic_address : "",
- IRC_COLOR_CHAT_DELIMITERS,
- (topic_address && topic_address[0]) ? ")" : "",
- IRC_COLOR_RESET,
- weechat_util_get_time_string (&datetime));
- }
- else
+ if (weechat_hashtable_has_key (ptr_channel->join_msg_received, command)
+ || weechat_hashtable_has_key (irc_config_hashtable_display_join_message, command))
{
- weechat_printf_date_tags (irc_msgbuffer_get_target_buffer (server, NULL,
- command, NULL,
- ptr_channel->buffer),
- date,
- irc_protocol_tags (command, "irc_numeric", NULL),
- /* TRANSLATORS: "%s" after "on" is a date */
- _("%sTopic set on %s"),
- weechat_prefix ("network"),
- weechat_util_get_time_string (&datetime));
+ if (topic_nick)
+ {
+ weechat_printf_date_tags (irc_msgbuffer_get_target_buffer (server, NULL,
+ command, NULL,
+ ptr_channel->buffer),
+ date,
+ irc_protocol_tags (command, "irc_numeric", NULL),
+ /* TRANSLATORS: "%s" after "on" is a date */
+ _("%sTopic set by %s%s%s%s%s%s%s%s%s on %s"),
+ weechat_prefix ("network"),
+ irc_nick_color_for_server_message (server, ptr_nick, topic_nick),
+ topic_nick,
+ IRC_COLOR_CHAT_DELIMITERS,
+ (topic_address && topic_address[0]) ? " (" : "",
+ IRC_COLOR_CHAT_HOST,
+ (topic_address) ? topic_address : "",
+ IRC_COLOR_CHAT_DELIMITERS,
+ (topic_address && topic_address[0]) ? ")" : "",
+ IRC_COLOR_RESET,
+ weechat_util_get_time_string (&datetime));
+ }
+ else
+ {
+ weechat_printf_date_tags (irc_msgbuffer_get_target_buffer (server, NULL,
+ command, NULL,
+ ptr_channel->buffer),
+ date,
+ irc_protocol_tags (command, "irc_numeric", NULL),
+ /* TRANSLATORS: "%s" after "on" is a date */
+ _("%sTopic set on %s"),
+ weechat_prefix ("network"),
+ weechat_util_get_time_string (&datetime));
+ }
}
}
else
@@ -3259,6 +3280,9 @@ IRC_PROTOCOL_CALLBACK(333)
}
}
+ if (ptr_channel)
+ weechat_hashtable_set (ptr_channel->join_msg_received, command, "1");
+
return WEECHAT_RC_OK;
}
@@ -3930,133 +3954,137 @@ IRC_PROTOCOL_CALLBACK(366)
ptr_channel = irc_channel_search (server, argv[3]);
if (ptr_channel && ptr_channel->nicks)
{
- /* display users on channel */
- infolist = weechat_infolist_get ("nicklist", ptr_channel->buffer, NULL);
- if (infolist)
+ if (weechat_hashtable_has_key (ptr_channel->join_msg_received, command)
+ || weechat_hashtable_has_key (irc_config_hashtable_display_join_message, command))
{
- length = 0;
- while (weechat_infolist_next (infolist))
+ /* display users on channel */
+ infolist = weechat_infolist_get ("nicklist", ptr_channel->buffer, NULL);
+ if (infolist)
{
- if (strcmp (weechat_infolist_string (infolist, "type"),
- "nick") == 0)
+ length = 0;
+ while (weechat_infolist_next (infolist))
{
- ptr_option = weechat_config_get (weechat_infolist_string (infolist,
- "prefix_color"));
- length +=
- ((ptr_option) ? strlen (weechat_color (weechat_config_string (ptr_option))) : 0) +
- strlen (weechat_infolist_string (infolist, "prefix")) +
- 16 + /* nick color */
- strlen (weechat_infolist_string (infolist, "name")) +
- 16 + /* reset color */
- 1; /* space */
+ if (strcmp (weechat_infolist_string (infolist, "type"),
+ "nick") == 0)
+ {
+ ptr_option = weechat_config_get (weechat_infolist_string (infolist,
+ "prefix_color"));
+ length +=
+ ((ptr_option) ? strlen (weechat_color (weechat_config_string (ptr_option))) : 0) +
+ strlen (weechat_infolist_string (infolist, "prefix")) +
+ 16 + /* nick color */
+ strlen (weechat_infolist_string (infolist, "name")) +
+ 16 + /* reset color */
+ 1; /* space */
+ }
}
- }
- if (length > 0)
- {
- string = malloc (length);
- if (string)
+ if (length > 0)
{
- string[0] = '\0';
- i = 0;
- while (weechat_infolist_next (infolist))
+ string = malloc (length);
+ if (string)
{
- if (strcmp (weechat_infolist_string (infolist, "type"),
- "nick") == 0)
+ string[0] = '\0';
+ i = 0;
+ while (weechat_infolist_next (infolist))
{
- if (i > 0)
+ if (strcmp (weechat_infolist_string (infolist, "type"),
+ "nick") == 0)
{
- strcat (string, IRC_COLOR_RESET);
- strcat (string, " ");
- }
- prefix = weechat_infolist_string (infolist, "prefix");
- if (prefix[0] && (prefix[0] != ' '))
- {
- prefix_color = weechat_infolist_string (infolist,
- "prefix_color");
- if (strchr (prefix_color, '.'))
+ if (i > 0)
{
- ptr_option = weechat_config_get (weechat_infolist_string (infolist,
- "prefix_color"));
- if (ptr_option)
- strcat (string, weechat_color (weechat_config_string (ptr_option)));
+ strcat (string, IRC_COLOR_RESET);
+ strcat (string, " ");
}
- else
+ prefix = weechat_infolist_string (infolist, "prefix");
+ if (prefix[0] && (prefix[0] != ' '))
{
- strcat (string, weechat_color (prefix_color));
+ prefix_color = weechat_infolist_string (infolist,
+ "prefix_color");
+ if (strchr (prefix_color, '.'))
+ {
+ ptr_option = weechat_config_get (weechat_infolist_string (infolist,
+ "prefix_color"));
+ if (ptr_option)
+ strcat (string, weechat_color (weechat_config_string (ptr_option)));
+ }
+ else
+ {
+ strcat (string, weechat_color (prefix_color));
+ }
+ strcat (string, prefix);
+ }
+ nickname = weechat_infolist_string (infolist, "name");
+ if (weechat_config_boolean (irc_config_look_color_nicks_in_names))
+ {
+ if (irc_server_strcasecmp (server, nickname, server->nick) == 0)
+ strcat (string, IRC_COLOR_CHAT_NICK_SELF);
+ else
+ strcat (string, irc_nick_find_color (nickname));
}
- strcat (string, prefix);
- }
- nickname = weechat_infolist_string (infolist, "name");
- if (weechat_config_boolean (irc_config_look_color_nicks_in_names))
- {
- if (irc_server_strcasecmp (server, nickname, server->nick) == 0)
- strcat (string, IRC_COLOR_CHAT_NICK_SELF);
else
- strcat (string, irc_nick_find_color (nickname));
+ strcat (string, IRC_COLOR_RESET);
+ strcat (string, nickname);
+ i++;
}
- else
- strcat (string, IRC_COLOR_RESET);
- strcat (string, nickname);
- i++;
}
+ weechat_printf_date_tags (irc_msgbuffer_get_target_buffer (server, NULL,
+ command, "names",
+ ptr_channel->buffer),
+ date,
+ irc_protocol_tags (command, "irc_numeric", NULL),
+ _("%sNicks %s%s%s: %s[%s%s]"),
+ weechat_prefix ("network"),
+ IRC_COLOR_CHAT_CHANNEL,
+ ptr_channel->name,
+ IRC_COLOR_RESET,
+ IRC_COLOR_CHAT_DELIMITERS,
+ string,
+ IRC_COLOR_CHAT_DELIMITERS);
+ free (string);
}
- weechat_printf_date_tags (irc_msgbuffer_get_target_buffer (server, NULL,
- command, "names",
- ptr_channel->buffer),
- date,
- irc_protocol_tags (command, "irc_numeric", NULL),
- _("%sNicks %s%s%s: %s[%s%s]"),
- weechat_prefix ("network"),
- IRC_COLOR_CHAT_CHANNEL,
- ptr_channel->name,
- IRC_COLOR_RESET,
- IRC_COLOR_CHAT_DELIMITERS,
- string,
- IRC_COLOR_CHAT_DELIMITERS);
- free (string);
}
+ weechat_infolist_free (infolist);
}
- weechat_infolist_free (infolist);
- }
- /* display number of nicks, ops, halfops & voices on the channel */
- irc_nick_count (server, ptr_channel, &num_nicks, &num_op, &num_halfop,
- &num_voice, &num_normal);
- weechat_printf_date_tags (irc_msgbuffer_get_target_buffer (server, NULL,
- command, "names",
- ptr_channel->buffer),
- date,
- irc_protocol_tags (command, "irc_numeric", NULL),
- _("%sChannel %s%s%s: %s%d%s %s %s(%s%d%s %s, "
- "%s%d%s %s, %s%d%s %s, %s%d%s %s%s)"),
- weechat_prefix ("network"),
- IRC_COLOR_CHAT_CHANNEL,
- ptr_channel->name,
- IRC_COLOR_RESET,
- IRC_COLOR_CHAT_CHANNEL,
- num_nicks,
- IRC_COLOR_RESET,
- NG_("nick", "nicks", num_nicks),
- IRC_COLOR_CHAT_DELIMITERS,
- IRC_COLOR_CHAT_CHANNEL,
- num_op,
- IRC_COLOR_RESET,
- NG_("op", "ops", num_op),
- IRC_COLOR_CHAT_CHANNEL,
- num_halfop,
- IRC_COLOR_RESET,
- NG_("halfop", "halfops", num_halfop),
- IRC_COLOR_CHAT_CHANNEL,
- num_voice,
- IRC_COLOR_RESET,
- NG_("voice", "voices", num_voice),
- IRC_COLOR_CHAT_CHANNEL,
- num_normal,
- IRC_COLOR_RESET,
- NG_("normal", "normals", num_normal),
- IRC_COLOR_CHAT_DELIMITERS);
+ /* display number of nicks, ops, halfops & voices on the channel */
+ irc_nick_count (server, ptr_channel, &num_nicks, &num_op, &num_halfop,
+ &num_voice, &num_normal);
+ weechat_printf_date_tags (irc_msgbuffer_get_target_buffer (server, NULL,
+ command, "names",
+ ptr_channel->buffer),
+ date,
+ irc_protocol_tags (command, "irc_numeric", NULL),
+ _("%sChannel %s%s%s: %s%d%s %s %s(%s%d%s %s, "
+ "%s%d%s %s, %s%d%s %s, %s%d%s %s%s)"),
+ weechat_prefix ("network"),
+ IRC_COLOR_CHAT_CHANNEL,
+ ptr_channel->name,
+ IRC_COLOR_RESET,
+ IRC_COLOR_CHAT_CHANNEL,
+ num_nicks,
+ IRC_COLOR_RESET,
+ NG_("nick", "nicks", num_nicks),
+ IRC_COLOR_CHAT_DELIMITERS,
+ IRC_COLOR_CHAT_CHANNEL,
+ num_op,
+ IRC_COLOR_RESET,
+ NG_("op", "ops", num_op),
+ IRC_COLOR_CHAT_CHANNEL,
+ num_halfop,
+ IRC_COLOR_RESET,
+ NG_("halfop", "halfops", num_halfop),
+ IRC_COLOR_CHAT_CHANNEL,
+ num_voice,
+ IRC_COLOR_RESET,
+ NG_("voice", "voices", num_voice),
+ IRC_COLOR_CHAT_CHANNEL,
+ num_normal,
+ IRC_COLOR_RESET,
+ NG_("normal", "normals", num_normal),
+ IRC_COLOR_CHAT_DELIMITERS);
+ }
- if (!ptr_channel->names_received)
+ if (!weechat_hashtable_has_key (ptr_channel->join_msg_received, command))
{
irc_command_mode_server (server, ptr_channel, NULL,
IRC_SERVER_SEND_OUTQ_PRIO_LOW);
@@ -4079,7 +4107,7 @@ IRC_PROTOCOL_CALLBACK(366)
}
if (ptr_channel)
- ptr_channel->names_received = 1;
+ weechat_hashtable_set (ptr_channel->join_msg_received, command, "1");
return WEECHAT_RC_OK;
}
diff --git a/src/plugins/irc/irc-upgrade.c b/src/plugins/irc/irc-upgrade.c
index 3a9568a06..27f6c54b7 100644
--- a/src/plugins/irc/irc-upgrade.c
+++ b/src/plugins/irc/irc-upgrade.c
@@ -284,10 +284,11 @@ irc_upgrade_read_cb (void *data,
int object_id,
struct t_infolist *infolist)
{
- int flags, sock, size, i, index, nicks_count;
+ int flags, sock, size, i, index, nicks_count, num_items;
long number;
time_t join_time;
char *buf, option_name[64], **nicks, *nick_join, *pos, *error;
+ char **items;
const char *buffer_name, *str, *nick;
struct t_irc_nick *ptr_nick;
struct t_irc_redirect *ptr_redirect;
@@ -442,7 +443,21 @@ irc_upgrade_read_cb (void *data,
str = weechat_infolist_string (infolist, "key");
if (str)
irc_upgrade_current_channel->key = strdup (str);
- irc_upgrade_current_channel->names_received = weechat_infolist_integer (infolist, "names_received");
+ str = weechat_infolist_string (infolist, "join_msg_received");
+ if (str)
+ {
+ items = weechat_string_split (str, ",", 0, 0,
+ &num_items);
+ if (items)
+ {
+ for (i = 0; i < num_items; i++)
+ {
+ weechat_hashtable_set (irc_upgrade_current_channel->join_msg_received,
+ items[i], "1");
+ }
+ weechat_string_free_split (items);
+ }
+ }
irc_upgrade_current_channel->checking_away = weechat_infolist_integer (infolist, "checking_away");
str = weechat_infolist_string (infolist, "away_message");
if (str)