summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--doc/de/autogen/plugin_api/completions.txt2
-rw-r--r--doc/de/autogen/plugin_api/infolists.txt2
-rw-r--r--doc/de/autogen/user/irc_commands.txt47
-rw-r--r--doc/de/autogen/user/irc_options.txt25
-rw-r--r--doc/en/autogen/plugin_api/completions.txt2
-rw-r--r--doc/en/autogen/plugin_api/infolists.txt2
-rw-r--r--doc/en/autogen/user/irc_commands.txt27
-rw-r--r--doc/en/autogen/user/irc_options.txt25
-rw-r--r--doc/fr/autogen/plugin_api/completions.txt2
-rw-r--r--doc/fr/autogen/plugin_api/infolists.txt2
-rw-r--r--doc/fr/autogen/user/irc_commands.txt23
-rw-r--r--doc/fr/autogen/user/irc_options.txt25
-rw-r--r--doc/it/autogen/plugin_api/completions.txt2
-rw-r--r--doc/it/autogen/plugin_api/infolists.txt2
-rw-r--r--doc/it/autogen/user/irc_commands.txt53
-rw-r--r--doc/it/autogen/user/irc_options.txt25
-rw-r--r--po/POTFILES.in2
-rw-r--r--po/cs.po193
-rw-r--r--po/de.po190
-rw-r--r--po/es.po225
-rw-r--r--po/fr.po217
-rw-r--r--po/hu.po217
-rw-r--r--po/it.po210
-rw-r--r--po/pl.po198
-rw-r--r--po/ru.po217
-rw-r--r--po/srcfiles.cmake2
-rw-r--r--po/weechat.pot148
-rw-r--r--src/plugins/irc/CMakeLists.txt1
-rw-r--r--src/plugins/irc/Makefile.am2
-rw-r--r--src/plugins/irc/irc-command.c232
-rw-r--r--src/plugins/irc/irc-completion.c52
-rw-r--r--src/plugins/irc/irc-config.c154
-rw-r--r--src/plugins/irc/irc-config.h8
-rw-r--r--src/plugins/irc/irc-ignore.c10
-rw-r--r--src/plugins/irc/irc-ignore.h4
-rw-r--r--src/plugins/irc/irc-info.c50
-rw-r--r--src/plugins/irc/irc-notify.c927
-rw-r--r--src/plugins/irc/irc-notify.h66
-rw-r--r--src/plugins/irc/irc-redirect.h7
-rw-r--r--src/plugins/irc/irc-server.c10
-rw-r--r--src/plugins/irc/irc-server.h6
-rw-r--r--src/plugins/irc/irc-upgrade.c42
-rw-r--r--src/plugins/irc/irc-upgrade.h1
-rw-r--r--src/plugins/irc/irc.c9
45 files changed, 3219 insertions, 453 deletions
diff --git a/ChangeLog b/ChangeLog
index 15a7a9e75..f2765d467 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,7 +1,7 @@
WeeChat ChangeLog
=================
Sébastien Helleu <flashcode@flashtux.org>
-v0.3.4-dev, 2010-10-30
+v0.3.4-dev, 2010-11-06
Version 0.3.4 (under dev!)
@@ -29,6 +29,10 @@ Version 0.3.4 (under dev!)
nicklist_group_get_integer, nicklist_group_get_string,
nicklist_group_get_pointer, nicklist_group_set, nicklist_nick_get_integer,
nicklist_nick_get_string, nicklist_nick_get_pointer, nicklist_nick_set
+* irc: add command /notify, new options irc.look.notify_tags_ison,
+ irc.look.notify_tags_whois, irc.network.notify_check_ison,
+ irc.network.notify_check_whois, new option "notify" in servers, new infolist
+ "irc_notify" (task #5441)
* irc: add new option irc.look.nick_color_force (task #7374)
* irc: improve nick prefixes, all modes (even unknown) are used with PREFIX
value from message 005
diff --git a/doc/de/autogen/plugin_api/completions.txt b/doc/de/autogen/plugin_api/completions.txt
index 489199381..177be93cb 100644
--- a/doc/de/autogen/plugin_api/completions.txt
+++ b/doc/de/autogen/plugin_api/completions.txt
@@ -18,6 +18,8 @@
| irc | irc_msg_part | Standardnachricht beim Verlassen (/part) eines IRC-Channels
+| irc | irc_notify_nicks | nicks in notify list
+
| irc | irc_privates | Private auf allen IRC Servern
| irc | irc_server | aktueller IRC-Server
diff --git a/doc/de/autogen/plugin_api/infolists.txt b/doc/de/autogen/plugin_api/infolists.txt
index 397076ff0..e69571e81 100644
--- a/doc/de/autogen/plugin_api/infolists.txt
+++ b/doc/de/autogen/plugin_api/infolists.txt
@@ -10,6 +10,8 @@
| irc | irc_nick | Liste der Nicks im IRC-Channel | Nick Pointer (optional) | Server,Channel,Nick (Channel und Nick sind optional)
+| irc | irc_notify | list of notify | notify pointer (optional) | Servername (darf mit einem "*" als Platzhalter beginnen oder enden) (optional)
+
| irc | irc_server | Liste der IRC-Server | Server Pointer (optional) | Servername (darf mit einem "*" als Platzhalter beginnen oder enden) (optional)
| logger | logger_buffer | Liste der protokollierten Buffer | Logger Pointer (optional) | -
diff --git a/doc/de/autogen/user/irc_commands.txt b/doc/de/autogen/user/irc_commands.txt
index da3963086..52b9e79c6 100644
--- a/doc/de/autogen/user/irc_commands.txt
+++ b/doc/de/autogen/user/irc_commands.txt
@@ -151,21 +151,21 @@
........................................
Ignoriert Nicks/Hosts von Channels oder Servern
- list: zeigt an, wer/was ignoriert wird
- add: füge eine Ignorierung hinzu
- del: entferne eine Ignorierung
- number: Nummer der Ignorierung die entfernt werden soll (nutze "list" )
- -all: entfernt alle Einträge
- nick/host: Nick oder Host der ignoriert werden soll: Syntax ist "re:regex" oder "mask" (mask ist eine Zeichenkette in der mittels "*" (Joker) ein oder mehrere Zeichen ersetzt werden können)
- server: interner Name des Server, in dem die Ignorierung statt finden soll
- channel: Name des Channel, in dem die Ignorierung statt finden soll
+ list: list all ignores
+ add: add an ignore
+ del: delete an ignore
+ number: number of ignore to delete (look at list to find it)
+ -all: delete all ignores
+ nick/host: nick or host to ignore: syntax is "re:regex" or "mask" (a mask is a string with some "*" to replace one or more chars)
+ server: internal server name where ignore is working
+ channel: channel name where ignore is working
- Beispiele:
- ignoriert den Nick "toto":
+ Examples:
+ ignore nick "toto" everywhere:
/ignore add toto
- ignoriert den Host "toto@domain.com" auf dem freenode Server:
+ ignore host "toto@domain.com" on freenode server:
/ignore add toto@domain.com freenode
- ignoriert den Host "toto*@*.domain.com" im Chat freenode/#weechat:
+ ignore host "toto*@*.domain.com" on freenode/#weechat:
/ignore add toto*@*.domain.com freenode #weechat
........................................
@@ -364,6 +364,29 @@
Text: zu sendender Text
........................................
+&bull; *`/notify`* `[add nick [server [-away]]] | [del nick|-all [server]]`::
+
+........................................
+ add a notification for presence or away status of nicks on servers
+
+ add: add a notification
+ nick: nickname
+ server: internal server name (by default current server)
+ -away: notify when away message is changed (by doing whois on nick)
+ del: delete a notification
+ -all: delete all notifications
+
+ Without argument, this command displays notifications for current server (or all servers if command is issued on core buffer).
+
+ Examples:
+ notify when "toto" joins/quits current server:
+ /notify add toto
+ notify when "toto" joins/quits freenode server:
+ /notify add toto freenode
+ notify when "toto" is away or back on freenode server:
+ /notify add toto freenode -away
+........................................
+
&bull; *`/op`* `Nickname [Nickname]`::
........................................
diff --git a/doc/de/autogen/user/irc_options.txt b/doc/de/autogen/user/irc_options.txt
index 6a239da5a..94d4b8a14 100644
--- a/doc/de/autogen/user/irc_options.txt
+++ b/doc/de/autogen/user/irc_options.txt
@@ -218,6 +218,16 @@
** Typ: integer
** Werte: auto, never, always (Standardwert: `auto`)
+* *irc.look.notify_tags_ison*
+** Beschreibung: `comma separated list of tags used in messages printed by notify when a nick joins or quits server (result of command ison), for example: "notify_highglight", "notify_message" or "notify_private"`
+** Typ: Zeichenkette
+** Werte: beliebige Zeichenkette (Standardwert: `"notify_message"`)
+
+* *irc.look.notify_tags_whois*
+** Beschreibung: `comma separated list of tags used in messages printed by notify when a nick away status changes (result of command whois), for example: "notify_highglight", "notify_message" or "notify_private"`
+** Typ: Zeichenkette
+** Werte: beliebige Zeichenkette (Standardwert: `"notify_message"`)
+
* *irc.look.part_closes_buffer*
** Beschreibung: `Schließt den Buffer wenn "/part" im Channel ausgeführt wird`
** Typ: boolesch
@@ -298,6 +308,16 @@
** Typ: integer
** Werte: 1 .. 3600 (Standardwert: `1`)
+* *irc.network.notify_check_ison*
+** Beschreibung: `interval between two checks for notify with IRC command "ison" (in minutes)`
+** Typ: integer
+** Werte: 1 .. 10080 (Standardwert: `1`)
+
+* *irc.network.notify_check_whois*
+** Beschreibung: `interval between two checks for notify with IRC command "whois" (in minutes)`
+** Typ: integer
+** Werte: 1 .. 10080 (Standardwert: `5`)
+
* *irc.network.send_unknown_commands*
** Beschreibung: `Sende unbekannte Befehle an den Server`
** Typ: boolesch
@@ -398,6 +418,11 @@
** Typ: Zeichenkette
** Werte: beliebige Zeichenkette (Standardwert: `""`)
+* *irc.server_default.notify*
+** Beschreibung: `notify list for server (you should not change this option but use /notify command instead)`
+** Typ: Zeichenkette
+** Werte: beliebige Zeichenkette (Standardwert: `""`)
+
* *irc.server_default.password*
** Beschreibung: `Passwort für den Server`
** Typ: Zeichenkette
diff --git a/doc/en/autogen/plugin_api/completions.txt b/doc/en/autogen/plugin_api/completions.txt
index 85dc06699..f9ab6bc73 100644
--- a/doc/en/autogen/plugin_api/completions.txt
+++ b/doc/en/autogen/plugin_api/completions.txt
@@ -18,6 +18,8 @@
| irc | irc_msg_part | default part message for IRC channel
+| irc | irc_notify_nicks | nicks in notify list
+
| irc | irc_privates | privates on all IRC servers
| irc | irc_server | current IRC server
diff --git a/doc/en/autogen/plugin_api/infolists.txt b/doc/en/autogen/plugin_api/infolists.txt
index ddbd46de1..5fc908948 100644
--- a/doc/en/autogen/plugin_api/infolists.txt
+++ b/doc/en/autogen/plugin_api/infolists.txt
@@ -10,6 +10,8 @@
| irc | irc_nick | list of nicks for an IRC channel | nick pointer (optional) | server,channel,nick (channel and nick are optional)
+| irc | irc_notify | list of notify | notify pointer (optional) | server name (can start or end with "*" as wildcard) (optional)
+
| irc | irc_server | list of IRC servers | server pointer (optional) | server name (can start or end with "*" as wildcard) (optional)
| logger | logger_buffer | list of logger buffers | logger pointer (optional) | -
diff --git a/doc/en/autogen/user/irc_commands.txt b/doc/en/autogen/user/irc_commands.txt
index 97c9b2ab5..b225c4918 100644
--- a/doc/en/autogen/user/irc_commands.txt
+++ b/doc/en/autogen/user/irc_commands.txt
@@ -152,8 +152,8 @@
ignore nicks/hosts from servers or channels
list: list all ignores
- add: add a ignore
- del: del a ignore
+ add: add an ignore
+ del: delete an ignore
number: number of ignore to delete (look at list to find it)
-all: delete all ignores
nick/host: nick or host to ignore: syntax is "re:regex" or "mask" (a mask is a string with some "*" to replace one or more chars)
@@ -364,6 +364,29 @@
text: text to send
........................................
+&bull; *`/notify`* `[add nick [server [-away]]] | [del nick|-all [server]]`::
+
+........................................
+ add a notification for presence or away status of nicks on servers
+
+ add: add a notification
+ nick: nickname
+ server: internal server name (by default current server)
+ -away: notify when away message is changed (by doing whois on nick)
+ del: delete a notification
+ -all: delete all notifications
+
+ Without argument, this command displays notifications for current server (or all servers if command is issued on core buffer).
+
+ Examples:
+ notify when "toto" joins/quits current server:
+ /notify add toto
+ notify when "toto" joins/quits freenode server:
+ /notify add toto freenode
+ notify when "toto" is away or back on freenode server:
+ /notify add toto freenode -away
+........................................
+
&bull; *`/op`* `nickname [nickname]`::
........................................
diff --git a/doc/en/autogen/user/irc_options.txt b/doc/en/autogen/user/irc_options.txt
index 7020680a0..85be17fca 100644
--- a/doc/en/autogen/user/irc_options.txt
+++ b/doc/en/autogen/user/irc_options.txt
@@ -218,6 +218,16 @@
** type: integer
** values: auto, never, always (default value: `auto`)
+* *irc.look.notify_tags_ison*
+** description: `comma separated list of tags used in messages printed by notify when a nick joins or quits server (result of command ison), for example: "notify_highglight", "notify_message" or "notify_private"`
+** type: string
+** values: any string (default value: `"notify_message"`)
+
+* *irc.look.notify_tags_whois*
+** description: `comma separated list of tags used in messages printed by notify when a nick away status changes (result of command whois), for example: "notify_highglight", "notify_message" or "notify_private"`
+** type: string
+** values: any string (default value: `"notify_message"`)
+
* *irc.look.part_closes_buffer*
** description: `close buffer when /part is issued on a channel`
** type: boolean
@@ -298,6 +308,16 @@
** type: integer
** values: 1 .. 3600 (default value: `1`)
+* *irc.network.notify_check_ison*
+** description: `interval between two checks for notify with IRC command "ison" (in minutes)`
+** type: integer
+** values: 1 .. 10080 (default value: `1`)
+
+* *irc.network.notify_check_whois*
+** description: `interval between two checks for notify with IRC command "whois" (in minutes)`
+** type: integer
+** values: 1 .. 10080 (default value: `5`)
+
* *irc.network.send_unknown_commands*
** description: `send unknown commands to server`
** type: boolean
@@ -398,6 +418,11 @@
** type: string
** values: any string (default value: `""`)
+* *irc.server_default.notify*
+** description: `notify list for server (you should not change this option but use /notify command instead)`
+** type: string
+** values: any string (default value: `""`)
+
* *irc.server_default.password*
** description: `password for server`
** type: string
diff --git a/doc/fr/autogen/plugin_api/completions.txt b/doc/fr/autogen/plugin_api/completions.txt
index e84b1614f..4f07b8f11 100644
--- a/doc/fr/autogen/plugin_api/completions.txt
+++ b/doc/fr/autogen/plugin_api/completions.txt
@@ -18,6 +18,8 @@
| irc | irc_msg_part | message de fin par défaut pour le canal IRC
+| irc | irc_notify_nicks | pseudos dans la liste de notifications
+
| irc | irc_privates | privés sur tous les serveurs IRC
| irc | irc_server | serveur IRC courant
diff --git a/doc/fr/autogen/plugin_api/infolists.txt b/doc/fr/autogen/plugin_api/infolists.txt
index a203d3311..7003324e5 100644
--- a/doc/fr/autogen/plugin_api/infolists.txt
+++ b/doc/fr/autogen/plugin_api/infolists.txt
@@ -10,6 +10,8 @@
| irc | irc_nick | liste des pseudos pour un canal IRC | pointeur vers le pseudo (optionnel) | serveur,canal,pseudo (canal et pseudo sont optionnels)
+| irc | irc_notify | liste des notifications | pointeur vers la notification (optionnel) | nom de serveur (peut démarrer ou se terminer par "*" comme joker) (optionnel)
+
| irc | irc_server | liste des serveurs IRC | pointeur vers le serveur (optionnel) | nom de serveur (peut démarrer ou se terminer par "*" comme joker) (optionnel)
| logger | logger_buffer | liste des enregistreurs de tampons (loggers) | pointeur vers le logger (optionnel) | -
diff --git a/doc/fr/autogen/user/irc_commands.txt b/doc/fr/autogen/user/irc_commands.txt
index d59d8db25..765df74cd 100644
--- a/doc/fr/autogen/user/irc_commands.txt
+++ b/doc/fr/autogen/user/irc_commands.txt
@@ -364,6 +364,29 @@
texte: texte à envoyer
........................................
+&bull; *`/notify`* `[add pseudo [serveur [-away]]] | [del pseudo|-all [serveur]]`::
+
+........................................
+ ajoute une notification de présence ou de statut d'absence pour des pseudos sur les serveurs
+
+ add: ajoute une notification
+ pasudo: pseudo
+ serveur: nom interne du serveur (par défaut le serveur courant)
+ -away: notifie quand le message d'absence est changé (en faisant un whois sur le pseudo)
+ del: supprime une notification
+ -all: supprime toutes les notifications
+
+ Sans paramètre, cette commande affiche les notifications pour le serveur courant (ou tous les serveurs si la commande est exécutée sur le tampon "core").
+
+ Exemples:
+ notifie quand "toto" rejoint/quitte le serveur courant:
+ /notify add toto
+ notifie quand "toto" rejoint/quitte le serveur freenode:
+ /notify add toto freenode
+ notifie quand "toto" est absent ou de retour sur le serveur freenode:
+ /notify add toto freenode -away
+........................................
+
&bull; *`/op`* `pseudo [pseudo]`::
........................................
diff --git a/doc/fr/autogen/user/irc_options.txt b/doc/fr/autogen/user/irc_options.txt
index 6dfabc4e9..51973d371 100644
--- a/doc/fr/autogen/user/irc_options.txt
+++ b/doc/fr/autogen/user/irc_options.txt
@@ -218,6 +218,16 @@
** type: entier
** valeurs: auto, never, always (valeur par défaut: `auto`)
+* *irc.look.notify_tags_ison*
+** description: `liste des tags (séparés par des virgules) utilisés dans les messages affichés par notify lorsqu'un pseudo a rejoint ou quitté le serveur (résultat de la commande ison), par exemple: "notify_highlight", "notify_message" ou "notify_private"`
+** type: chaîne
+** valeurs: toute chaîne (valeur par défaut: `"notify_message"`)
+
+* *irc.look.notify_tags_whois*
+** description: `liste des tags (séparés par des virgules) utilisés dans les messages affichés par notify lorsque le status d'absence d'un pseudo change (résultat de la commande whois), par exemple: "notify_highlight", "notify_message" ou "notify_private"`
+** type: chaîne
+** valeurs: toute chaîne (valeur par défaut: `"notify_message"`)
+
* *irc.look.part_closes_buffer*
** description: `fermer le tampon lorsque /part est exécuté sur un canal`
** type: booléen
@@ -298,6 +308,16 @@
** type: entier
** valeurs: 1 .. 3600 (valeur par défaut: `1`)
+* *irc.network.notify_check_ison*
+** description: `intervalle entre deux vérifications de notification avec la commande IRC "ison" (en minutes)`
+** type: entier
+** valeurs: 1 .. 10080 (valeur par défaut: `1`)
+
+* *irc.network.notify_check_whois*
+** description: `intervalle entre deux vérifications de notification avec la commande IRC "whois" (en minutes)`
+** type: entier
+** valeurs: 1 .. 10080 (valeur par défaut: `5`)
+
* *irc.network.send_unknown_commands*
** description: `envoie les commandes inconnues au serveur`
** type: booléen
@@ -398,6 +418,11 @@
** type: chaîne
** valeurs: toute chaîne (valeur par défaut: `""`)
+* *irc.server_default.notify*
+** description: `liste de notifications pour le serveur (vous ne devriez pas changer cette option mais utiliser la commande /notify)`
+** type: chaîne
+** valeurs: toute chaîne (valeur par défaut: `""`)
+
* *irc.server_default.password*
** description: `mot de passe pour le serveur`
** type: chaîne
diff --git a/doc/it/autogen/plugin_api/completions.txt b/doc/it/autogen/plugin_api/completions.txt
index a2189f144..245f9e1f5 100644
--- a/doc/it/autogen/plugin_api/completions.txt
+++ b/doc/it/autogen/plugin_api/completions.txt
@@ -18,6 +18,8 @@
| irc | irc_msg_part | messaggio di uscita predefinito per il canale IRC
+| irc | irc_notify_nicks | nicks in notify list
+
| irc | irc_privates | privati su tutti i server IRC
| irc | irc_server | server IRC corrente
diff --git a/doc/it/autogen/plugin_api/infolists.txt b/doc/it/autogen/plugin_api/infolists.txt
index 0c035d019..d9e57c79e 100644
--- a/doc/it/autogen/plugin_api/infolists.txt
+++ b/doc/it/autogen/plugin_api/infolists.txt
@@ -10,6 +10,8 @@
| irc | irc_nick | elenco dei nick per un canale IRC | puntatore al nick (opzionale) | server,canale,nick (canale e nick sono opzionali)
+| irc | irc_notify | list of notify | notify pointer (optional) | nome server (può iniziare o terminare con "*" come carattere jolly) (opzionale)
+
| irc | irc_server | elenco di server IRC | puntatore al server (opzionale) | nome server (può iniziare o terminare con "*" come carattere jolly) (opzionale)
| logger | logger_buffer | elenco dei buffer logger | puntatore al logger (opzionale) | -
diff --git a/doc/it/autogen/user/irc_commands.txt b/doc/it/autogen/user/irc_commands.txt
index d957d78ef..6682995af 100644
--- a/doc/it/autogen/user/irc_commands.txt
+++ b/doc/it/autogen/user/irc_commands.txt
@@ -151,22 +151,22 @@
........................................
ignora nick/host dai server o dai canali
- list: elenca tutti gli ignore
- add: aggiungi un ignore
- del: elimina un ignore
- numero: numero di ignore da eliminare (nella lista)
- all: elimina tutti gli ignore
- nick/host: nick o host da ignorare: la sintassi è "re:regex" o "mask" (una mask è una stringa con alcuni "*" per sostituire uno o più caratteri)
- server: nome interno del server dove l'ignore è attivo
- canale: nome del canale dove l'ignore è attivo
+ list: list all ignores
+ add: add an ignore
+ del: delete an ignore
+ number: number of ignore to delete (look at list to find it)
+ -all: delete all ignores
+ nick/host: nick or host to ignore: syntax is "re:regex" or "mask" (a mask is a string with some "*" to replace one or more chars)
+ server: internal server name where ignore is working
+ channel: channel name where ignore is working
- Esempi:
- ignora nick "tizio" su tutti gli host/canali:
- /ignore add tizio
- ignora l'host "tizio@dominio.com" sul server freenode:
- /ignore add tizio@dominio.com freenode
- ignora l'host "tizio*@*.dominio.com" su freenode/#weechat:
- /ignore add tizio*@*.dominio.com freenode #weechat
+ Examples:
+ ignore nick "toto" everywhere:
+ /ignore add toto
+ ignore host "toto@domain.com" on freenode server:
+ /ignore add toto@domain.com freenode
+ ignore host "toto*@*.domain.com" on freenode/#weechat:
+ /ignore add toto*@*.domain.com freenode #weechat
........................................
&bull; *`/info`* `[obiettivo]`::
@@ -364,6 +364,29 @@
testo: testo da inviare
........................................
+&bull; *`/notify`* `[add nick [server [-away]]] | [del nick|-all [server]]`::
+
+........................................
+ add a notification for presence or away status of nicks on servers
+
+ add: add a notification
+ nick: nickname
+ server: internal server name (by default current server)
+ -away: notify when away message is changed (by doing whois on nick)
+ del: delete a notification
+ -all: delete all notifications
+
+ Without argument, this command displays notifications for current server (or all servers if command is issued on core buffer).
+
+ Examples:
+ notify when "toto" joins/quits current server:
+ /notify add toto
+ notify when "toto" joins/quits freenode server:
+ /notify add toto freenode
+ notify when "toto" is away or back on freenode server:
+ /notify add toto freenode -away
+........................................
+
&bull; *`/op`* `nick [nick]`::
........................................
diff --git a/doc/it/autogen/user/irc_options.txt b/doc/it/autogen/user/irc_options.txt
index 15a1a685f..a9e084edd 100644
--- a/doc/it/autogen/user/irc_options.txt
+++ b/doc/it/autogen/user/irc_options.txt
@@ -218,6 +218,16 @@
** tipo: intero
** valori: auto, never, always (valore predefinito: `auto`)
+* *irc.look.notify_tags_ison*
+** descrizione: `comma separated list of tags used in messages printed by notify when a nick joins or quits server (result of command ison), for example: "notify_highglight", "notify_message" or "notify_private"`
+** tipo: stringa
+** valori: qualsiasi stringa (valore predefinito: `"notify_message"`)
+
+* *irc.look.notify_tags_whois*
+** descrizione: `comma separated list of tags used in messages printed by notify when a nick away status changes (result of command whois), for example: "notify_highglight", "notify_message" or "notify_private"`
+** tipo: stringa
+** valori: qualsiasi stringa (valore predefinito: `"notify_message"`)
+
* *irc.look.part_closes_buffer*
** descrizione: `chiude buffer quando viene digitato /part nel canale`
** tipo: bool
@@ -298,6 +308,16 @@
** tipo: intero
** valori: 1 .. 3600 (valore predefinito: `1`)
+* *irc.network.notify_check_ison*
+** descrizione: `interval between two checks for notify with IRC command "ison" (in minutes)`
+** tipo: intero
+** valori: 1 .. 10080 (valore predefinito: `1`)
+
+* *irc.network.notify_check_whois*
+** descrizione: `interval between two checks for notify with IRC command "whois" (in minutes)`
+** tipo: intero
+** valori: 1 .. 10080 (valore predefinito: `5`)
+
* *irc.network.send_unknown_commands*
** descrizione: `invia comandi sconosciuti al server`
** tipo: bool
@@ -398,6 +418,11 @@
** tipo: stringa
** valori: qualsiasi stringa (valore predefinito: `""`)
+* *irc.server_default.notify*
+** descrizione: `notify list for server (you should not change this option but use /notify command instead)`
+** tipo: stringa
+** valori: qualsiasi stringa (valore predefinito: `""`)
+
* *irc.server_default.password*
** descrizione: `password per il server`
** tipo: stringa
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 4b148a8f9..a60c58950 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -137,6 +137,8 @@
./src/plugins/irc/irc-msgbuffer.h
./src/plugins/irc/irc-nick.c
./src/plugins/irc/irc-nick.h
+./src/plugins/irc/irc-notify.c
+./src/plugins/irc/irc-notify.h
./src/plugins/irc/irc-protocol.c
./src/plugins/irc/irc-protocol.h
./src/plugins/irc/irc-raw.c
diff --git a/po/cs.po b/po/cs.po
index a2159bf36..736dca372 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -20,8 +20,8 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.3.4-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2010-11-01 18:38+0100\n"
-"PO-Revision-Date: 2010-08-07 10:46+0200\n"
+"POT-Creation-Date: 2010-11-06 11:25+0100\n"
+"PO-Revision-Date: 2010-11-05 17:16+0100\n"
"Last-Translator: Jiri Golembiovsky <golemj@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
"Language: Czech\n"
@@ -3209,6 +3209,41 @@ msgstr ""
msgid "Notice"
msgstr ""
+#, fuzzy, c-format
+msgid ""
+"%s%s: server must be specified because you are not on an irc server or "
+"channel"
+msgstr ""
+"%s%s: příkaz \"%s\" nemůže být spuštěn v irc bufferu (server nebo kanál)"
+
+#, fuzzy, c-format
+msgid "%s%s: notify already exists"
+msgstr "%s%s: ignorování již existuje"
+
+#, fuzzy, c-format
+msgid "%s: notification added for %s%s"
+msgstr "%s: přepínám adresu na %s/%d"
+
+#, fuzzy, c-format
+msgid "%s%s: error adding notification"
+msgstr "%s%s: chyba při přidávání ignorování"
+
+#, fuzzy, c-format
+msgid "%s: all notifications deleted"
+msgstr "%s: všechny ignorování byly smazány"
+
+#, fuzzy, c-format
+msgid "%s: no notification in list"
+msgstr "%s: žádné ignorování v seznamu"
+
+#, fuzzy, c-format
+msgid "%s: notification deleted"
+msgstr "%s: ignorování smazáno"
+
+#, fuzzy, c-format
+msgid "%s%s: notification not found"
+msgstr "%s%s: ignorování nenalezeno"
+
#, c-format
msgid "%s%s: cannot create new private buffer \"%s\""
msgstr "%s%s: nemohu vytvořít nový soukromý buffer\"%s\""
@@ -3519,10 +3554,11 @@ msgstr "ignorovat přezdívky/hosty na serveru nebo kanálu"
msgid "[list] | [add [re:]nick/host [server [channel]]] | [del number|-all]"
msgstr "[list] | [add [re:]nick/host [server [channel]]] | [del number|-all]"
+#, fuzzy
msgid ""
" list: list all ignores\n"
-" add: add a ignore\n"
-" del: del a ignore\n"
+" add: add an ignore\n"
+" del: delete an ignore\n"
" number: number of ignore to delete (look at list to find it)\n"
" -all: delete all ignores\n"
"nick/host: nick or host to ignore: syntax is \"re:regex\" or \"mask\" (a "
@@ -3843,6 +3879,33 @@ msgstr ""
"přezdívka: uživatel, kterému poslat notifikaci\n"
" text: text, který poslat"
+msgid "add a notification for presence or away status of nicks on servers"
+msgstr ""
+
+#, fuzzy
+msgid "[add nick [server [-away]]] | [del nick|-all [server]]"
+msgstr "[list] | [add [re:]nick/host [server [channel]]] | [del number|-all]"
+
+msgid ""
+" add: add a notification\n"
+" nick: nickname\n"
+"server: internal server name (by default current server)\n"
+" -away: notify when away message is changed (by doing whois on nick)\n"
+" del: delete a notification\n"
+" -all: delete all notifications\n"
+"\n"
+"Without argument, this command displays notifications for current server (or "
+"all servers if command is issued on core buffer).\n"
+"\n"
+"Examples:\n"
+" notify when \"toto\" joins/quits current server:\n"
+" /notify add toto\n"
+" notify when \"toto\" joins/quits freenode server:\n"
+" /notify add toto freenode\n"
+" notify when \"toto\" is away or back on freenode server:\n"
+" /notify add toto freenode -away"
+msgstr ""
+
msgid "give channel operator status to nickname(s)"
msgstr "dát status operátora kanálu přezdívce (přezdívkám)"
@@ -4347,6 +4410,10 @@ msgstr "výchozí odchozí zpráva pro IRC kanál"
msgid "numbers for defined ignores"
msgstr "čísla pro definované ignorování"
+#, fuzzy
+msgid "nicks in notify list"
+msgstr "%s: žádné ignorování v seznamu"
+
#, c-format
msgid ""
"%s%s: warning: server \"%s\" not found in configuration file, not deleted in "
@@ -4521,6 +4588,11 @@ msgstr ""
"výchozí zpráva při uknočnení (odpojení od serveru) (\"%v\" bude nahrazeno "
"verzí WeeChat v řetězci)"
+msgid ""
+"notify list for server (you should not change this option but use /notify "
+"command instead)"
+msgstr ""
+
#, c-format
msgid "%s%s: error creating server \"%s\""
msgstr "%s%s: chyba při vytváření serveru \"%s\""
@@ -4655,6 +4727,18 @@ msgstr ""
"zobrazovat upozornění jako soukromé zprávy (pokud je automaticky, použije se "
"soukromý buffer, kdy existuje)"
+msgid ""
+"comma separated list of tags used in messages printed by notify when a nick "
+"joins or quits server (result of command ison), for example: "
+"\"notify_highglight\", \"notify_message\" or \"notify_private\""
+msgstr ""
+
+msgid ""
+"comma separated list of tags used in messages printed by notify when a nick "
+"away status changes (result of command whois), for example: "
+"\"notify_highglight\", \"notify_message\" or \"notify_private\""
+msgstr ""
+
msgid "close buffer when /part is issued on a channel"
msgstr "zavřít buffer, když je na kanálu spuštěn /part"
@@ -4750,6 +4834,17 @@ msgstr ""
"maximální délka prodlevy automatíckého znovupřipojení k serveru (v "
"sekundách, 0 = žádné maximum)"
+msgid "when off, colors codes are ignored in incoming messages"
+msgstr "pokud je off, jsou barvy v příchozích zprávách ignorovány"
+
+msgid ""
+"allow user to send colors with special codes (ctrl-c + a code and optional "
+"color: b=bold, cxx=color, cxx,yy=color+background, u=underline, r=reverse)"
+msgstr ""
+"povolit uživateli posílat barvy se speciálními kódy (ctrl-c + kód a "
+"volitelná barva: b=tlustě, cxx=barva, cxx,yy=barva+pozadí, u=podtržené, "
+"r=obrácené)"
+
msgid "interval between two checks for lag (in seconds, 0 = never check)"
msgstr ""
"interval mezi dvěmi knotrolami pro lag (v sekundách, 0 = nikdy nekontrolovat)"
@@ -4766,19 +4861,23 @@ msgid ""
msgstr ""
"interval mezi dvěmi knotrolami pro lag, kdyz se lag zvětšuje (v sekundách)"
-msgid "when off, colors codes are ignored in incoming messages"
-msgstr "pokud je off, jsou barvy v příchozích zprávách ignorovány"
+msgid "send unknown commands to server"
+msgstr "posílat neznámé příkazy na server"
+#, fuzzy
msgid ""
-"allow user to send colors with special codes (ctrl-c + a code and optional "
-"color: b=bold, cxx=color, cxx,yy=color+background, u=underline, r=reverse)"
+"interval between two checks for notify with IRC command \"ison\" (in minutes)"
msgstr ""
-"povolit uživateli posílat barvy se speciálními kódy (ctrl-c + kód a "
-"volitelná barva: b=tlustě, cxx=barva, cxx,yy=barva+pozadí, u=podtržené, "
-"r=obrácené)"
+"interval mezi dvěmi knotrolami pro nepřítomnost (v minutách, 0 = nikdy "
+"nekontrolovat)"
-msgid "send unknown commands to server"
-msgstr "posílat neznámé příkazy na server"
+#, fuzzy
+msgid ""
+"interval between two checks for notify with IRC command \"whois\" (in "
+"minutes)"
+msgstr ""
+"interval mezi dvěmi knotrolami pro nepřítomnost (v minutách, 0 = nikdy "
+"nekontrolovat)"
#, c-format
msgid "%sCTCP requested by %s%s%s: %s%s%s%s%s%s"
@@ -4941,6 +5040,14 @@ msgstr "seznam pro IRC ignorování"
msgid "ignore pointer (optional)"
msgstr "ignorovat ukazatel (volitelné)"
+#, fuzzy
+msgid "list of notify"
+msgstr "seznam konfiguračních možností"
+
+#, fuzzy
+msgid "notify pointer (optional)"
+msgstr "ukazatel přezdívky (volitelné)"
+
#, c-format
msgid "%s%s: you are not connected to server"
msgstr "%s%s: nejste připojen k serveru"
@@ -4949,6 +5056,46 @@ msgstr "%s%s: nejste připojen k serveru"
msgid "%s%s: this buffer is not a channel!"
msgstr "%s%s: tenhle buffer není kanál!"
+msgid "offline"
+msgstr ""
+
+msgid "online"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Notify list for %s%s%s:"
+msgstr "Xfer seznam:"
+
+msgid "Notify list is empty on this server"
+msgstr ""
+
+#, fuzzy
+msgid "Notify list for all servers:"
+msgstr "Xfer seznam:"
+
+msgid "Notify list is empty on all servers"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%snotify: %s%s%s has joined %s%s"
+msgstr "%s%s%s%s byl vykopnut %s%s%s"
+
+#, fuzzy, c-format
+msgid "%snotify: %s%s%s has quit %s%s"
+msgstr "%s%s%s%s byl vykopnut %s%s%s"
+
+#, fuzzy, c-format
+msgid "%snotify: %s%s%s is now away: \"%s\""
+msgstr "%s%s[%s%s%s]%s je pryč: %s"
+
+#, fuzzy, c-format
+msgid "%snotify: %s%s%s is back"
+msgstr "%sTéma pro %s%s%s v \"%s%s\""
+
+#, fuzzy, c-format
+msgid "%snotify: %s%s%s is still away: \"%s\""
+msgstr "%s%s[%s%s%s]%s je pryč: %s"
+
#, c-format
msgid ""
"%s%s: error building answer for SASL authentication, using mechanism \"%s\""
@@ -6934,23 +7081,3 @@ msgstr ""
msgid "Pointer"
msgstr "Ukazatel"
-
-#~ msgid "open new channels near server"
-#~ msgstr "otevřít nový kanál poblíž serveru"
-
-#~ msgid "open new privates near server"
-#~ msgstr "otevřít nový soukromý rozhovor poblíž serveru"
-
-#~ msgid "%s%s: addresses not defined for server \"%s\", cannot connect"
-#~ msgstr "%s%s: adresa pro server \"%s\" není definována, nemohu se připojit"
-
-#~ msgid "%s%s: buffer not found for IRC server \"%s\", channel \"%s\""
-#~ msgstr "%s%s: buffer IRC serveru \"%s\", kanálu \"%s\" nenalezen"
-
-#, fuzzy
-#~ msgid "list of regex modifiers"
-#~ msgstr "seznam xfer"
-
-#, fuzzy
-#~ msgid "List of regex modifiers:"
-#~ msgstr "Seznam proxy:"
diff --git a/po/de.po b/po/de.po
index f95513f5f..781a9d917 100644
--- a/po/de.po
+++ b/po/de.po
@@ -22,8 +22,8 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.3.3-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2010-11-01 18:38+0100\n"
-"PO-Revision-Date: 2010-10-30 00:12+0100\n"
+"POT-Creation-Date: 2010-11-06 11:25+0100\n"
+"PO-Revision-Date: 2010-11-05 17:17+0100\n"
"Last-Translator: Nils G.\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
"Language: \n"
@@ -3354,6 +3354,42 @@ msgstr ""
msgid "Notice"
msgstr "Hinweis"
+#, fuzzy, c-format
+msgid ""
+"%s%s: server must be specified because you are not on an irc server or "
+"channel"
+msgstr ""
+"%s%s: Der Befehl \"%s\" kann nur im IRC-Buffer ausgeführt werden (Server "
+"oder Channel)"
+
+#, fuzzy, c-format
+msgid "%s%s: notify already exists"
+msgstr "%s%s: Diese /ignore-Regel existiert bereits"
+
+#, fuzzy, c-format
+msgid "%s: notification added for %s%s"
+msgstr "%s: Wechsel Adresse zu %s/%d"
+
+#, fuzzy, c-format
+msgid "%s%s: error adding notification"
+msgstr "%s%s: Fehler beim hinzufügen mittels /ignore-Befehl"
+
+#, fuzzy, c-format
+msgid "%s: all notifications deleted"
+msgstr "%s: Alle /ignore-Regeln gelöscht"
+
+#, fuzzy, c-format
+msgid "%s: no notification in list"
+msgstr "%s Keine /ignore-Regel gefunden"
+
+#, fuzzy, c-format
+msgid "%s: notification deleted"
+msgstr "%s: /ignore-Regel gelöscht"
+
+#, fuzzy, c-format
+msgid "%s%s: notification not found"
+msgstr "%s%s: /ignore-Regel nicht gefunden"
+
#, c-format
msgid "%s%s: cannot create new private buffer \"%s\""
msgstr "%s%s: Kann keinen neuen privaten Buffer \"%s\" erzeugen"
@@ -3673,10 +3709,11 @@ msgstr "Ignoriert Nicks/Hosts von Channels oder Servern"
msgid "[list] | [add [re:]nick/host [server [channel]]] | [del number|-all]"
msgstr "[list] | [add [re:]nick/host [server [channel]]] | [del number|-all]"
+#, fuzzy
msgid ""
" list: list all ignores\n"
-" add: add a ignore\n"
-" del: del a ignore\n"
+" add: add an ignore\n"
+" del: delete an ignore\n"
" number: number of ignore to delete (look at list to find it)\n"
" -all: delete all ignores\n"
"nick/host: nick or host to ignore: syntax is \"re:regex\" or \"mask\" (a "
@@ -3999,6 +4036,33 @@ msgstr ""
"Nickname: Empfänger der Nachricht\n"
" Text: zu sendender Text"
+msgid "add a notification for presence or away status of nicks on servers"
+msgstr ""
+
+#, fuzzy
+msgid "[add nick [server [-away]]] | [del nick|-all [server]]"
+msgstr "[list] | [add [re:]nick/host [server [channel]]] | [del number|-all]"
+
+msgid ""
+" add: add a notification\n"
+" nick: nickname\n"
+"server: internal server name (by default current server)\n"
+" -away: notify when away message is changed (by doing whois on nick)\n"
+" del: delete a notification\n"
+" -all: delete all notifications\n"
+"\n"
+"Without argument, this command displays notifications for current server (or "
+"all servers if command is issued on core buffer).\n"
+"\n"
+"Examples:\n"
+" notify when \"toto\" joins/quits current server:\n"
+" /notify add toto\n"
+" notify when \"toto\" joins/quits freenode server:\n"
+" /notify add toto freenode\n"
+" notify when \"toto\" is away or back on freenode server:\n"
+" /notify add toto freenode -away"
+msgstr ""
+
msgid "give channel operator status to nickname(s)"
msgstr "Channel-Operator Status an Nicknamen verleihen"
@@ -4510,6 +4574,10 @@ msgstr "Standardnachricht beim Verlassen (/part) eines IRC-Channels"
msgid "numbers for defined ignores"
msgstr "Anzahl für festgelegte /ignores"
+#, fuzzy
+msgid "nicks in notify list"
+msgstr "%s Keine /ignore-Regel gefunden"
+
#, c-format
msgid ""
"%s%s: warning: server \"%s\" not found in configuration file, not deleted in "
@@ -4703,6 +4771,11 @@ msgstr ""
"Standardnachricht beim Beenden (Verbindung zum Server trennen) (\"%v\": wird "
"durch die WeeChat-Version ersetzt)"
+msgid ""
+"notify list for server (you should not change this option but use /notify "
+"command instead)"
+msgstr ""
+
#, c-format
msgid "%s%s: error creating server \"%s\""
msgstr "%s%s: Fehler bei der Erstellung des Servers \"%s\""
@@ -4854,6 +4927,18 @@ msgstr ""
"Zeigt Notizen als private Nachricht an (wird die \"auto\" Option verwendet "
"dann wird ein privater Buffer genutzt, falls vorhanden)"
+msgid ""
+"comma separated list of tags used in messages printed by notify when a nick "
+"joins or quits server (result of command ison), for example: "
+"\"notify_highglight\", \"notify_message\" or \"notify_private\""
+msgstr ""
+
+msgid ""
+"comma separated list of tags used in messages printed by notify when a nick "
+"away status changes (result of command whois), for example: "
+"\"notify_highglight\", \"notify_message\" or \"notify_private\""
+msgstr ""
+
msgid "close buffer when /part is issued on a channel"
msgstr "Schließt den Buffer wenn \"/part\" im Channel ausgeführt wird"
@@ -4965,6 +5050,18 @@ msgstr ""
"maximale Verzögerung bei der automatischen wiederverbindung zum Server (in "
"Sekunden, 0 = keine Begrenzung)"
+msgid "when off, colors codes are ignored in incoming messages"
+msgstr ""
+"Falls deaktiviert, werden Farben-Codes von eingehenden Nachrichten ignoriert."
+
+msgid ""
+"allow user to send colors with special codes (ctrl-c + a code and optional "
+"color: b=bold, cxx=color, cxx,yy=color+background, u=underline, r=reverse)"
+msgstr ""
+"Erlaube Benutzern, spezielle Codes zu versenden (ctrl-c + Code und optional "
+"Farbe: b=fett, cxx=Farbe, cxx,yy=Farbe+Hintergrund, u=unterstrichen, "
+"r=invertiert)"
+
msgid "interval between two checks for lag (in seconds, 0 = never check)"
msgstr ""
"Intervall zwischen zwei Lag-Überprüfungen (in Sekunden, 0 = keine "
@@ -4985,20 +5082,23 @@ msgstr ""
"Intervall zwischen zwei Aktualisierungen des Lag-Items, wenn die "
"Verzögerungszeit sich erhöht (in Sekunden)"
-msgid "when off, colors codes are ignored in incoming messages"
-msgstr ""
-"Falls deaktiviert, werden Farben-Codes von eingehenden Nachrichten ignoriert."
+msgid "send unknown commands to server"
+msgstr "Sende unbekannte Befehle an den Server"
+#, fuzzy
msgid ""
-"allow user to send colors with special codes (ctrl-c + a code and optional "
-"color: b=bold, cxx=color, cxx,yy=color+background, u=underline, r=reverse)"
+"interval between two checks for notify with IRC command \"ison\" (in minutes)"
msgstr ""
-"Erlaube Benutzern, spezielle Codes zu versenden (ctrl-c + Code und optional "
-"Farbe: b=fett, cxx=Farbe, cxx,yy=Farbe+Hintergrund, u=unterstrichen, "
-"r=invertiert)"
+"Überprüft die Abwesenheit (/away) der Nutzer, in dem angegebenen Intervall "
+"(in Minuten, 0 = nicht überprüfen)"
-msgid "send unknown commands to server"
-msgstr "Sende unbekannte Befehle an den Server"
+#, fuzzy
+msgid ""
+"interval between two checks for notify with IRC command \"whois\" (in "
+"minutes)"
+msgstr ""
+"Überprüft die Abwesenheit (/away) der Nutzer, in dem angegebenen Intervall "
+"(in Minuten, 0 = nicht überprüfen)"
#, c-format
msgid "%sCTCP requested by %s%s%s: %s%s%s%s%s%s"
@@ -5161,6 +5261,14 @@ msgstr "Liste von ignorierten IRCs"
msgid "ignore pointer (optional)"
msgstr "Ignore Pointer (optional)"
+#, fuzzy
+msgid "list of notify"
+msgstr "Liste der Optionen"
+
+#, fuzzy
+msgid "notify pointer (optional)"
+msgstr "Nick Pointer (optional)"
+
#, c-format
msgid "%s%s: you are not connected to server"
msgstr "%s%s: Es besteht keine Verbindung zum Server"
@@ -5169,6 +5277,46 @@ msgstr "%s%s: Es besteht keine Verbindung zum Server"
msgid "%s%s: this buffer is not a channel!"
msgstr "%s%s: Dieser Buffer ist kein Channel!"
+msgid "offline"
+msgstr ""
+
+msgid "online"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Notify list for %s%s%s:"
+msgstr "Transfer-Liste:"
+
+msgid "Notify list is empty on this server"
+msgstr ""
+
+#, fuzzy
+msgid "Notify list for all servers:"
+msgstr "Transfer-Liste:"
+
+msgid "Notify list is empty on all servers"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%snotify: %s%s%s has joined %s%s"
+msgstr "%s%s%s%s hat %s%s%s gekickt"
+
+#, fuzzy, c-format
+msgid "%snotify: %s%s%s has quit %s%s"
+msgstr "%s%s%s%s hat %s%s%s gekickt"
+
+#, fuzzy, c-format
+msgid "%snotify: %s%s%s is now away: \"%s\""
+msgstr "%s%s[%s%s%s]%s ist abwesend: %s"
+
+#, fuzzy, c-format
+msgid "%snotify: %s%s%s is back"
+msgstr "%sDas Topic von %s%s%s lautet: \"%s%s\""
+
+#, fuzzy, c-format
+msgid "%snotify: %s%s%s is still away: \"%s\""
+msgstr "%s%s[%s%s%s]%s ist abwesend: %s"
+
#, c-format
msgid ""
"%s%s: error building answer for SASL authentication, using mechanism \"%s\""
@@ -7219,17 +7367,3 @@ msgstr "Hashtable (Ausgabe)"
msgid "Pointer"
msgstr "Pointer"
-
-#~ msgid "open new channels near server"
-#~ msgstr "Öffne neue Channels neben dem Server-Buffer"
-
-#~ msgid "open new privates near server"
-#~ msgstr "Öffne neue private Channels neben dem Server-Buffer"
-
-#~ msgid "%s%s: addresses not defined for server \"%s\", cannot connect"
-#~ msgstr ""
-#~ "%s%s: Adresse für den Server \"%s\" nicht definiert, Verbindung wird "
-#~ "nicht hergestellt"
-
-#~ msgid "%s%s: buffer not found for IRC server \"%s\", channel \"%s\""
-#~ msgstr "%s%s: Keinen Buffer für IRC Server \"%s\", Channel \"%s\" gefunden"
diff --git a/po/es.po b/po/es.po
index 384cf5d85..dd59af3cf 100644
--- a/po/es.po
+++ b/po/es.po
@@ -21,8 +21,8 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.3.4-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2010-11-01 18:38+0100\n"
-"PO-Revision-Date: 2010-08-07 10:46+0200\n"
+"POT-Creation-Date: 2010-11-06 11:25+0100\n"
+"PO-Revision-Date: 2010-11-05 17:17+0100\n"
"Last-Translator: Elián Hanisch <lambdae2@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
"Language: Spanish\n"
@@ -3254,6 +3254,42 @@ msgstr ""
msgid "Notice"
msgstr ""
+#, fuzzy, c-format
+msgid ""
+"%s%s: server must be specified because you are not on an irc server or "
+"channel"
+msgstr ""
+"%s%s: el comando \"%s\" debe ser ejecutado en un buffer irc (canal o "
+"servidor)"
+
+#, fuzzy, c-format
+msgid "%s%s: notify already exists"
+msgstr "%s%s: ya se encuentra ignorado"
+
+#, fuzzy, c-format
+msgid "%s: notification added for %s%s"
+msgstr "%s: cambiando dirección a %s/%d"
+
+#, fuzzy, c-format
+msgid "%s%s: error adding notification"
+msgstr "%s%s: error al actualizar la lista de ignorados"
+
+#, fuzzy, c-format
+msgid "%s: all notifications deleted"
+msgstr "%s: lista de ignorados borrada"
+
+#, fuzzy, c-format
+msgid "%s: no notification in list"
+msgstr "%s: lista de ignorados vacía"
+
+#, fuzzy, c-format
+msgid "%s: notification deleted"
+msgstr "%s: borrado de la lista de ignorados"
+
+#, fuzzy, c-format
+msgid "%s%s: notification not found"
+msgstr "%s%s: no se encontró el ignorado"
+
#, c-format
msgid "%s%s: cannot create new private buffer \"%s\""
msgstr "%s%s: no es posible crear la conversación privada \"%s\""
@@ -3567,10 +3603,11 @@ msgstr "ignorar apodos/hosts en servidores o canales"
msgid "[list] | [add [re:]nick/host [server [channel]]] | [del number|-all]"
msgstr "[list] | [add [re:]apodo/host [servidor [canal]]] | [del número|-all]"
+#, fuzzy
msgid ""
" list: list all ignores\n"
-" add: add a ignore\n"
-" del: del a ignore\n"
+" add: add an ignore\n"
+" del: delete an ignore\n"
" number: number of ignore to delete (look at list to find it)\n"
" -all: delete all ignores\n"
"nick/host: nick or host to ignore: syntax is \"re:regex\" or \"mask\" (a "
@@ -3891,6 +3928,33 @@ msgstr ""
" apodo: apodo del destinatario\n"
" texto: texto a enviar"
+msgid "add a notification for presence or away status of nicks on servers"
+msgstr ""
+
+#, fuzzy
+msgid "[add nick [server [-away]]] | [del nick|-all [server]]"
+msgstr "[list] | [add [re:]apodo/host [servidor [canal]]] | [del número|-all]"
+
+msgid ""
+" add: add a notification\n"
+" nick: nickname\n"
+"server: internal server name (by default current server)\n"
+" -away: notify when away message is changed (by doing whois on nick)\n"
+" del: delete a notification\n"
+" -all: delete all notifications\n"
+"\n"
+"Without argument, this command displays notifications for current server (or "
+"all servers if command is issued on core buffer).\n"
+"\n"
+"Examples:\n"
+" notify when \"toto\" joins/quits current server:\n"
+" /notify add toto\n"
+" notify when \"toto\" joins/quits freenode server:\n"
+" /notify add toto freenode\n"
+" notify when \"toto\" is away or back on freenode server:\n"
+" /notify add toto freenode -away"
+msgstr ""
+
msgid "give channel operator status to nickname(s)"
msgstr "dar el estado de operador del canal a el/los usuario(s)"
@@ -4399,6 +4463,10 @@ msgstr "mensaje de abandono por defecto"
msgid "numbers for defined ignores"
msgstr "números para los ignores definidos"
+#, fuzzy
+msgid "nicks in notify list"
+msgstr "%s: lista de ignorados vacía"
+
#, c-format
msgid ""
"%s%s: warning: server \"%s\" not found in configuration file, not deleted in "
@@ -4575,6 +4643,11 @@ msgstr ""
"mensaje de salida por defecto (cuando se desconecta del servidor) (\"%v\" "
"será reemplazado por la versión de WeeChat)"
+msgid ""
+"notify list for server (you should not change this option but use /notify "
+"command instead)"
+msgstr ""
+
#, c-format
msgid "%s%s: error creating server \"%s\""
msgstr "%s%s: error al crear el servidor \"%s\""
@@ -4713,6 +4786,18 @@ msgstr ""
"mostrar avisos como mensajes privados (si es auto, usa un buffer privado si "
"lo encuentra)"
+msgid ""
+"comma separated list of tags used in messages printed by notify when a nick "
+"joins or quits server (result of command ison), for example: "
+"\"notify_highglight\", \"notify_message\" or \"notify_private\""
+msgstr ""
+
+msgid ""
+"comma separated list of tags used in messages printed by notify when a nick "
+"away status changes (result of command whois), for example: "
+"\"notify_highglight\", \"notify_message\" or \"notify_private\""
+msgstr ""
+
msgid "close buffer when /part is issued on a channel"
msgstr "cerrar el buffer cuando /part es usado en un canal"
@@ -4807,6 +4892,19 @@ msgstr ""
msgid "maximum autoreconnect delay to server (in seconds, 0 = no maximum)"
msgstr "retraso máximo para la autoreconexión (en segundos, 0 = sin máximo)"
+msgid "when off, colors codes are ignored in incoming messages"
+msgstr ""
+"cuando se desactiva, los códigos de color se ignoran en los mensajes "
+"entrantes"
+
+msgid ""
+"allow user to send colors with special codes (ctrl-c + a code and optional "
+"color: b=bold, cxx=color, cxx,yy=color+background, u=underline, r=reverse)"
+msgstr ""
+"permitir al usuario enviar colores con códigos especiales (ctrl-c + un "
+"código y color opcional: b=negrita, cxx,yy=color+fondo, u=subrayado, "
+"r=invertido)"
+
msgid "interval between two checks for lag (in seconds, 0 = never check)"
msgstr ""
"intervalo entre dos comprobaciones de retraso (en segundos, 0 = nunca "
@@ -4826,21 +4924,21 @@ msgstr ""
"intervalo de refresco para el elemento de lag, cuando este aumenta (en "
"segundos)"
-msgid "when off, colors codes are ignored in incoming messages"
-msgstr ""
-"cuando se desactiva, los códigos de color se ignoran en los mensajes "
-"entrantes"
+msgid "send unknown commands to server"
+msgstr "envía comandos desconocidos al servidor"
+#, fuzzy
msgid ""
-"allow user to send colors with special codes (ctrl-c + a code and optional "
-"color: b=bold, cxx=color, cxx,yy=color+background, u=underline, r=reverse)"
+"interval between two checks for notify with IRC command \"ison\" (in minutes)"
msgstr ""
-"permitir al usuario enviar colores con códigos especiales (ctrl-c + un "
-"código y color opcional: b=negrita, cxx,yy=color+fondo, u=subrayado, "
-"r=invertido)"
+"intervalo entre dos comprobaciones de ausencia (en minutos, 0 = no comprobar)"
-msgid "send unknown commands to server"
-msgstr "envía comandos desconocidos al servidor"
+#, fuzzy
+msgid ""
+"interval between two checks for notify with IRC command \"whois\" (in "
+"minutes)"
+msgstr ""
+"intervalo entre dos comprobaciones de ausencia (en minutos, 0 = no comprobar)"
#, c-format
msgid "%sCTCP requested by %s%s%s: %s%s%s%s%s%s"
@@ -5004,6 +5102,14 @@ msgstr "lista de IRC ignores"
msgid "ignore pointer (optional)"
msgstr "puntero del ignore (opcional)"
+#, fuzzy
+msgid "list of notify"
+msgstr "lista de opciones"
+
+#, fuzzy
+msgid "notify pointer (optional)"
+msgstr "puntero del apodo (opcional)"
+
#, c-format
msgid "%s%s: you are not connected to server"
msgstr "%s%s: no estas conectado a ningún servidor"
@@ -5012,6 +5118,46 @@ msgstr "%s%s: no estas conectado a ningún servidor"
msgid "%s%s: this buffer is not a channel!"
msgstr "%s%s: ¡este buffer no es un canal!"
+msgid "offline"
+msgstr ""
+
+msgid "online"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Notify list for %s%s%s:"
+msgstr "Lista de transferencias:"
+
+msgid "Notify list is empty on this server"
+msgstr ""
+
+#, fuzzy
+msgid "Notify list for all servers:"
+msgstr "Lista de transferencias:"
+
+msgid "Notify list is empty on all servers"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%snotify: %s%s%s has joined %s%s"
+msgstr "%s%s%s%s ha expulsado %s%s%s"
+
+#, fuzzy, c-format
+msgid "%snotify: %s%s%s has quit %s%s"
+msgstr "%s%s%s%s ha expulsado %s%s%s"
+
+#, fuzzy, c-format
+msgid "%snotify: %s%s%s is now away: \"%s\""
+msgstr "%s%s[%s%s%s]%s está ausente: %s"
+
+#, fuzzy, c-format
+msgid "%snotify: %s%s%s is back"
+msgstr "%sEl tema para %s%s%s es \"%s%s\""
+
+#, fuzzy, c-format
+msgid "%snotify: %s%s%s is still away: \"%s\""
+msgstr "%s%s[%s%s%s]%s está ausente: %s"
+
#, c-format
msgid ""
"%s%s: error building answer for SASL authentication, using mechanism \"%s\""
@@ -7023,52 +7169,3 @@ msgstr ""
msgid "Pointer"
msgstr "Puntero"
-
-#~ msgid "open new channels near server"
-#~ msgstr "abrir nuevos canales cerca del servidor"
-
-#~ msgid "open new privates near server"
-#~ msgstr "abrir nuevas conversaciones privadas cerca del servidor"
-
-#~ msgid "%s%s: addresses not defined for server \"%s\", cannot connect"
-#~ msgstr ""
-#~ "%s%s: dirección sin definir para el servidor \"%s\", no es posible "
-#~ "conectarse"
-
-#~ msgid "%s%s: buffer not found for IRC server \"%s\", channel \"%s\""
-#~ msgstr ""
-#~ "%s%s: buffer no encontrado para el servidor IRC \"%s\", canal \"%s\""
-
-#, fuzzy
-#~ msgid "list of regex modifiers"
-#~ msgstr "lista de transferencias"
-
-#, fuzzy
-#~ msgid "List of regex modifiers:"
-#~ msgstr "Lista de proxies:"
-
-#~ msgid "text color for prefix #1 in nicklist"
-#~ msgstr "color para el prefijo #1 en la lista de apodos"
-
-#~ msgid "text color for prefix #2 in nicklist"
-#~ msgstr "color para el prefijo #2 en la lista de apodos"
-
-#~ msgid "text color for prefix #3 in nicklist"
-#~ msgstr "color para el prefijo #3 en la lista de apodos"
-
-#~ msgid "text color for prefix #4 in nicklist"
-#~ msgstr "color para el prefijo #4 en la lista de apodos"
-
-#~ msgid "text color for prefix #5 in nicklist"
-#~ msgstr "color para el prefijo #5 en la lista de apodos"
-
-#~ msgid ""
-#~ "channel: channel name to join\n"
-#~ " key: key to join the channel"
-#~ msgstr ""
-#~ "canal: canal a unirse\n"
-#~ "clave: clave para unirse al canal"
-
-#, fuzzy
-#~ msgid "color for buffer name when connected using SSL to server"
-#~ msgstr "%s%s: no estas conectado a ningún servidor"
diff --git a/po/fr.po b/po/fr.po
index d7884e2f1..8f91d4bad 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -21,8 +21,8 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.3.4-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2010-11-01 18:38+0100\n"
-"PO-Revision-Date: 2010-10-29 22:59+0200\n"
+"POT-Creation-Date: 2010-11-06 11:25+0100\n"
+"PO-Revision-Date: 2010-11-05 22:53+0100\n"
"Last-Translator: Sebastien Helleu <flashcode@flashtux.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
"Language: French\n"
@@ -3300,6 +3300,42 @@ msgid "Notice"
msgstr "Notice"
#, c-format
+msgid ""
+"%s%s: server must be specified because you are not on an irc server or "
+"channel"
+msgstr ""
+"%s%s: le serveur doit être spécifié car vous n'êtes pas sur un serveur ou un "
+"canal irc"
+
+#, c-format
+msgid "%s%s: notify already exists"
+msgstr "%s%s: la notification existe déjà"
+
+#, c-format
+msgid "%s: notification added for %s%s"
+msgstr "%s: notification ajoutée pour %s%s"
+
+#, c-format
+msgid "%s%s: error adding notification"
+msgstr "%s%s: erreur d'ajout de la notification"
+
+#, c-format
+msgid "%s: all notifications deleted"
+msgstr "%s: notifications supprimées"
+
+#, c-format
+msgid "%s: no notification in list"
+msgstr "%s: pas de notification dans la liste"
+
+#, c-format
+msgid "%s: notification deleted"
+msgstr "%s: notification supprimée"
+
+#, c-format
+msgid "%s%s: notification not found"
+msgstr "%s%s: notification non trouvée"
+
+#, c-format
msgid "%s%s: cannot create new private buffer \"%s\""
msgstr "%s%s: impossible de créer le tampon privé \"%s\""
@@ -3614,8 +3650,8 @@ msgstr "[list] | [add [re:]pseudo/hote [server [channel]]] | [del numéro|-all]"
msgid ""
" list: list all ignores\n"
-" add: add a ignore\n"
-" del: del a ignore\n"
+" add: add an ignore\n"
+" del: delete an ignore\n"
" number: number of ignore to delete (look at list to find it)\n"
" -all: delete all ignores\n"
"nick/host: nick or host to ignore: syntax is \"re:regex\" or \"mask\" (a "
@@ -3938,6 +3974,53 @@ msgstr ""
" pseudo: pseudo cible pour la notice\n"
" texte: texte à envoyer"
+msgid "add a notification for presence or away status of nicks on servers"
+msgstr ""
+"ajoute une notification de présence ou de statut d'absence pour des pseudos "
+"sur les serveurs"
+
+msgid "[add nick [server [-away]]] | [del nick|-all [server]]"
+msgstr "[add pseudo [serveur [-away]]] | [del pseudo|-all [serveur]]"
+
+msgid ""
+" add: add a notification\n"
+" nick: nickname\n"
+"server: internal server name (by default current server)\n"
+" -away: notify when away message is changed (by doing whois on nick)\n"
+" del: delete a notification\n"
+" -all: delete all notifications\n"
+"\n"
+"Without argument, this command displays notifications for current server (or "
+"all servers if command is issued on core buffer).\n"
+"\n"
+"Examples:\n"
+" notify when \"toto\" joins/quits current server:\n"
+" /notify add toto\n"
+" notify when \"toto\" joins/quits freenode server:\n"
+" /notify add toto freenode\n"
+" notify when \"toto\" is away or back on freenode server:\n"
+" /notify add toto freenode -away"
+msgstr ""
+" add: ajoute une notification\n"
+" pasudo: pseudo\n"
+"serveur: nom interne du serveur (par défaut le serveur courant)\n"
+" -away: notifie quand le message d'absence est changé (en faisant un whois "
+"sur le pseudo)\n"
+" del: supprime une notification\n"
+" -all: supprime toutes les notifications\n"
+"\n"
+"Sans paramètre, cette commande affiche les notifications pour le serveur "
+"courant (ou tous les serveurs si la commande est exécutée sur le tampon "
+"\"core\").\n"
+"\n"
+"Exemples:\n"
+" notifie quand \"toto\" rejoint/quitte le serveur courant:\n"
+" /notify add toto\n"
+" notifie quand \"toto\" rejoint/quitte le serveur freenode:\n"
+" /notify add toto freenode\n"
+" notifie quand \"toto\" est absent ou de retour sur le serveur freenode:\n"
+" /notify add toto freenode -away"
+
msgid "give channel operator status to nickname(s)"
msgstr "donner le statut opérateur à un/des pseudo(s)"
@@ -4446,6 +4529,9 @@ msgstr "message de fin par défaut pour le canal IRC"
msgid "numbers for defined ignores"
msgstr "numéros pour les ignores définis"
+msgid "nicks in notify list"
+msgstr "pseudos dans la liste de notifications"
+
#, c-format
msgid ""
"%s%s: warning: server \"%s\" not found in configuration file, not deleted in "
@@ -4627,6 +4713,13 @@ msgstr ""
"message de fin par défaut (lors de la déconnexion du serveur) (\"%v\" sera "
"remplacé par la version de WeeChat dans la chaîne)"
+msgid ""
+"notify list for server (you should not change this option but use /notify "
+"command instead)"
+msgstr ""
+"liste de notifications pour le serveur (vous ne devriez pas changer cette "
+"option mais utiliser la commande /notify)"
+
#, c-format
msgid "%s%s: error creating server \"%s\""
msgstr "%s%s: erreur de création du serveur \"%s\""
@@ -4774,6 +4867,26 @@ msgstr ""
"afficher les notices comme des messages privés (si auto, utilise le tampon "
"privé s'il est trouvé)"
+msgid ""
+"comma separated list of tags used in messages printed by notify when a nick "
+"joins or quits server (result of command ison), for example: "
+"\"notify_highglight\", \"notify_message\" or \"notify_private\""
+msgstr ""
+"liste des tags (séparés par des virgules) utilisés dans les messages "
+"affichés par notify lorsqu'un pseudo a rejoint ou quitté le serveur "
+"(résultat de la commande ison), par exemple: \"notify_highlight\", "
+"\"notify_message\" ou \"notify_private\""
+
+msgid ""
+"comma separated list of tags used in messages printed by notify when a nick "
+"away status changes (result of command whois), for example: "
+"\"notify_highglight\", \"notify_message\" or \"notify_private\""
+msgstr ""
+"liste des tags (séparés par des virgules) utilisés dans les messages "
+"affichés par notify lorsque le status d'absence d'un pseudo change (résultat "
+"de la commande whois), par exemple: \"notify_highlight\", \"notify_message\" "
+"ou \"notify_private\""
+
msgid "close buffer when /part is issued on a channel"
msgstr "fermer le tampon lorsque /part est exécuté sur un canal"
@@ -4873,6 +4986,17 @@ msgid "maximum autoreconnect delay to server (in seconds, 0 = no maximum)"
msgstr ""
"délai maximum d'autoreconnection au serveur (en secondes, 0 = pas de maximum)"
+msgid "when off, colors codes are ignored in incoming messages"
+msgstr "si désactivé, les codes couleurs des messages entrants sont ignorés"
+
+msgid ""
+"allow user to send colors with special codes (ctrl-c + a code and optional "
+"color: b=bold, cxx=color, cxx,yy=color+background, u=underline, r=reverse)"
+msgstr ""
+"autorise l'utilisateur à envoyer des couleurs avec des codes spéciaux (ctrl-"
+"c + un code et une couleur optionnelle: b=gras, cxx=couleur, cxx,yy=couleur"
+"+fond, u=souligné, r=inversé)"
+
msgid "interval between two checks for lag (in seconds, 0 = never check)"
msgstr ""
"intervalle entre deux vérifications du lag (en secondes, 0 = ne jamais "
@@ -4892,19 +5016,21 @@ msgstr ""
"intervalle entre deux rafraichissements du lag, lorsque le lag augmente (en "
"secondes)"
-msgid "when off, colors codes are ignored in incoming messages"
-msgstr "si désactivé, les codes couleurs des messages entrants sont ignorés"
+msgid "send unknown commands to server"
+msgstr "envoie les commandes inconnues au serveur"
msgid ""
-"allow user to send colors with special codes (ctrl-c + a code and optional "
-"color: b=bold, cxx=color, cxx,yy=color+background, u=underline, r=reverse)"
+"interval between two checks for notify with IRC command \"ison\" (in minutes)"
msgstr ""
-"autorise l'utilisateur à envoyer des couleurs avec des codes spéciaux (ctrl-"
-"c + un code et une couleur optionnelle: b=gras, cxx=couleur, cxx,yy=couleur"
-"+fond, u=souligné, r=inversé)"
+"intervalle entre deux vérifications de notification avec la commande IRC "
+"\"ison\" (en minutes)"
-msgid "send unknown commands to server"
-msgstr "envoie les commandes inconnues au serveur"
+msgid ""
+"interval between two checks for notify with IRC command \"whois\" (in "
+"minutes)"
+msgstr ""
+"intervalle entre deux vérifications de notification avec la commande IRC "
+"\"whois\" (en minutes)"
#, c-format
msgid "%sCTCP requested by %s%s%s: %s%s%s%s%s%s"
@@ -5065,6 +5191,12 @@ msgstr "liste des ignores IRC"
msgid "ignore pointer (optional)"
msgstr "pointeur vers l'ignore (optionnel)"
+msgid "list of notify"
+msgstr "liste des notifications"
+
+msgid "notify pointer (optional)"
+msgstr "pointeur vers la notification (optionnel)"
+
#, c-format
msgid "%s%s: you are not connected to server"
msgstr "%s%s: vous n'êtes pas connecté au serveur"
@@ -5073,6 +5205,45 @@ msgstr "%s%s: vous n'êtes pas connecté au serveur"
msgid "%s%s: this buffer is not a channel!"
msgstr "%s%s: ce tampon n'est pas un canal !"
+msgid "offline"
+msgstr "déconnecté"
+
+msgid "online"
+msgstr "connecté"
+
+#, c-format
+msgid "Notify list for %s%s%s:"
+msgstr "Liste de notifications pour %s%s%s:"
+
+msgid "Notify list is empty on this server"
+msgstr "La liste de notifications est vide sur ce serveur"
+
+msgid "Notify list for all servers:"
+msgstr "Liste de notifications pour tous les serveurs:"
+
+msgid "Notify list is empty on all servers"
+msgstr "La liste de notifications est vide sur tous les serveurs"
+
+#, c-format
+msgid "%snotify: %s%s%s has joined %s%s"
+msgstr "%snotify: %s%s%s a rejoint %s%s"
+
+#, c-format
+msgid "%snotify: %s%s%s has quit %s%s"
+msgstr "%snotify: %s%s%s a quitté %s%s"
+
+#, c-format
+msgid "%snotify: %s%s%s is now away: \"%s\""
+msgstr "%snotify: %s%s%s est maintenant absent: \"%s\""
+
+#, c-format
+msgid "%snotify: %s%s%s is back"
+msgstr "%snotify: %s%s%s est de retour"
+
+#, c-format
+msgid "%snotify: %s%s%s is still away: \"%s\""
+msgstr "%snotify: %s%s%s est toujours absent: \"%s\""
+
#, c-format
msgid ""
"%s%s: error building answer for SASL authentication, using mechanism \"%s\""
@@ -7100,23 +7271,3 @@ msgstr "Hashtable (sortie)"
msgid "Pointer"
msgstr "Pointeur"
-
-#~ msgid ""
-#~ "display full away message in away bar item (if not set, display "
-#~ "translated string \"away\")"
-#~ msgstr ""
-#~ "afficher le message complet d'absence dans l'objet de barre d'absence (si "
-#~ "non défini, affiche la chaîne tra"
-
-#~ msgid "open new channels near server"
-#~ msgstr "ouvrir les nouveaux canaux près du serveur"
-
-#~ msgid "open new privates near server"
-#~ msgstr "ouvrir les nouveaux privés près du serveur"
-
-#~ msgid "%s%s: addresses not defined for server \"%s\", cannot connect"
-#~ msgstr ""
-#~ "%s%s: adresses non définies pour le serveur \"%s\", connexion impossible"
-
-#~ msgid "%s%s: buffer not found for IRC server \"%s\", channel \"%s\""
-#~ msgstr "%s%s: tampon non trouvé pour le serveur IRC \"%s\", canal \"%s\""
diff --git a/po/hu.po b/po/hu.po
index 87ac6264c..6a7362c4e 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -20,8 +20,8 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.3.4-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2010-11-01 18:38+0100\n"
-"PO-Revision-Date: 2010-08-07 10:46+0200\n"
+"POT-Creation-Date: 2010-11-06 11:25+0100\n"
+"PO-Revision-Date: 2010-11-05 17:17+0100\n"
"Last-Translator: Andras Voroskoi <voroskoi@frugalware.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
"Language: Hungarian\n"
@@ -3021,6 +3021,40 @@ msgid "Notice"
msgstr ""
#, fuzzy, c-format
+msgid ""
+"%s%s: server must be specified because you are not on an irc server or "
+"channel"
+msgstr "%s \"%s\" parancs nem futtatható a szerverablakban\n"
+
+#, fuzzy, c-format
+msgid "%s%s: notify already exists"
+msgstr "%s az ignore már létezik\n"
+
+#, fuzzy, c-format
+msgid "%s: notification added for %s%s"
+msgstr "%s IP-cím nem található\n"
+
+#, fuzzy, c-format
+msgid "%s%s: error adding notification"
+msgstr "%s nincs elég memória az információs pult üzenethez\n"
+
+#, fuzzy, c-format
+msgid "%s: all notifications deleted"
+msgstr "a felhasználók le lettek tiltva"
+
+#, fuzzy, c-format
+msgid "%s: no notification in list"
+msgstr "%s nem található ilyen mellőzés\n"
+
+#, fuzzy, c-format
+msgid "%s: notification deleted"
+msgstr "Nincs mellőzés megadva.\n"
+
+#, fuzzy, c-format
+msgid "%s%s: notification not found"
+msgstr "aláírás nem található"
+
+#, fuzzy, c-format
msgid "%s%s: cannot create new private buffer \"%s\""
msgstr "%s nem sikerült új privát ablakot nyitni \"%s\"\n"
@@ -3308,8 +3342,8 @@ msgstr ""
msgid ""
" list: list all ignores\n"
-" add: add a ignore\n"
-" del: del a ignore\n"
+" add: add an ignore\n"
+" del: delete an ignore\n"
" number: number of ignore to delete (look at list to find it)\n"
" -all: delete all ignores\n"
"nick/host: nick or host to ignore: syntax is \"re:regex\" or \"mask\" (a "
@@ -3589,6 +3623,32 @@ msgstr ""
" név: felhasználó akinek az üzenetet küldjük\n"
"szöveg: az üzenet szövege"
+msgid "add a notification for presence or away status of nicks on servers"
+msgstr ""
+
+msgid "[add nick [server [-away]]] | [del nick|-all [server]]"
+msgstr ""
+
+msgid ""
+" add: add a notification\n"
+" nick: nickname\n"
+"server: internal server name (by default current server)\n"
+" -away: notify when away message is changed (by doing whois on nick)\n"
+" del: delete a notification\n"
+" -all: delete all notifications\n"
+"\n"
+"Without argument, this command displays notifications for current server (or "
+"all servers if command is issued on core buffer).\n"
+"\n"
+"Examples:\n"
+" notify when \"toto\" joins/quits current server:\n"
+" /notify add toto\n"
+" notify when \"toto\" joins/quits freenode server:\n"
+" /notify add toto freenode\n"
+" notify when \"toto\" is away or back on freenode server:\n"
+" /notify add toto freenode -away"
+msgstr ""
+
#, fuzzy
msgid "give channel operator status to nickname(s)"
msgstr "operátori jogok biztosítása felhasználó(k)nak"
@@ -4128,6 +4188,10 @@ msgstr "felhasználók listája a szobában"
msgid "numbers for defined ignores"
msgstr ""
+#, fuzzy
+msgid "nicks in notify list"
+msgstr "%s nem található ilyen mellőzés\n"
+
#, c-format
msgid ""
"%s%s: warning: server \"%s\" not found in configuration file, not deleted in "
@@ -4299,6 +4363,11 @@ msgstr ""
"alapértelmezett kilépő üzenet (a '%v' változó a WeeChat verziójára "
"cserélődik)"
+msgid ""
+"notify list for server (you should not change this option but use /notify "
+"command instead)"
+msgstr ""
+
#, fuzzy, c-format
msgid "%s%s: error creating server \"%s\""
msgstr "%s nincs elég memória az információs pult üzenethez\n"
@@ -4426,6 +4495,18 @@ msgid ""
"display notices as private messages (if auto, use private buffer if found)"
msgstr "figyelmeztetések privát üzenetként való mutatása"
+msgid ""
+"comma separated list of tags used in messages printed by notify when a nick "
+"joins or quits server (result of command ison), for example: "
+"\"notify_highglight\", \"notify_message\" or \"notify_private\""
+msgstr ""
+
+msgid ""
+"comma separated list of tags used in messages printed by notify when a nick "
+"away status changes (result of command whois), for example: "
+"\"notify_highglight\", \"notify_message\" or \"notify_private\""
+msgstr ""
+
msgid "close buffer when /part is issued on a channel"
msgstr ""
@@ -4514,6 +4595,17 @@ msgstr ""
msgid "maximum autoreconnect delay to server (in seconds, 0 = no maximum)"
msgstr ""
+msgid "when off, colors codes are ignored in incoming messages"
+msgstr "ha ki van kapcsolva, "
+
+#, fuzzy
+msgid ""
+"allow user to send colors with special codes (ctrl-c + a code and optional "
+"color: b=bold, cxx=color, cxx,yy=color+background, u=underline, r=reverse)"
+msgstr ""
+"színküldés engedélyezése speciális karakterekkel (^Cb=félkövér, ^Ccxx=szín, "
+"^Cxx,yy=szín+háttérszín ^Cu=aláhúzás, ^Cr=fordított)"
+
#, fuzzy
msgid "interval between two checks for lag (in seconds, 0 = never check)"
msgstr "két távollétellenőrzés közti idő (percben, 0 = nincs ellenőrzés)"
@@ -4531,20 +4623,20 @@ msgid ""
"seconds)"
msgstr "két távollétellenőrzés közti idő (percben, 0 = nincs ellenőrzés)"
-msgid "when off, colors codes are ignored in incoming messages"
-msgstr "ha ki van kapcsolva, "
+#, fuzzy
+msgid "send unknown commands to server"
+msgstr "ismeretlen parancsok küldése az IRC szervernek"
#, fuzzy
msgid ""
-"allow user to send colors with special codes (ctrl-c + a code and optional "
-"color: b=bold, cxx=color, cxx,yy=color+background, u=underline, r=reverse)"
-msgstr ""
-"színküldés engedélyezése speciális karakterekkel (^Cb=félkövér, ^Ccxx=szín, "
-"^Cxx,yy=szín+háttérszín ^Cu=aláhúzás, ^Cr=fordított)"
+"interval between two checks for notify with IRC command \"ison\" (in minutes)"
+msgstr "két távollétellenőrzés közti idő (percben, 0 = nincs ellenőrzés)"
#, fuzzy
-msgid "send unknown commands to server"
-msgstr "ismeretlen parancsok küldése az IRC szervernek"
+msgid ""
+"interval between two checks for notify with IRC command \"whois\" (in "
+"minutes)"
+msgstr "két távollétellenőrzés közti idő (percben, 0 = nincs ellenőrzés)"
#, fuzzy, c-format
msgid "%sCTCP requested by %s%s%s: %s%s%s%s%s%s"
@@ -4721,6 +4813,14 @@ msgstr "IRC szerver portja"
msgid "ignore pointer (optional)"
msgstr ""
+#, fuzzy
+msgid "list of notify"
+msgstr "konfigurációs paraméterek beállítása"
+
+#, fuzzy
+msgid "notify pointer (optional)"
+msgstr "Beállítások mentése a lemezre\n"
+
#, fuzzy, c-format
msgid "%s%s: you are not connected to server"
msgstr "%s nincs csatlakozva szerverhez!\n"
@@ -4729,6 +4829,46 @@ msgstr "%s nincs csatlakozva szerverhez!\n"
msgid "%s%s: this buffer is not a channel!"
msgstr "Ez az ablak nem egy szoba!\n"
+msgid "offline"
+msgstr ""
+
+msgid "online"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Notify list for %s%s%s:"
+msgstr "hotlist törlése"
+
+msgid "Notify list is empty on this server"
+msgstr ""
+
+#, fuzzy
+msgid "Notify list for all servers:"
+msgstr "hotlist törlése"
+
+msgid "Notify list is empty on all servers"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%snotify: %s%s%s has joined %s%s"
+msgstr "%s%s%s kirúgta %s%s%s-t a(z) %s%s szobából"
+
+#, fuzzy, c-format
+msgid "%snotify: %s%s%s has quit %s%s"
+msgstr "%s%s%s kirúgta %s%s%s-t a(z) %s%s szobából"
+
+#, fuzzy, c-format
+msgid "%snotify: %s%s%s is now away: \"%s\""
+msgstr "%s%s%s távol: %s\n"
+
+#, fuzzy, c-format
+msgid "%snotify: %s%s%s is back"
+msgstr "A %s%s%s szoba témája: "
+
+#, fuzzy, c-format
+msgid "%snotify: %s%s%s is still away: \"%s\""
+msgstr "%s%s%s távol: %s\n"
+
#, c-format
msgid ""
"%s%s: error building answer for SASL authentication, using mechanism \"%s\""
@@ -6676,54 +6816,3 @@ msgstr ""
#, fuzzy
msgid "Pointer"
msgstr "perc"
-
-#, fuzzy
-#~ msgid "open new channels near server"
-#~ msgstr "az új szobák/privát beszélgetések a szerverhez közel nyíljanak"
-
-#, fuzzy
-#~ msgid "open new privates near server"
-#~ msgstr "az új szobák/privát beszélgetések a szerverhez közel nyíljanak"
-
-#, fuzzy
-#~ msgid "%s%s: buffer not found for IRC server \"%s\", channel \"%s\""
-#~ msgstr "%s név \"%s\" nem található a \"%s\" parancshoz\n"
-
-#, fuzzy
-#~ msgid "list of regex modifiers"
-#~ msgstr "Aliaszok listája:\n"
-
-#, fuzzy
-#~ msgid "List of regex modifiers:"
-#~ msgstr "Aliaszok listája:\n"
-
-#, fuzzy
-#~ msgid "text color for prefix #1 in nicklist"
-#~ msgstr "név színe"
-
-#, fuzzy
-#~ msgid "text color for prefix #2 in nicklist"
-#~ msgstr "név színe"
-
-#, fuzzy
-#~ msgid "text color for prefix #3 in nicklist"
-#~ msgstr "név színe"
-
-#, fuzzy
-#~ msgid "text color for prefix #4 in nicklist"
-#~ msgstr "név színe"
-
-#, fuzzy
-#~ msgid "text color for prefix #5 in nicklist"
-#~ msgstr "név színe"
-
-#~ msgid ""
-#~ "channel: channel name to join\n"
-#~ " key: key to join the channel"
-#~ msgstr ""
-#~ "szoba: a szoba neve, ahová csatlakozni szeretnénk\n"
-#~ "kulcs: a csatlakozáshoz szükséges kulcs"
-
-#, fuzzy
-#~ msgid "color for buffer name when connected using SSL to server"
-#~ msgstr "%s nincs csatlakozva szerverhez!\n"
diff --git a/po/it.po b/po/it.po
index 5e729b14f..3353b0e71 100644
--- a/po/it.po
+++ b/po/it.po
@@ -20,8 +20,8 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.3.4-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2010-11-01 18:38+0100\n"
-"PO-Revision-Date: 2010-10-30 20:30+0200\n"
+"POT-Creation-Date: 2010-11-06 11:25+0100\n"
+"PO-Revision-Date: 2010-11-05 17:17+0100\n"
"Last-Translator: Marco Paolone <marcopaolone@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
"Language: Italian\n"
@@ -3272,6 +3272,42 @@ msgstr ""
msgid "Notice"
msgstr "Notice"
+#, fuzzy, c-format
+msgid ""
+"%s%s: server must be specified because you are not on an irc server or "
+"channel"
+msgstr ""
+"%s%s: il comando \"%s\" deve essere eseguito su un buffer IRC (server o "
+"canale)"
+
+#, fuzzy, c-format
+msgid "%s%s: notify already exists"
+msgstr "%s%s: l'ignore esiste già"
+
+#, fuzzy, c-format
+msgid "%s: notification added for %s%s"
+msgstr "%s: cambio indirizzo in %s/%d"
+
+#, fuzzy, c-format
+msgid "%s%s: error adding notification"
+msgstr "%s%s: errore nell'aggiunta dell'ignore"
+
+#, fuzzy, c-format
+msgid "%s: all notifications deleted"
+msgstr "%s: tutti gli ignore eliminati"
+
+#, fuzzy, c-format
+msgid "%s: no notification in list"
+msgstr "%s: nessun ignore nella lista"
+
+#, fuzzy, c-format
+msgid "%s: notification deleted"
+msgstr "%s: ignore eliminato"
+
+#, fuzzy, c-format
+msgid "%s%s: notification not found"
+msgstr "%s%s: ignore non trovato"
+
#, c-format
msgid "%s%s: cannot create new private buffer \"%s\""
msgstr "%s%s: impossibile creare il nuovo buffer privato \"%s\""
@@ -3584,10 +3620,11 @@ msgstr "ignora nick/host dai server o dai canali"
msgid "[list] | [add [re:]nick/host [server [channel]]] | [del number|-all]"
msgstr "[list] | [add [re:]nick/host [server [canale]]] | [del numero|-all]"
+#, fuzzy
msgid ""
" list: list all ignores\n"
-" add: add a ignore\n"
-" del: del a ignore\n"
+" add: add an ignore\n"
+" del: delete an ignore\n"
" number: number of ignore to delete (look at list to find it)\n"
" -all: delete all ignores\n"
"nick/host: nick or host to ignore: syntax is \"re:regex\" or \"mask\" (a "
@@ -3908,6 +3945,33 @@ msgstr ""
" nick: utente a cui inviare la notifica\n"
" testo: testo da inviare"
+msgid "add a notification for presence or away status of nicks on servers"
+msgstr ""
+
+#, fuzzy
+msgid "[add nick [server [-away]]] | [del nick|-all [server]]"
+msgstr "[list] | [add [re:]nick/host [server [canale]]] | [del numero|-all]"
+
+msgid ""
+" add: add a notification\n"
+" nick: nickname\n"
+"server: internal server name (by default current server)\n"
+" -away: notify when away message is changed (by doing whois on nick)\n"
+" del: delete a notification\n"
+" -all: delete all notifications\n"
+"\n"
+"Without argument, this command displays notifications for current server (or "
+"all servers if command is issued on core buffer).\n"
+"\n"
+"Examples:\n"
+" notify when \"toto\" joins/quits current server:\n"
+" /notify add toto\n"
+" notify when \"toto\" joins/quits freenode server:\n"
+" /notify add toto freenode\n"
+" notify when \"toto\" is away or back on freenode server:\n"
+" /notify add toto freenode -away"
+msgstr ""
+
msgid "give channel operator status to nickname(s)"
msgstr "concede lo stato di operatore del canale al(ai) nick"
@@ -4416,6 +4480,10 @@ msgstr "messaggio di uscita predefinito per il canale IRC"
msgid "numbers for defined ignores"
msgstr "numero di ignore definiti"
+#, fuzzy
+msgid "nicks in notify list"
+msgstr "%s: nessun ignore nella lista"
+
#, c-format
msgid ""
"%s%s: warning: server \"%s\" not found in configuration file, not deleted in "
@@ -4590,6 +4658,11 @@ msgstr ""
"messaggio di abbandono predefinito (disconnessione dal server) (\"%v\" verrà "
"sostituito dalla versione di WeeChat)"
+msgid ""
+"notify list for server (you should not change this option but use /notify "
+"command instead)"
+msgstr ""
+
#, c-format
msgid "%s%s: error creating server \"%s\""
msgstr "%s%s: errore durante la creazione del server \"%s\""
@@ -4736,6 +4809,18 @@ msgstr ""
"visualizza notifiche come messaggi privati (se automatico, utilizza il "
"buffer privato se viene trovato)"
+msgid ""
+"comma separated list of tags used in messages printed by notify when a nick "
+"joins or quits server (result of command ison), for example: "
+"\"notify_highglight\", \"notify_message\" or \"notify_private\""
+msgstr ""
+
+msgid ""
+"comma separated list of tags used in messages printed by notify when a nick "
+"away status changes (result of command whois), for example: "
+"\"notify_highglight\", \"notify_message\" or \"notify_private\""
+msgstr ""
+
msgid "close buffer when /part is issued on a channel"
msgstr "chiude buffer quando viene digitato /part nel canale"
@@ -4841,6 +4926,18 @@ msgstr ""
"ritardo massimo per la riconnessione automatica al server (in secondi, 0 = "
"nessun massimo)"
+msgid "when off, colors codes are ignored in incoming messages"
+msgstr ""
+"se disabilitato, i codici colori vengono ignorati nei messaggi in entrata"
+
+msgid ""
+"allow user to send colors with special codes (ctrl-c + a code and optional "
+"color: b=bold, cxx=color, cxx,yy=color+background, u=underline, r=reverse)"
+msgstr ""
+"consente all'utente di inviare i colori con dei codici speciali (ctrl-c + un "
+"codice ed un colore opzionale: b=grassetto, cxx.yy=colore+sfondo, "
+"u=sottolineato, r=inverso)"
+
msgid "interval between two checks for lag (in seconds, 0 = never check)"
msgstr ""
"intervallo tra due controlli per il ritardo (in secondi, 0 = nessun "
@@ -4860,20 +4957,21 @@ msgstr ""
"intervallo tra due aggiornamenti per l'elemento ritardo, quando è in aumento "
"(in secondi)"
-msgid "when off, colors codes are ignored in incoming messages"
-msgstr ""
-"se disabilitato, i codici colori vengono ignorati nei messaggi in entrata"
+msgid "send unknown commands to server"
+msgstr "invia comandi sconosciuti al server"
+#, fuzzy
msgid ""
-"allow user to send colors with special codes (ctrl-c + a code and optional "
-"color: b=bold, cxx=color, cxx,yy=color+background, u=underline, r=reverse)"
+"interval between two checks for notify with IRC command \"ison\" (in minutes)"
msgstr ""
-"consente all'utente di inviare i colori con dei codici speciali (ctrl-c + un "
-"codice ed un colore opzionale: b=grassetto, cxx.yy=colore+sfondo, "
-"u=sottolineato, r=inverso)"
+"intervallo tra le due verifiche per l'assenza (in minuti, 0 = nessun check)"
-msgid "send unknown commands to server"
-msgstr "invia comandi sconosciuti al server"
+#, fuzzy
+msgid ""
+"interval between two checks for notify with IRC command \"whois\" (in "
+"minutes)"
+msgstr ""
+"intervallo tra le due verifiche per l'assenza (in minuti, 0 = nessun check)"
#, c-format
msgid "%sCTCP requested by %s%s%s: %s%s%s%s%s%s"
@@ -5034,6 +5132,14 @@ msgstr "elenco di ignore IRC"
msgid "ignore pointer (optional)"
msgstr "puntatore all'ignore (opzionale)"
+#, fuzzy
+msgid "list of notify"
+msgstr "elenco delle opzioni"
+
+#, fuzzy
+msgid "notify pointer (optional)"
+msgstr "puntatore al nick (opzionale)"
+
#, c-format
msgid "%s%s: you are not connected to server"
msgstr "%s%s: non connesso al server"
@@ -5042,6 +5148,46 @@ msgstr "%s%s: non connesso al server"
msgid "%s%s: this buffer is not a channel!"
msgstr "%s%s: questo buffer non è un canale!"
+msgid "offline"
+msgstr ""
+
+msgid "online"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Notify list for %s%s%s:"
+msgstr "Lista xfer:"
+
+msgid "Notify list is empty on this server"
+msgstr ""
+
+#, fuzzy
+msgid "Notify list for all servers:"
+msgstr "Lista xfer:"
+
+msgid "Notify list is empty on all servers"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%snotify: %s%s%s has joined %s%s"
+msgstr "%s%s%s%s ha cacciato %s%s%s"
+
+#, fuzzy, c-format
+msgid "%snotify: %s%s%s has quit %s%s"
+msgstr "%s%s%s%s ha cacciato %s%s%s"
+
+#, fuzzy, c-format
+msgid "%snotify: %s%s%s is now away: \"%s\""
+msgstr "%s%s[%s%s%s]%s è assente: %s"
+
+#, fuzzy, c-format
+msgid "%snotify: %s%s%s is back"
+msgstr "%sL'argomento per %s%s%s è \"%s%s\""
+
+#, fuzzy, c-format
+msgid "%snotify: %s%s%s is still away: \"%s\""
+msgstr "%s%s[%s%s%s]%s è assente: %s"
+
#, c-format
msgid ""
"%s%s: error building answer for SASL authentication, using mechanism \"%s\""
@@ -7051,39 +7197,3 @@ msgstr "Tabella hash (output)"
msgid "Pointer"
msgstr "Puntatore"
-
-#~ msgid "open new channels near server"
-#~ msgstr "apri nuovi canali vicino al server"
-
-#~ msgid "open new privates near server"
-#~ msgstr "apri nuovi privati vicino al server"
-
-#~ msgid "%s%s: addresses not defined for server \"%s\", cannot connect"
-#~ msgstr ""
-#~ "%s%s: indirizzo non definito per il server \"%s\", impossibile connettersi"
-
-#~ msgid "%s%s: buffer not found for IRC server \"%s\", channel \"%s\""
-#~ msgstr "%s%s: buffer non trovato per il server IRC \"%s\", canale \"%s\""
-
-#, fuzzy
-#~ msgid "list of regex modifiers"
-#~ msgstr "lista di xfer"
-
-#, fuzzy
-#~ msgid "List of regex modifiers:"
-#~ msgstr "Elenco di proxy:"
-
-#~ msgid "text color for prefix #1 in nicklist"
-#~ msgstr "colore del testo per il prefisso #1 nella nicklist"
-
-#~ msgid "text color for prefix #2 in nicklist"
-#~ msgstr "colore del testo per il prefisso #2 nella nicklist"
-
-#~ msgid "text color for prefix #3 in nicklist"
-#~ msgstr "colore del testo per il prefisso #3 nella nicklist"
-
-#~ msgid "text color for prefix #4 in nicklist"
-#~ msgstr "colore del testo per il prefisso #4 nella nicklist"
-
-#~ msgid "text color for prefix #5 in nicklist"
-#~ msgstr "colore del testo per il prefisso #5 nella nicklist"
diff --git a/po/pl.po b/po/pl.po
index bbb674a7f..b3b9350c7 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -21,8 +21,8 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.3.4-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2010-11-01 18:38+0100\n"
-"PO-Revision-Date: 2010-08-07 10:46+0200\n"
+"POT-Creation-Date: 2010-11-06 11:25+0100\n"
+"PO-Revision-Date: 2010-11-05 17:17+0100\n"
"Last-Translator: Krzysztof Koroscik <soltys@szluug.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
"Language: Polish\n"
@@ -3244,6 +3244,41 @@ msgstr ""
msgid "Notice"
msgstr ""
+#, fuzzy, c-format
+msgid ""
+"%s%s: server must be specified because you are not on an irc server or "
+"channel"
+msgstr ""
+"%s%s: komenda \"%s\" musi zostać wykonana w buforze irc (serwer lub kanał)"
+
+#, fuzzy, c-format
+msgid "%s%s: notify already exists"
+msgstr "%s%s: już jest ignorowane"
+
+#, fuzzy, c-format
+msgid "%s: notification added for %s%s"
+msgstr "%s: zmieniam adres na %s/%d"
+
+#, fuzzy, c-format
+msgid "%s%s: error adding notification"
+msgstr "%s%s: błąd podczas dodawania do ignorowanych"
+
+#, fuzzy, c-format
+msgid "%s: all notifications deleted"
+msgstr "%s: lista ignorowanych została usunięta"
+
+#, fuzzy, c-format
+msgid "%s: no notification in list"
+msgstr "%s: brak osób ignorowanych"
+
+#, fuzzy, c-format
+msgid "%s: notification deleted"
+msgstr "%s: usunięto ignorowanie"
+
+#, fuzzy, c-format
+msgid "%s%s: notification not found"
+msgstr "%s%s: nie znaleziono ignorowania"
+
#, c-format
msgid "%s%s: cannot create new private buffer \"%s\""
msgstr "%s%s: nie można utworzyć nowego bufora prywatnego \"%s\""
@@ -3554,10 +3589,11 @@ msgstr "ignoruje nicki/hosty z serwera lub kanałów"
msgid "[list] | [add [re:]nick/host [server [channel]]] | [del number|-all]"
msgstr "[list] | [add [re:]nick/host [serwer [kanał]]] | [del numer|-all]"
+#, fuzzy
msgid ""
" list: list all ignores\n"
-" add: add a ignore\n"
-" del: del a ignore\n"
+" add: add an ignore\n"
+" del: delete an ignore\n"
" number: number of ignore to delete (look at list to find it)\n"
" -all: delete all ignores\n"
"nick/host: nick or host to ignore: syntax is \"re:regex\" or \"mask\" (a "
@@ -3879,6 +3915,33 @@ msgstr ""
"nick: użytkownik, do którego wysłac powiadomienie\n"
" tekst: treść"
+msgid "add a notification for presence or away status of nicks on servers"
+msgstr ""
+
+#, fuzzy
+msgid "[add nick [server [-away]]] | [del nick|-all [server]]"
+msgstr "[list] | [add [re:]nick/host [serwer [kanał]]] | [del numer|-all]"
+
+msgid ""
+" add: add a notification\n"
+" nick: nickname\n"
+"server: internal server name (by default current server)\n"
+" -away: notify when away message is changed (by doing whois on nick)\n"
+" del: delete a notification\n"
+" -all: delete all notifications\n"
+"\n"
+"Without argument, this command displays notifications for current server (or "
+"all servers if command is issued on core buffer).\n"
+"\n"
+"Examples:\n"
+" notify when \"toto\" joins/quits current server:\n"
+" /notify add toto\n"
+" notify when \"toto\" joins/quits freenode server:\n"
+" /notify add toto freenode\n"
+" notify when \"toto\" is away or back on freenode server:\n"
+" /notify add toto freenode -away"
+msgstr ""
+
msgid "give channel operator status to nickname(s)"
msgstr "nadaje uprawienia użytkownika kanału"
@@ -4382,6 +4445,10 @@ msgstr "domyślna wiadomość opuszczenia kanału IRC"
msgid "numbers for defined ignores"
msgstr "numery zdefiniowanych irgnorów"
+#, fuzzy
+msgid "nicks in notify list"
+msgstr "%s: brak osób ignorowanych"
+
#, c-format
msgid ""
"%s%s: warning: server \"%s\" not found in configuration file, not deleted in "
@@ -4558,6 +4625,11 @@ msgstr ""
"domyślna wiadomość wyjścia z IRC (rozłączenia z serwerem) (\"%v\" zostanie "
"zastąpione wersją WeeChat)"
+msgid ""
+"notify list for server (you should not change this option but use /notify "
+"command instead)"
+msgstr ""
+
#, c-format
msgid "%s%s: error creating server \"%s\""
msgstr "%s%s: błąd podczas tworzenia serwera \"%s\""
@@ -4692,6 +4764,18 @@ msgstr ""
"wyświetlaj powiadomienia jako prywatne wiadomości (jeśli auto, użwa "
"prywatnego bufora jeśli taki istnieje)"
+msgid ""
+"comma separated list of tags used in messages printed by notify when a nick "
+"joins or quits server (result of command ison), for example: "
+"\"notify_highglight\", \"notify_message\" or \"notify_private\""
+msgstr ""
+
+msgid ""
+"comma separated list of tags used in messages printed by notify when a nick "
+"away status changes (result of command whois), for example: "
+"\"notify_highglight\", \"notify_message\" or \"notify_private\""
+msgstr ""
+
msgid "close buffer when /part is issued on a channel"
msgstr "zamyka bufor, kiedy na kanale wykonamy /part"
@@ -4786,6 +4870,19 @@ msgstr ""
"maksymalne opóźnienie do ponownego połączenia z serwerem (w sekundach, 0 = "
"brak maksimum)"
+msgid "when off, colors codes are ignored in incoming messages"
+msgstr ""
+"kiedy wyłączone (off) kody kolorów są ignorowane w przychodzących "
+"wiadomościach"
+
+msgid ""
+"allow user to send colors with special codes (ctrl-c + a code and optional "
+"color: b=bold, cxx=color, cxx,yy=color+background, u=underline, r=reverse)"
+msgstr ""
+"zezwala użytkownikowi wysyłać kolory za pomocą specjalnych kodów (ctrl-c + "
+"kod i opcjonalny kolor: b=pogrubiony (bold), cxx=kolor, cxx,yy=kolor+tło, "
+"u=podkreślenie, r=rewers)"
+
msgid "interval between two checks for lag (in seconds, 0 = never check)"
msgstr ""
"przerwa między dwoma sprawdzeniami opóźnienia (w sekundach, 0 = nigdy nie "
@@ -4804,21 +4901,23 @@ msgstr ""
"przerwa między dwoma odświerzeniami wskaźnika lagu, kiedy się on zwiększa (w "
"sekundach)"
-msgid "when off, colors codes are ignored in incoming messages"
-msgstr ""
-"kiedy wyłączone (off) kody kolorów są ignorowane w przychodzących "
-"wiadomościach"
+msgid "send unknown commands to server"
+msgstr "wysyłaj nieznane komendy do serwera"
+#, fuzzy
msgid ""
-"allow user to send colors with special codes (ctrl-c + a code and optional "
-"color: b=bold, cxx=color, cxx,yy=color+background, u=underline, r=reverse)"
+"interval between two checks for notify with IRC command \"ison\" (in minutes)"
msgstr ""
-"zezwala użytkownikowi wysyłać kolory za pomocą specjalnych kodów (ctrl-c + "
-"kod i opcjonalny kolor: b=pogrubiony (bold), cxx=kolor, cxx,yy=kolor+tło, "
-"u=podkreślenie, r=rewers)"
+"przerwa pomiędzy dwoma sprawdzeniami stanu nieobecności (w minutach, 0 = "
+"nigdy nie sprawdzaj)"
-msgid "send unknown commands to server"
-msgstr "wysyłaj nieznane komendy do serwera"
+#, fuzzy
+msgid ""
+"interval between two checks for notify with IRC command \"whois\" (in "
+"minutes)"
+msgstr ""
+"przerwa pomiędzy dwoma sprawdzeniami stanu nieobecności (w minutach, 0 = "
+"nigdy nie sprawdzaj)"
#, c-format
msgid "%sCTCP requested by %s%s%s: %s%s%s%s%s%s"
@@ -4979,6 +5078,14 @@ msgstr "lista ignorów IRC"
msgid "ignore pointer (optional)"
msgstr "wskaźnik ignorowania (opcjonalne)"
+#, fuzzy
+msgid "list of notify"
+msgstr "lista opcji"
+
+#, fuzzy
+msgid "notify pointer (optional)"
+msgstr "wskaźnik nicka (opcjonalne)"
+
#, c-format
msgid "%s%s: you are not connected to server"
msgstr "%s%s: nie jesteś połączony z serwerem"
@@ -4987,6 +5094,46 @@ msgstr "%s%s: nie jesteś połączony z serwerem"
msgid "%s%s: this buffer is not a channel!"
msgstr "%s%s: to nie jest bufor kanału"
+msgid "offline"
+msgstr ""
+
+msgid "online"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Notify list for %s%s%s:"
+msgstr "Lista xferów:"
+
+msgid "Notify list is empty on this server"
+msgstr ""
+
+#, fuzzy
+msgid "Notify list for all servers:"
+msgstr "Lista xferów:"
+
+msgid "Notify list is empty on all servers"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%snotify: %s%s%s has joined %s%s"
+msgstr "%s%s%s%s wykopał %s%s%s"
+
+#, fuzzy, c-format
+msgid "%snotify: %s%s%s has quit %s%s"
+msgstr "%s%s%s%s wykopał %s%s%s"
+
+#, fuzzy, c-format
+msgid "%snotify: %s%s%s is now away: \"%s\""
+msgstr "%s%s[%s%s%s]%s jest nieobecny: %s"
+
+#, fuzzy, c-format
+msgid "%snotify: %s%s%s is back"
+msgstr "%sTemat kanału %s%s%s to \"%s%s\""
+
+#, fuzzy, c-format
+msgid "%snotify: %s%s%s is still away: \"%s\""
+msgstr "%s%s[%s%s%s]%s jest nieobecny: %s"
+
#, c-format
msgid ""
"%s%s: error building answer for SASL authentication, using mechanism \"%s\""
@@ -6951,24 +7098,3 @@ msgstr ""
msgid "Pointer"
msgstr "Wskaźnik"
-
-#~ msgid "open new channels near server"
-#~ msgstr "otwórz nowy kanał blisko serwera"
-
-#~ msgid "open new privates near server"
-#~ msgstr "otwórz prywatne konwersacje blisko serwera"
-
-#~ msgid "%s%s: addresses not defined for server \"%s\", cannot connect"
-#~ msgstr ""
-#~ "%s%s: adres nie zdefiniowany dla serwera \"%s\", nie można się połączyć"
-
-#~ msgid "%s%s: buffer not found for IRC server \"%s\", channel \"%s\""
-#~ msgstr "%s%s: nie znaleziono bufora dla serwera IRC \"%s\", kanał \"%s\""
-
-#, fuzzy
-#~ msgid "list of regex modifiers"
-#~ msgstr "lista xfer"
-
-#, fuzzy
-#~ msgid "List of regex modifiers:"
-#~ msgstr "Lista proxy:"
diff --git a/po/ru.po b/po/ru.po
index 16c67e67c..0eead47af 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -20,8 +20,8 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.3.4-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2010-11-01 18:38+0100\n"
-"PO-Revision-Date: 2010-08-07 10:46+0200\n"
+"POT-Creation-Date: 2010-11-06 11:25+0100\n"
+"PO-Revision-Date: 2010-11-05 17:17+0100\n"
"Last-Translator: Pavel Shevchuk <stlwrt@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
"Language: Russian\n"
@@ -3041,6 +3041,40 @@ msgid "Notice"
msgstr ""
#, fuzzy, c-format
+msgid ""
+"%s%s: server must be specified because you are not on an irc server or "
+"channel"
+msgstr "%s \"%s\" команда может быть выполнена только в буфере сервера\n"
+
+#, fuzzy, c-format
+msgid "%s%s: notify already exists"
+msgstr "%s игнорирование уже существует\n"
+
+#, fuzzy, c-format
+msgid "%s: notification added for %s%s"
+msgstr "%s IP адрес не найден\n"
+
+#, fuzzy, c-format
+msgid "%s%s: error adding notification"
+msgstr "%s недостаточно памяти для сообщения в строке информации\n"
+
+#, fuzzy, c-format
+msgid "%s: all notifications deleted"
+msgstr "команда users отключена"
+
+#, fuzzy, c-format
+msgid "%s: no notification in list"
+msgstr "%s игнорирования не найдены\n"
+
+#, fuzzy, c-format
+msgid "%s: notification deleted"
+msgstr "Игнорирования не заданы.\n"
+
+#, fuzzy, c-format
+msgid "%s%s: notification not found"
+msgstr "подпись не найдена"
+
+#, fuzzy, c-format
msgid "%s%s: cannot create new private buffer \"%s\""
msgstr "%s невозможно создать новый буфер привата \"%s\"\n"
@@ -3327,8 +3361,8 @@ msgstr ""
msgid ""
" list: list all ignores\n"
-" add: add a ignore\n"
-" del: del a ignore\n"
+" add: add an ignore\n"
+" del: delete an ignore\n"
" number: number of ignore to delete (look at list to find it)\n"
" -all: delete all ignores\n"
"nick/host: nick or host to ignore: syntax is \"re:regex\" or \"mask\" (a "
@@ -3606,6 +3640,32 @@ msgstr ""
" ник: адресат уведомления\n"
"текст: отправляемый текст"
+msgid "add a notification for presence or away status of nicks on servers"
+msgstr ""
+
+msgid "[add nick [server [-away]]] | [del nick|-all [server]]"
+msgstr ""
+
+msgid ""
+" add: add a notification\n"
+" nick: nickname\n"
+"server: internal server name (by default current server)\n"
+" -away: notify when away message is changed (by doing whois on nick)\n"
+" del: delete a notification\n"
+" -all: delete all notifications\n"
+"\n"
+"Without argument, this command displays notifications for current server (or "
+"all servers if command is issued on core buffer).\n"
+"\n"
+"Examples:\n"
+" notify when \"toto\" joins/quits current server:\n"
+" /notify add toto\n"
+" notify when \"toto\" joins/quits freenode server:\n"
+" /notify add toto freenode\n"
+" notify when \"toto\" is away or back on freenode server:\n"
+" /notify add toto freenode -away"
+msgstr ""
+
#, fuzzy
msgid "give channel operator status to nickname(s)"
msgstr "даёт статус оператора канала нику(-ам)"
@@ -4137,6 +4197,10 @@ msgstr "список ников на канале"
msgid "numbers for defined ignores"
msgstr ""
+#, fuzzy
+msgid "nicks in notify list"
+msgstr "%s игнорирования не найдены\n"
+
#, c-format
msgid ""
"%s%s: warning: server \"%s\" not found in configuration file, not deleted in "
@@ -4306,6 +4370,11 @@ msgid ""
"WeeChat version in string)"
msgstr "сообщение о выходе по-умолчанию ('%v' будет заменён на версию WeeChat)"
+msgid ""
+"notify list for server (you should not change this option but use /notify "
+"command instead)"
+msgstr ""
+
#, fuzzy, c-format
msgid "%s%s: error creating server \"%s\""
msgstr "%s недостаточно памяти для сообщения в строке информации\n"
@@ -4433,6 +4502,18 @@ msgid ""
"display notices as private messages (if auto, use private buffer if found)"
msgstr "отображать notice'ы в виде личных сообщений"
+msgid ""
+"comma separated list of tags used in messages printed by notify when a nick "
+"joins or quits server (result of command ison), for example: "
+"\"notify_highglight\", \"notify_message\" or \"notify_private\""
+msgstr ""
+
+msgid ""
+"comma separated list of tags used in messages printed by notify when a nick "
+"away status changes (result of command whois), for example: "
+"\"notify_highglight\", \"notify_message\" or \"notify_private\""
+msgstr ""
+
msgid "close buffer when /part is issued on a channel"
msgstr ""
@@ -4521,6 +4602,17 @@ msgstr ""
msgid "maximum autoreconnect delay to server (in seconds, 0 = no maximum)"
msgstr ""
+msgid "when off, colors codes are ignored in incoming messages"
+msgstr "когда выключено, цвета в исходящих сообщениях игнорируются"
+
+#, fuzzy
+msgid ""
+"allow user to send colors with special codes (ctrl-c + a code and optional "
+"color: b=bold, cxx=color, cxx,yy=color+background, u=underline, r=reverse)"
+msgstr ""
+"позволить отправлять цвета специальными кодами (^Cb=жирный, ^Ccxx=цветной, "
+"^Ccxx,yy=цветной+фон, ^Cu=подчёркнутый, ^Cr=инвертированный)"
+
#, fuzzy
msgid "interval between two checks for lag (in seconds, 0 = never check)"
msgstr ""
@@ -4541,20 +4633,22 @@ msgid ""
msgstr ""
"интервал между проверками на отсутствие (в минутах, 0 = не проверять никогда)"
-msgid "when off, colors codes are ignored in incoming messages"
-msgstr "когда выключено, цвета в исходящих сообщениях игнорируются"
+#, fuzzy
+msgid "send unknown commands to server"
+msgstr "отсылать неизвестные команды IRC серверу"
#, fuzzy
msgid ""
-"allow user to send colors with special codes (ctrl-c + a code and optional "
-"color: b=bold, cxx=color, cxx,yy=color+background, u=underline, r=reverse)"
+"interval between two checks for notify with IRC command \"ison\" (in minutes)"
msgstr ""
-"позволить отправлять цвета специальными кодами (^Cb=жирный, ^Ccxx=цветной, "
-"^Ccxx,yy=цветной+фон, ^Cu=подчёркнутый, ^Cr=инвертированный)"
+"интервал между проверками на отсутствие (в минутах, 0 = не проверять никогда)"
#, fuzzy
-msgid "send unknown commands to server"
-msgstr "отсылать неизвестные команды IRC серверу"
+msgid ""
+"interval between two checks for notify with IRC command \"whois\" (in "
+"minutes)"
+msgstr ""
+"интервал между проверками на отсутствие (в минутах, 0 = не проверять никогда)"
#, fuzzy, c-format
msgid "%sCTCP requested by %s%s%s: %s%s%s%s%s%s"
@@ -4733,6 +4827,14 @@ msgstr "порт IRC сервера"
msgid "ignore pointer (optional)"
msgstr ""
+#, fuzzy
+msgid "list of notify"
+msgstr "настроить параметры конфигурации"
+
+#, fuzzy
+msgid "notify pointer (optional)"
+msgstr "Сохраняю конфигурацию\n"
+
#, fuzzy, c-format
msgid "%s%s: you are not connected to server"
msgstr "%s вы не подключены к серверу\n"
@@ -4741,6 +4843,46 @@ msgstr "%s вы не подключены к серверу\n"
msgid "%s%s: this buffer is not a channel!"
msgstr "Это окно не является каналом!\n"
+msgid "offline"
+msgstr ""
+
+msgid "online"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Notify list for %s%s%s:"
+msgstr "очистить хотлист"
+
+msgid "Notify list is empty on this server"
+msgstr ""
+
+#, fuzzy
+msgid "Notify list for all servers:"
+msgstr "очистить хотлист"
+
+msgid "Notify list is empty on all servers"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "%snotify: %s%s%s has joined %s%s"
+msgstr "%s%s%s выкинул %s%s%s с канала %s%s"
+
+#, fuzzy, c-format
+msgid "%snotify: %s%s%s has quit %s%s"
+msgstr "%s%s%s выкинул %s%s%s с канала %s%s"
+
+#, fuzzy, c-format
+msgid "%snotify: %s%s%s is now away: \"%s\""
+msgstr "%s%s%s отсутствует: %s\n"
+
+#, fuzzy, c-format
+msgid "%snotify: %s%s%s is back"
+msgstr "Тема канала %s%s%s: "
+
+#, fuzzy, c-format
+msgid "%snotify: %s%s%s is still away: \"%s\""
+msgstr "%s%s%s отсутствует: %s\n"
+
#, c-format
msgid ""
"%s%s: error building answer for SASL authentication, using mechanism \"%s\""
@@ -6682,54 +6824,3 @@ msgstr ""
#, fuzzy
msgid "Pointer"
msgstr "минута"
-
-#, fuzzy
-#~ msgid "open new channels near server"
-#~ msgstr "открывать новые каналы/приваты рядом с сервером"
-
-#, fuzzy
-#~ msgid "open new privates near server"
-#~ msgstr "открывать новые каналы/приваты рядом с сервером"
-
-#, fuzzy
-#~ msgid "%s%s: buffer not found for IRC server \"%s\", channel \"%s\""
-#~ msgstr "%s ник \"%s\" не найден для команды \"%s\"\n"
-
-#, fuzzy
-#~ msgid "list of regex modifiers"
-#~ msgstr "Список сокращений:\n"
-
-#, fuzzy
-#~ msgid "List of regex modifiers:"
-#~ msgstr "Список сокращений:\n"
-
-#, fuzzy
-#~ msgid "text color for prefix #1 in nicklist"
-#~ msgstr "цвет ника"
-
-#, fuzzy
-#~ msgid "text color for prefix #2 in nicklist"
-#~ msgstr "цвет ника"
-
-#, fuzzy
-#~ msgid "text color for prefix #3 in nicklist"
-#~ msgstr "цвет ника"
-
-#, fuzzy
-#~ msgid "text color for prefix #4 in nicklist"
-#~ msgstr "цвет ника"
-
-#, fuzzy
-#~ msgid "text color for prefix #5 in nicklist"
-#~ msgstr "цвет ника"
-
-#~ msgid ""
-#~ "channel: channel name to join\n"
-#~ " key: key to join the channel"
-#~ msgstr ""
-#~ "канал: название канала\n"
-#~ " ключ: ключ для входа на канал"
-
-#, fuzzy
-#~ msgid "color for buffer name when connected using SSL to server"
-#~ msgstr "%s вы не подключены к серверу\n"
diff --git a/po/srcfiles.cmake b/po/srcfiles.cmake
index dc40b97bd..e3069e1cc 100644
--- a/po/srcfiles.cmake
+++ b/po/srcfiles.cmake
@@ -138,6 +138,8 @@ SET(WEECHAT_SOURCES
./src/plugins/irc/irc-msgbuffer.h
./src/plugins/irc/irc-nick.c
./src/plugins/irc/irc-nick.h
+./src/plugins/irc/irc-notify.c
+./src/plugins/irc/irc-notify.h
./src/plugins/irc/irc-protocol.c
./src/plugins/irc/irc-protocol.h
./src/plugins/irc/irc-raw.c
diff --git a/po/weechat.pot b/po/weechat.pot
index 201f810dc..39af0104d 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: 2010-11-01 18:38+0100\n"
+"POT-Creation-Date: 2010-11-06 11:25+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -2642,6 +2642,40 @@ msgid "Notice"
msgstr ""
#, c-format
+msgid ""
+"%s%s: server must be specified because you are not on an irc server or "
+"channel"
+msgstr ""
+
+#, c-format
+msgid "%s%s: notify already exists"
+msgstr ""
+
+#, c-format
+msgid "%s: notification added for %s%s"
+msgstr ""
+
+#, c-format
+msgid "%s%s: error adding notification"
+msgstr ""
+
+#, c-format
+msgid "%s: all notifications deleted"
+msgstr ""
+
+#, c-format
+msgid "%s: no notification in list"
+msgstr ""
+
+#, c-format
+msgid "%s: notification deleted"
+msgstr ""
+
+#, c-format
+msgid "%s%s: notification not found"
+msgstr ""
+
+#, c-format
msgid "%s%s: cannot create new private buffer \"%s\""
msgstr ""
@@ -2887,8 +2921,8 @@ msgstr ""
msgid ""
" list: list all ignores\n"
-" add: add a ignore\n"
-" del: del a ignore\n"
+" add: add an ignore\n"
+" del: delete an ignore\n"
" number: number of ignore to delete (look at list to find it)\n"
" -all: delete all ignores\n"
"nick/host: nick or host to ignore: syntax is \"re:regex\" or \"mask\" (a "
@@ -3119,6 +3153,32 @@ msgid ""
" text: text to send"
msgstr ""
+msgid "add a notification for presence or away status of nicks on servers"
+msgstr ""
+
+msgid "[add nick [server [-away]]] | [del nick|-all [server]]"
+msgstr ""
+
+msgid ""
+" add: add a notification\n"
+" nick: nickname\n"
+"server: internal server name (by default current server)\n"
+" -away: notify when away message is changed (by doing whois on nick)\n"
+" del: delete a notification\n"
+" -all: delete all notifications\n"
+"\n"
+"Without argument, this command displays notifications for current server (or "
+"all servers if command is issued on core buffer).\n"
+"\n"
+"Examples:\n"
+" notify when \"toto\" joins/quits current server:\n"
+" /notify add toto\n"
+" notify when \"toto\" joins/quits freenode server:\n"
+" /notify add toto freenode\n"
+" notify when \"toto\" is away or back on freenode server:\n"
+" /notify add toto freenode -away"
+msgstr ""
+
msgid "give channel operator status to nickname(s)"
msgstr ""
@@ -3529,6 +3589,9 @@ msgstr ""
msgid "numbers for defined ignores"
msgstr ""
+msgid "nicks in notify list"
+msgstr ""
+
#, c-format
msgid ""
"%s%s: warning: server \"%s\" not found in configuration file, not deleted in "
@@ -3668,6 +3731,11 @@ msgid ""
"WeeChat version in string)"
msgstr ""
+msgid ""
+"notify list for server (you should not change this option but use /notify "
+"command instead)"
+msgstr ""
+
#, c-format
msgid "%s%s: error creating server \"%s\""
msgstr ""
@@ -3785,6 +3853,18 @@ msgid ""
"display notices as private messages (if auto, use private buffer if found)"
msgstr ""
+msgid ""
+"comma separated list of tags used in messages printed by notify when a nick "
+"joins or quits server (result of command ison), for example: "
+"\"notify_highglight\", \"notify_message\" or \"notify_private\""
+msgstr ""
+
+msgid ""
+"comma separated list of tags used in messages printed by notify when a nick "
+"away status changes (result of command whois), for example: "
+"\"notify_highglight\", \"notify_message\" or \"notify_private\""
+msgstr ""
+
msgid "close buffer when /part is issued on a channel"
msgstr ""
@@ -3865,6 +3945,14 @@ msgstr ""
msgid "maximum autoreconnect delay to server (in seconds, 0 = no maximum)"
msgstr ""
+msgid "when off, colors codes are ignored in incoming messages"
+msgstr ""
+
+msgid ""
+"allow user to send colors with special codes (ctrl-c + a code and optional "
+"color: b=bold, cxx=color, cxx,yy=color+background, u=underline, r=reverse)"
+msgstr ""
+
msgid "interval between two checks for lag (in seconds, 0 = never check)"
msgstr ""
@@ -3879,15 +3967,16 @@ msgid ""
"seconds)"
msgstr ""
-msgid "when off, colors codes are ignored in incoming messages"
+msgid "send unknown commands to server"
msgstr ""
msgid ""
-"allow user to send colors with special codes (ctrl-c + a code and optional "
-"color: b=bold, cxx=color, cxx,yy=color+background, u=underline, r=reverse)"
+"interval between two checks for notify with IRC command \"ison\" (in minutes)"
msgstr ""
-msgid "send unknown commands to server"
+msgid ""
+"interval between two checks for notify with IRC command \"whois\" (in "
+"minutes)"
msgstr ""
#, c-format
@@ -4044,6 +4133,12 @@ msgstr ""
msgid "ignore pointer (optional)"
msgstr ""
+msgid "list of notify"
+msgstr ""
+
+msgid "notify pointer (optional)"
+msgstr ""
+
#, c-format
msgid "%s%s: you are not connected to server"
msgstr ""
@@ -4052,6 +4147,45 @@ msgstr ""
msgid "%s%s: this buffer is not a channel!"
msgstr ""
+msgid "offline"
+msgstr ""
+
+msgid "online"
+msgstr ""
+
+#, c-format
+msgid "Notify list for %s%s%s:"
+msgstr ""
+
+msgid "Notify list is empty on this server"
+msgstr ""
+
+msgid "Notify list for all servers:"
+msgstr ""
+
+msgid "Notify list is empty on all servers"
+msgstr ""
+
+#, c-format
+msgid "%snotify: %s%s%s has joined %s%s"
+msgstr ""
+
+#, c-format
+msgid "%snotify: %s%s%s has quit %s%s"
+msgstr ""
+
+#, c-format
+msgid "%snotify: %s%s%s is now away: \"%s\""
+msgstr ""
+
+#, c-format
+msgid "%snotify: %s%s%s is back"
+msgstr ""
+
+#, c-format
+msgid "%snotify: %s%s%s is still away: \"%s\""
+msgstr ""
+
#, c-format
msgid ""
"%s%s: error building answer for SASL authentication, using mechanism \"%s\""
diff --git a/src/plugins/irc/CMakeLists.txt b/src/plugins/irc/CMakeLists.txt
index 93ccf9cca..98e21d45d 100644
--- a/src/plugins/irc/CMakeLists.txt
+++ b/src/plugins/irc/CMakeLists.txt
@@ -35,6 +35,7 @@ irc-input.c irc-input.h
irc-mode.c irc-mode.h
irc-msgbuffer.c irc-msgbuffer.h
irc-nick.c irc-nick.h
+irc-notify.c irc-notify.h
irc-protocol.c irc-protocol.h
irc-raw.c irc-raw.h
irc-redirect.c irc-redirect.h
diff --git a/src/plugins/irc/Makefile.am b/src/plugins/irc/Makefile.am
index 105c7eeb8..bd287713c 100644
--- a/src/plugins/irc/Makefile.am
+++ b/src/plugins/irc/Makefile.am
@@ -57,6 +57,8 @@ irc_la_SOURCES = irc.c \
irc-msgbuffer.h \
irc-nick.c \
irc-nick.h \
+ irc-notify.c \
+ irc-notify.h \
irc-protocol.c \
irc-protocol.h \
irc-raw.c \
diff --git a/src/plugins/irc/irc-command.c b/src/plugins/irc/irc-command.c
index fa021f3b8..b982d55dc 100644
--- a/src/plugins/irc/irc-command.c
+++ b/src/plugins/irc/irc-command.c
@@ -36,16 +36,17 @@
#include "irc.h"
#include "irc-command.h"
#include "irc-buffer.h"
+#include "irc-channel.h"
#include "irc-color.h"
#include "irc-config.h"
-#include "irc-input.h"
-#include "irc-server.h"
-#include "irc-channel.h"
-#include "irc-nick.h"
#include "irc-display.h"
#include "irc-ignore.h"
+#include "irc-input.h"
+#include "irc-nick.h"
+#include "irc-notify.h"
#include "irc-protocol.h"
#include "irc-raw.h"
+#include "irc-server.h"
/*
@@ -1436,7 +1437,7 @@ irc_command_halfop (void *data, struct t_gui_buffer *buffer, int argc,
}
/*
- * irc_command_ignore_display: display a ignore
+ * irc_command_ignore_display: display an ignore
*/
void
@@ -1454,10 +1455,8 @@ irc_command_ignore_display (struct t_irc_ignore *ignore)
IRC_COLOR_CHAT_DELIMITERS,
IRC_COLOR_CHAT,
(mask) ? mask : ignore->mask,
- (ignore->server) ?
- ignore->server : "*",
- (ignore->channel) ?
- ignore->channel : "*");
+ (ignore->server) ? ignore->server : "*",
+ (ignore->channel) ? ignore->channel : "*");
if (mask)
free (mask);
@@ -1483,7 +1482,7 @@ irc_command_ignore (void *data, struct t_gui_buffer *buffer, int argc,
if ((argc == 1)
|| ((argc == 2) && (weechat_strcasecmp (argv[1], "list") == 0)))
{
- /* display all key bindings */
+ /* display all ignores */
if (irc_ignore_list)
{
weechat_printf (NULL, "");
@@ -2623,6 +2622,184 @@ irc_command_notice (void *data, struct t_gui_buffer *buffer, int argc,
}
/*
+ * irc_command_notify: add or remove notify
+ */
+
+int
+irc_command_notify (void *data, struct t_gui_buffer *buffer, int argc,
+ char **argv, char **argv_eol)
+{
+ struct t_irc_notify *ptr_notify;
+ int i, check_away;
+
+ IRC_BUFFER_GET_SERVER(buffer);
+
+ /* make C compiler happy */
+ (void) data;
+ (void) buffer;
+ (void) argv_eol;
+
+ /* display notify status for users on server */
+ if (argc == 1)
+ {
+ irc_notify_display_list (ptr_server);
+ return WEECHAT_RC_OK;
+ }
+
+ /* add notify */
+ if (weechat_strcasecmp (argv[1], "add") == 0)
+ {
+ if (argc < 3)
+ {
+ weechat_printf (NULL,
+ _("%s%s: missing arguments for \"%s\" "
+ "command"),
+ weechat_prefix ("error"), IRC_PLUGIN_NAME,
+ "notify add");
+ return WEECHAT_RC_OK;
+ }
+
+ check_away = 0;
+
+ if (argc > 3)
+ {
+ ptr_server = irc_server_search (argv[3]);
+ if (!ptr_server)
+ {
+ weechat_printf (NULL,
+ _("%s%s: server \"%s\" not found"),
+ weechat_prefix ("error"), IRC_PLUGIN_NAME,
+ argv[3]);
+ return WEECHAT_RC_OK;
+ }
+ }
+
+ if (!ptr_server)
+ {
+ weechat_printf (NULL,
+ _("%s%s: server must be specified because you are "
+ "not on an irc server or channel"),
+ weechat_prefix ("error"), IRC_PLUGIN_NAME);
+ return WEECHAT_RC_OK;
+ }
+
+ if (argc > 4)
+ {
+ for (i = 4; i < argc; i++)
+ {
+ if (weechat_strcasecmp (argv[i], "-away") == 0)
+ check_away = 1;
+ }
+ }
+
+ ptr_notify = irc_notify_search (ptr_server, argv[2]);
+ if (ptr_notify)
+ {
+ weechat_printf (NULL,
+ _("%s%s: notify already exists"),
+ weechat_prefix ("error"), IRC_PLUGIN_NAME);
+ return WEECHAT_RC_OK;
+ }
+
+ ptr_notify = irc_notify_new (ptr_server, argv[2], check_away);
+ if (ptr_notify)
+ {
+ irc_notify_set_server_option (ptr_server);
+ weechat_printf (ptr_server->buffer,
+ _("%s: notification added for %s%s"),
+ IRC_PLUGIN_NAME,
+ IRC_COLOR_CHAT_NICK,
+ ptr_notify->nick);
+ }
+ else
+ {
+ weechat_printf (NULL, _("%s%s: error adding notification"),
+ weechat_prefix ("error"), IRC_PLUGIN_NAME);
+ }
+
+ return WEECHAT_RC_OK;
+ }
+
+ /* delete notify */
+ if (weechat_strcasecmp (argv[1], "del") == 0)
+ {
+ if (argc < 3)
+ {
+ weechat_printf (NULL,
+ _("%s%s: missing arguments for \"%s\" "
+ "command"),
+ weechat_prefix ("error"), IRC_PLUGIN_NAME,
+ "notify del");
+ return WEECHAT_RC_OK;
+ }
+
+ if (argc > 3)
+ {
+ ptr_server = irc_server_search (argv[3]);
+ if (!ptr_server)
+ {
+ weechat_printf (NULL,
+ _("%s%s: server \"%s\" not found"),
+ weechat_prefix ("error"), IRC_PLUGIN_NAME,
+ argv[3]);
+ return WEECHAT_RC_OK;
+ }
+ }
+
+ if (!ptr_server)
+ {
+ weechat_printf (NULL,
+ _("%s%s: server must be specified because you are "
+ "not on an irc server or channel"),
+ weechat_prefix ("error"), IRC_PLUGIN_NAME);
+ return WEECHAT_RC_OK;
+ }
+
+ if (weechat_strcasecmp (argv[2], "-all") == 0)
+ {
+ if (ptr_server->notify_list)
+ {
+ irc_notify_free_all (ptr_server);
+ irc_notify_set_server_option (ptr_server);
+ weechat_printf (NULL, _("%s: all notifications deleted"),
+ IRC_PLUGIN_NAME);
+ }
+ else
+ {
+ weechat_printf (NULL, _("%s: no notification in list"),
+ IRC_PLUGIN_NAME);
+ }
+ }
+ else
+ {
+ ptr_notify = irc_notify_search (ptr_server, argv[2]);
+ if (ptr_notify)
+ {
+ irc_notify_free (ptr_server, ptr_notify);
+ irc_notify_set_server_option (ptr_server);
+ weechat_printf (NULL, _("%s: notification deleted"),
+ IRC_PLUGIN_NAME);
+ }
+ else
+ {
+ weechat_printf (NULL,
+ _("%s%s: notification not found"),
+ weechat_prefix ("error"), IRC_PLUGIN_NAME);
+ return WEECHAT_RC_OK;
+ }
+ }
+
+ return WEECHAT_RC_OK;
+ }
+
+ weechat_printf (NULL,
+ _("%s%s: unknown option for \"%s\" "
+ "command"),
+ weechat_prefix ("error"), IRC_PLUGIN_NAME, "notify");
+ return WEECHAT_RC_OK;
+}
+
+/*
* irc_command_op: give operator privileges to nickname(s)
*/
@@ -4502,8 +4679,8 @@ irc_command_init ()
N_("[list] | [add [re:]nick/host [server [channel]]] | "
"[del number|-all]"),
N_(" list: list all ignores\n"
- " add: add a ignore\n"
- " del: del a ignore\n"
+ " add: add an ignore\n"
+ " del: delete an ignore\n"
" number: number of ignore to delete (look at "
"list to find it)\n"
" -all: delete all ignores\n"
@@ -4686,6 +4863,37 @@ irc_command_init ()
"nickname: user to send notice to\n"
" text: text to send"),
"%(nicks) %-", &irc_command_notice, NULL);
+ weechat_hook_command ("notify",
+ N_("add a notification for presence or away status "
+ "of nicks on servers"),
+ N_("[add nick [server [-away]]] | "
+ "[del nick|-all [server]]"),
+ N_(" add: add a notification\n"
+ " nick: nickname\n"
+ "server: internal server name (by default "
+ "current server)\n"
+ " -away: notify when away message is changed "
+ "(by doing whois on nick)\n"
+ " del: delete a notification\n"
+ " -all: delete all notifications\n\n"
+ "Without argument, this command displays "
+ "notifications for current server (or all servers "
+ "if command is issued on core buffer).\n\n"
+ "Examples:\n"
+ " notify when \"toto\" joins/quits current "
+ "server:\n"
+ " /notify add toto\n"
+ " notify when \"toto\" joins/quits freenode "
+ "server:\n"
+ " /notify add toto freenode\n"
+ " notify when \"toto\" is away or back on "
+ "freenode server:\n"
+ " /notify add toto freenode -away"),
+ "list"
+ " || add %(irc_channel_nicks) %(irc_servers) "
+ "-away %-"
+ " || del -all|%(irc_notify_nicks) %(irc_servers) %-",
+ &irc_command_notify, NULL);
weechat_hook_command ("op",
N_("give channel operator status to nickname(s)"),
N_("nickname [nickname]"),
diff --git a/src/plugins/irc/irc-completion.c b/src/plugins/irc/irc-completion.c
index 393d9f7e9..5699afc3c 100644
--- a/src/plugins/irc/irc-completion.c
+++ b/src/plugins/irc/irc-completion.c
@@ -28,13 +28,14 @@
#include "../weechat-plugin.h"
#include "irc.h"
#include "irc-buffer.h"
+#include "irc-channel.h"
#include "irc-color.h"
#include "irc-completion.h"
#include "irc-config.h"
#include "irc-ignore.h"
-#include "irc-server.h"
-#include "irc-channel.h"
#include "irc-nick.h"
+#include "irc-notify.h"
+#include "irc-server.h"
/*
@@ -566,6 +567,50 @@ irc_completion_ignores_numbers_cb (void *data, const char *completion_item,
}
/*
+ * irc_completion_notify_nicks_cb: callback for completion with nicks in notify
+ * list
+ */
+
+int
+irc_completion_notify_nicks_cb (void *data, const char *completion_item,
+ struct t_gui_buffer *buffer,
+ struct t_gui_completion *completion)
+{
+ struct t_irc_notify *ptr_notify;
+
+ IRC_BUFFER_GET_SERVER(buffer);
+
+ /* make C compiler happy */
+ (void) data;
+ (void) completion_item;
+
+ if (ptr_server)
+ {
+ for (ptr_notify = ptr_server->notify_list; ptr_notify;
+ ptr_notify = ptr_notify->next_notify)
+ {
+ weechat_hook_completion_list_add (completion, ptr_notify->nick,
+ 0, WEECHAT_LIST_POS_SORT);
+ }
+ }
+ else
+ {
+ for (ptr_server = irc_servers; ptr_server;
+ ptr_server = ptr_server->next_server)
+ {
+ for (ptr_notify = ptr_server->notify_list; ptr_notify;
+ ptr_notify = ptr_notify->next_notify)
+ {
+ weechat_hook_completion_list_add (completion, ptr_notify->nick,
+ 0, WEECHAT_LIST_POS_SORT);
+ }
+ }
+ }
+
+ return WEECHAT_RC_OK;
+}
+
+/*
* irc_completion_init: init completion for IRC plugin
*/
@@ -614,4 +659,7 @@ irc_completion_init ()
weechat_hook_completion ("irc_ignores_numbers",
N_("numbers for defined ignores"),
&irc_completion_ignores_numbers_cb, NULL);
+ weechat_hook_completion ("irc_notify_nicks",
+ N_("nicks in notify list"),
+ &irc_completion_notify_nicks_cb, NULL);
}
diff --git a/src/plugins/irc/irc-config.c b/src/plugins/irc/irc-config.c
index 00b5f9b12..d1ab51552 100644
--- a/src/plugins/irc/irc-config.c
+++ b/src/plugins/irc/irc-config.c
@@ -32,13 +32,14 @@
#include "../weechat-plugin.h"
#include "irc.h"
#include "irc-config.h"
-#include "irc-ctcp.h"
#include "irc-buffer.h"
+#include "irc-channel.h"
+#include "irc-ctcp.h"
#include "irc-ignore.h"
#include "irc-msgbuffer.h"
#include "irc-nick.h"
+#include "irc-notify.h"
#include "irc-server.h"
-#include "irc-channel.h"
struct t_config_file *irc_config_file = NULL;
@@ -79,6 +80,8 @@ struct t_config_option *irc_config_look_highlight_tags;
struct t_config_option *irc_config_look_item_display_server;
struct t_config_option *irc_config_look_msgbuffer_fallback;
struct t_config_option *irc_config_look_notice_as_pv;
+struct t_config_option *irc_config_look_notify_tags_ison;
+struct t_config_option *irc_config_look_notify_tags_whois;
struct t_config_option *irc_config_look_part_closes_buffer;
struct t_config_option *irc_config_look_raw_messages;
struct t_config_option *irc_config_look_smart_filter;
@@ -109,12 +112,14 @@ struct t_config_option *irc_config_color_reason_quit;
struct t_config_option *irc_config_network_autoreconnect_delay_growing;
struct t_config_option *irc_config_network_autoreconnect_delay_max;
+struct t_config_option *irc_config_network_colors_receive;
+struct t_config_option *irc_config_network_colors_send;
struct t_config_option *irc_config_network_lag_check;
struct t_config_option *irc_config_network_lag_min_show;
struct t_config_option *irc_config_network_lag_disconnect;
struct t_config_option *irc_config_network_lag_refresh_interval;
-struct t_config_option *irc_config_network_colors_receive;
-struct t_config_option *irc_config_network_colors_send;
+struct t_config_option *irc_config_network_notify_check_ison;
+struct t_config_option *irc_config_network_notify_check_whois;
struct t_config_option *irc_config_network_send_unknown_commands;
/* IRC config, server section */
@@ -587,6 +592,38 @@ irc_config_change_network_lag_min_show (void *data,
}
/*
+ * irc_config_change_network_notify_check_ison: called when notify check ison
+ * is changed
+ */
+
+void
+irc_config_change_network_notify_check_ison (void *data,
+ struct t_config_option *option)
+{
+ /* make C compiler happy */
+ (void) data;
+ (void) option;
+
+ irc_notify_hook_timer_ison ();
+}
+
+/*
+ * irc_config_change_network_notify_check_whois: called when notify check whois
+ * is changed
+ */
+
+void
+irc_config_change_network_notify_check_whois (void *data,
+ struct t_config_option *option)
+{
+ /* make C compiler happy */
+ (void) data;
+ (void) option;
+
+ irc_notify_hook_timer_whois ();
+}
+
+/*
* irc_config_change_network_send_unknown_commands: called when "send_unknown_commands"
* is changed
*/
@@ -715,12 +752,39 @@ irc_config_server_change_cb (void *data, struct t_config_option *option)
irc_server_check_away (ptr_server);
else
irc_server_remove_away (ptr_server);
+ break;
+ case IRC_SERVER_OPTION_NOTIFY:
+ irc_notify_new_for_server (ptr_server);
+ break;
}
}
}
}
/*
+ * irc_config_server_default_check_notify: calback called when "notify" option
+ * from "server_default" section is
+ * changed: return 0 if a value is set
+ * This option is not used, only values
+ * in servers are used for notify.
+ */
+
+int
+irc_config_server_default_check_notify (void *data,
+ struct t_config_option *option,
+ const char *value)
+{
+ /* make C compiler happy */
+ (void) data;
+ (void) option;
+
+ if (value && value[0])
+ return 0;
+
+ return 1;
+}
+
+/*
* irc_config_reload: reload IRC configuration file
*/
@@ -1436,6 +1500,21 @@ irc_config_server_new_option (struct t_config_file *config_file,
callback_change, callback_change_data,
NULL, NULL);
break;
+ case IRC_SERVER_OPTION_NOTIFY:
+ new_option = weechat_config_new_option (
+ config_file, section,
+ option_name, "string",
+ N_("notify list for server (you should not change this option "
+ "but use /notify command instead)"),
+ NULL, 0, 0,
+ default_value, value,
+ null_value_allowed,
+ (section == irc_config_section_server_default) ?
+ &irc_config_server_default_check_notify : NULL,
+ NULL,
+ callback_change, callback_change_data,
+ NULL, NULL);
+ break;
case IRC_SERVER_NUM_OPTIONS:
break;
}
@@ -1855,6 +1934,24 @@ irc_config_init ()
N_("display notices as private messages (if auto, use private buffer "
"if found)"),
"auto|never|always", 0, 0, "auto", NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL);
+ irc_config_look_notify_tags_ison = weechat_config_new_option (
+ irc_config_file, ptr_section,
+ "notify_tags_ison", "string",
+ N_("comma separated list of tags used in messages printed by notify "
+ "when a nick joins or quits server (result of command ison), "
+ "for example: \"notify_highglight\", \"notify_message\" or "
+ "\"notify_private\""),
+ NULL, 0, 0, "notify_message", NULL, 0, NULL, NULL,
+ NULL, NULL, NULL, NULL);
+ irc_config_look_notify_tags_whois = weechat_config_new_option (
+ irc_config_file, ptr_section,
+ "notify_tags_whois", "string",
+ N_("comma separated list of tags used in messages printed by notify "
+ "when a nick away status changes (result of command whois), "
+ "for example: \"notify_highglight\", \"notify_message\" or "
+ "\"notify_private\""),
+ NULL, 0, 0, "notify_message", NULL, 0, NULL, NULL,
+ NULL, NULL, NULL, NULL);
irc_config_look_part_closes_buffer = weechat_config_new_option (
irc_config_file, ptr_section,
"part_closes_buffer", "boolean",
@@ -2026,6 +2123,18 @@ irc_config_init ()
N_("maximum autoreconnect delay to server (in seconds, 0 = no maximum)"),
NULL, 0, 3600 * 24, "1800", NULL, 0, NULL, NULL,
NULL, NULL, NULL, NULL);
+ irc_config_network_colors_receive = weechat_config_new_option (
+ irc_config_file, ptr_section,
+ "colors_receive", "boolean",
+ N_("when off, colors codes are ignored in incoming messages"),
+ NULL, 0, 0, "on", NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL);
+ irc_config_network_colors_send = weechat_config_new_option (
+ irc_config_file, ptr_section,
+ "colors_send", "boolean",
+ N_("allow user to send colors with special codes (ctrl-c + a code and "
+ "optional color: b=bold, cxx=color, cxx,yy=color+background, "
+ "u=underline, r=reverse)"),
+ NULL, 0, 0, "on", NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL);
irc_config_network_lag_check = weechat_config_new_option (
irc_config_file, ptr_section,
"lag_check", "integer",
@@ -2051,24 +2160,26 @@ irc_config_init ()
N_("interval between two refreshs of lag item, when lag is increasing "
"(in seconds)"),
NULL, 1, 3600, "1", NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL);
- irc_config_network_colors_receive = weechat_config_new_option (
- irc_config_file, ptr_section,
- "colors_receive", "boolean",
- N_("when off, colors codes are ignored in incoming messages"),
- NULL, 0, 0, "on", NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL);
- irc_config_network_colors_send = weechat_config_new_option (
- irc_config_file, ptr_section,
- "colors_send", "boolean",
- N_("allow user to send colors with special codes (ctrl-c + a code and "
- "optional color: b=bold, cxx=color, cxx,yy=color+background, "
- "u=underline, r=reverse)"),
- NULL, 0, 0, "on", NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL);
irc_config_network_send_unknown_commands = weechat_config_new_option (
irc_config_file, ptr_section,
"send_unknown_commands", "boolean",
N_("send unknown commands to server"),
NULL, 0, 0, "off", NULL, 0, NULL, NULL,
&irc_config_change_network_send_unknown_commands, NULL, NULL, NULL);
+ irc_config_network_notify_check_ison = weechat_config_new_option (
+ irc_config_file, ptr_section,
+ "notify_check_ison", "integer",
+ N_("interval between two checks for notify with IRC command \"ison\" "
+ "(in minutes)"),
+ NULL, 1, 60 * 24 * 7, "1", NULL, 0, NULL, NULL,
+ &irc_config_change_network_notify_check_ison, NULL, NULL, NULL);
+ irc_config_network_notify_check_whois = weechat_config_new_option (
+ irc_config_file, ptr_section,
+ "notify_check_whois", "integer",
+ N_("interval between two checks for notify with IRC command \"whois\" "
+ "(in minutes)"),
+ NULL, 1, 60 * 24 * 7, "5", NULL, 0, NULL, NULL,
+ &irc_config_change_network_notify_check_whois, NULL, NULL, NULL);
/* msgbuffer */
ptr_section = weechat_config_new_section (irc_config_file, "msgbuffer",
@@ -2154,7 +2265,16 @@ irc_config_init ()
int
irc_config_read ()
{
- return weechat_config_read (irc_config_file);
+ int rc;
+
+ rc = weechat_config_read (irc_config_file);
+ if (rc == WEECHAT_CONFIG_READ_OK)
+ {
+ irc_notify_new_for_all_servers ();
+ irc_config_change_network_notify_check_ison (NULL, NULL);
+ irc_config_change_network_notify_check_whois (NULL, NULL);
+ }
+ return rc;
}
/*
diff --git a/src/plugins/irc/irc-config.h b/src/plugins/irc/irc-config.h
index 043a56129..aed25367e 100644
--- a/src/plugins/irc/irc-config.h
+++ b/src/plugins/irc/irc-config.h
@@ -105,6 +105,8 @@ extern struct t_config_option *irc_config_look_highlight_tags;
extern struct t_config_option *irc_config_look_item_display_server;
extern struct t_config_option *irc_config_look_msgbuffer_fallback;
extern struct t_config_option *irc_config_look_notice_as_pv;
+extern struct t_config_option *irc_config_look_notify_tags_ison;
+extern struct t_config_option *irc_config_look_notify_tags_whois;
extern struct t_config_option *irc_config_look_part_closes_buffer;
extern struct t_config_option *irc_config_look_raw_messages;
extern struct t_config_option *irc_config_look_smart_filter;
@@ -131,12 +133,14 @@ extern struct t_config_option *irc_config_color_reason_quit;
extern struct t_config_option *irc_config_network_autoreconnect_delay_growing;
extern struct t_config_option *irc_config_network_autoreconnect_delay_max;
+extern struct t_config_option *irc_config_network_colors_receive;
+extern struct t_config_option *irc_config_network_colors_send;
extern struct t_config_option *irc_config_network_lag_check;
extern struct t_config_option *irc_config_network_lag_min_show;
extern struct t_config_option *irc_config_network_lag_disconnect;
extern struct t_config_option *irc_config_network_lag_refresh_interval;
-extern struct t_config_option *irc_config_network_colors_receive;
-extern struct t_config_option *irc_config_network_colors_send;
+extern struct t_config_option *irc_config_network_notify_check_ison;
+extern struct t_config_option *irc_config_network_notify_check_whois;
extern struct t_config_option *irc_config_network_send_unknown_commands;
extern struct t_config_option *irc_config_server_default[];
diff --git a/src/plugins/irc/irc-ignore.c b/src/plugins/irc/irc-ignore.c
index aaba11509..c67fd68a2 100644
--- a/src/plugins/irc/irc-ignore.c
+++ b/src/plugins/irc/irc-ignore.c
@@ -36,7 +36,7 @@ struct t_irc_ignore *last_irc_ignore = NULL; /* last ignore in list */
/*
- * irc_ignore_valid: check if a ignore pointer exists
+ * irc_ignore_valid: check if an ignore pointer exists
* return 1 if ignore exists
* 0 if ignore is not found
*/
@@ -61,7 +61,7 @@ irc_ignore_valid (struct t_irc_ignore *ignore)
}
/*
- * irc_ignore_search: search a ignore
+ * irc_ignore_search: search an ignore
*/
struct t_irc_ignore *
@@ -91,7 +91,7 @@ irc_ignore_search (const char *mask, const char *server, const char *channel)
}
/*
- * irc_ignore_search_by_number: search a ignore by number (first is #1)
+ * irc_ignore_search_by_number: search an ignore by number (first is #1)
*/
struct t_irc_ignore *
@@ -241,7 +241,7 @@ irc_ignore_check (struct t_irc_server *server, const char *channel,
}
/*
- * irc_ignore_free: remove a ignore
+ * irc_ignore_free: remove an ignore
*/
void
@@ -302,7 +302,7 @@ irc_ignore_free_all ()
}
/*
- * irc_ignore_add_to_infolist: add a ignore in an infolist
+ * irc_ignore_add_to_infolist: add an ignore in an infolist
* return 1 if ok, 0 if error
*/
diff --git a/src/plugins/irc/irc-ignore.h b/src/plugins/irc/irc-ignore.h
index 71b1a6cb5..e3c4b9c8a 100644
--- a/src/plugins/irc/irc-ignore.h
+++ b/src/plugins/irc/irc-ignore.h
@@ -30,8 +30,8 @@ struct t_irc_ignore
int number; /* ignore number */
char *mask; /* nick / host mask */
regex_t *regex_mask; /* regex for mask */
- char *server; /* server name */
- char *channel; /* channel name */
+ char *server; /* server name ("*" == any server) */
+ char *channel; /* channel name ("*" == any channel) */
struct t_irc_ignore *prev_ignore; /* link to previous ignore */
struct t_irc_ignore *next_ignore; /* link to next ignore */
};
diff --git a/src/plugins/irc/irc-info.c b/src/plugins/irc/irc-info.c
index 5d9562f34..8fb518b4b 100644
--- a/src/plugins/irc/irc-info.c
+++ b/src/plugins/irc/irc-info.c
@@ -31,6 +31,7 @@
#include "irc-config.h"
#include "irc-ignore.h"
#include "irc-nick.h"
+#include "irc-notify.h"
#include "irc-protocol.h"
#include "irc-server.h"
@@ -273,6 +274,7 @@ irc_info_get_infolist_cb (void *data, const char *infolist_name,
struct t_irc_channel *ptr_channel;
struct t_irc_nick *ptr_nick;
struct t_irc_ignore *ptr_ignore;
+ struct t_irc_notify *ptr_notify;
char **argv;
int argc;
@@ -495,6 +497,49 @@ irc_info_get_infolist_cb (void *data, const char *infolist_name,
}
}
}
+ else if (weechat_strcasecmp (infolist_name, "irc_notify") == 0)
+ {
+ if (pointer && !irc_notify_valid (NULL, pointer))
+ return NULL;
+
+ ptr_infolist = weechat_infolist_new ();
+ if (ptr_infolist)
+ {
+ if (pointer)
+ {
+ /* build list with only one notify */
+ if (!irc_notify_add_to_infolist (ptr_infolist, pointer))
+ {
+ weechat_infolist_free (ptr_infolist);
+ return NULL;
+ }
+ return ptr_infolist;
+ }
+ else
+ {
+ /* build list with notify list of all servers matchin arguments */
+ for (ptr_server = irc_servers; ptr_server;
+ ptr_server = ptr_server->next_server)
+ {
+ if (!arguments || !arguments[0]
+ || weechat_string_match (ptr_server->name, arguments, 0))
+ {
+ for (ptr_notify = ptr_server->notify_list; ptr_notify;
+ ptr_notify = ptr_notify->next_notify)
+ {
+ if (!irc_notify_add_to_infolist (ptr_infolist,
+ ptr_notify))
+ {
+ weechat_infolist_free (ptr_infolist);
+ return NULL;
+ }
+ }
+ }
+ }
+ return ptr_infolist;
+ }
+ }
+ }
return NULL;
}
@@ -575,4 +620,9 @@ irc_info_init ()
N_("ignore pointer (optional)"),
NULL,
&irc_info_get_infolist_cb, NULL);
+ weechat_hook_infolist ("irc_notify",
+ N_("list of notify"),
+ N_("notify pointer (optional)"),
+ N_("server name (can start or end with \"*\" as wildcard) (optional)"),
+ &irc_info_get_infolist_cb, NULL);
}
diff --git a/src/plugins/irc/irc-notify.c b/src/plugins/irc/irc-notify.c
new file mode 100644
index 000000000..97947bfed
--- /dev/null
+++ b/src/plugins/irc/irc-notify.c
@@ -0,0 +1,927 @@
+/*
+ * Copyright (C) 2010 Sebastien Helleu <flashcode@flashtux.org>
+ *
+ * This file is part of WeeChat, the extensible chat client.
+ *
+ * WeeChat is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * WeeChat is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with WeeChat. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/*
+ * irc-notify.c: notify lists for IRC plugin
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "../weechat-plugin.h"
+#include "irc.h"
+#include "irc-notify.h"
+#include "irc-color.h"
+#include "irc-config.h"
+#include "irc-redirect.h"
+#include "irc-server.h"
+
+
+/* timers to run "ison" and "whois" commands */
+struct t_hook *irc_notify_timer_ison = NULL; /* timer for "ison" */
+struct t_hook *irc_notify_timer_whois = NULL; /* timer for "whois" */
+
+/* hsignal for redirected commands */
+struct t_hook *irc_notify_hsignal = NULL;
+
+
+/*
+ * irc_notify_valid: check if a notify pointer exists for a server
+ * if server is NULL, search in all servers
+ * return 1 if notify exists
+ * 0 if notify is not found
+ */
+
+int
+irc_notify_valid (struct t_irc_server *server, struct t_irc_notify *notify)
+{
+ struct t_irc_server *ptr_server;
+ struct t_irc_notify *ptr_notify;
+
+ if (!notify)
+ return 0;
+
+ if (server)
+ {
+ for (ptr_notify = server->notify_list; ptr_notify;
+ ptr_notify = ptr_notify->next_notify)
+ {
+ if (ptr_notify == notify)
+ return 1;
+ }
+ }
+ else
+ {
+ for (ptr_server = irc_servers; ptr_server;
+ ptr_server = ptr_server->next_server)
+ {
+ for (ptr_notify = ptr_server->notify_list; ptr_notify;
+ ptr_notify = ptr_notify->next_notify)
+ {
+ if (ptr_notify == notify)
+ return 1;
+ }
+ }
+ }
+
+ /* notify not found */
+ return 0;
+}
+
+/*
+ * irc_notify_search: search a notify
+ */
+
+struct t_irc_notify *
+irc_notify_search (struct t_irc_server *server, const char *nick)
+{
+ struct t_irc_notify *ptr_notify;
+
+ if (!server || !nick)
+ return NULL;
+
+ for (ptr_notify = server->notify_list; ptr_notify;
+ ptr_notify = ptr_notify->next_notify)
+ {
+ if (strcmp (ptr_notify->nick, nick) == 0)
+ return ptr_notify;
+ }
+
+ /* notify not found */
+ return NULL;
+}
+
+/*
+ * irc_notify_set_server_option: set server option "notify" with notify
+ * list on server
+ */
+
+void
+irc_notify_set_server_option (struct t_irc_server *server)
+{
+ char *str;
+ struct t_irc_notify *ptr_notify;
+ int total_length, length;
+
+ if (!server)
+ return;
+
+ if (server->notify_list)
+ {
+ str = NULL;
+ total_length = 0;
+ for (ptr_notify = server->notify_list; ptr_notify;
+ ptr_notify = ptr_notify->next_notify)
+ {
+ length = strlen (ptr_notify->nick) + 32;
+ if (!str)
+ {
+ total_length += length + 1;
+ str = malloc (total_length);
+ if (str)
+ str[0] = '\0';
+ }
+ else
+ {
+ total_length += length;
+ str = realloc (str, total_length);
+ }
+ if (str)
+ {
+ if (str[0])
+ strcat (str, ",");
+ strcat (str, ptr_notify->nick);
+ if (ptr_notify->check_away)
+ strcat (str, " away");
+ }
+ }
+ if (str)
+ {
+ weechat_config_option_set (server->options[IRC_SERVER_OPTION_NOTIFY],
+ str, 0);
+ free (str);
+ }
+ }
+ else
+ {
+ weechat_config_option_set (server->options[IRC_SERVER_OPTION_NOTIFY],
+ "", 0);
+ }
+}
+
+/*
+ * irc_notify_new: add new notify
+ */
+
+struct t_irc_notify *
+irc_notify_new (struct t_irc_server *server, const char *nick, int check_away)
+{
+ struct t_irc_notify *new_notify;
+
+ if (!server || !nick || !nick[0])
+ return NULL;
+
+ new_notify = malloc (sizeof (*new_notify));
+ if (new_notify)
+ {
+ new_notify->server = server;
+ new_notify->nick = strdup (nick);
+ new_notify->check_away = check_away;
+ new_notify->is_on_server = 0;
+ new_notify->away_message = NULL;
+ new_notify->ison_received = 0;
+
+ /* add notify to notify list on server */
+ new_notify->prev_notify = server->last_notify;
+ if (server->notify_list)
+ server->last_notify->next_notify = new_notify;
+ else
+ server->notify_list = new_notify;
+ server->last_notify = new_notify;
+ new_notify->next_notify = NULL;
+ }
+
+ return new_notify;
+}
+
+/*
+ * irc_notify_new_for_server: create notify list for server with option
+ * "irc.server.xxx.notify"
+ */
+
+void
+irc_notify_new_for_server (struct t_irc_server *server)
+{
+ const char *notify;
+ char **items, *pos_params, **params;
+ int i, j, num_items, num_params, check_away;
+
+ irc_notify_free_all (server);
+
+ notify = IRC_SERVER_OPTION_STRING(server, IRC_SERVER_OPTION_NOTIFY);
+
+ if (!notify || !notify[0])
+ return;
+
+ items = weechat_string_split (notify, ",", 0, 0, &num_items);
+
+ if (items)
+ {
+ for (i = 0; i < num_items; i++)
+ {
+ check_away = 0;
+ pos_params = strchr (items[i], ' ');
+ if (pos_params)
+ {
+ pos_params[0] = '\0';
+ pos_params++;
+ while (pos_params[0] == ' ')
+ {
+ pos_params++;
+ }
+ params = weechat_string_split (pos_params, "/", 0, 0,
+ &num_params);
+ if (params)
+ {
+ for (j = 0; j < num_params; j++)
+ {
+ if (weechat_strcasecmp (params[j], "away") == 0)
+ check_away = 1;
+ }
+ weechat_string_free_split (params);
+ }
+ }
+ irc_notify_new (server, items[i], check_away);
+ }
+ weechat_string_free_split (items);
+ }
+}
+
+/*
+ * irc_notify_new_for_all_servers: create notify list for all servers with
+ * option "irc.server.xxx.notify"
+ */
+
+void
+irc_notify_new_for_all_servers ()
+{
+ struct t_irc_server *ptr_server;
+
+ for (ptr_server = irc_servers; ptr_server;
+ ptr_server = ptr_server->next_server)
+ {
+ irc_notify_new_for_server (ptr_server);
+ }
+}
+
+/*
+ * irc_notify_free: remove a notify on a server
+ */
+
+void
+irc_notify_free (struct t_irc_server *server, struct t_irc_notify *notify)
+{
+ weechat_hook_signal_send ("irc_notify_removing",
+ WEECHAT_HOOK_SIGNAL_POINTER, notify);
+
+ /* free data */
+ if (notify->nick)
+ free (notify->nick);
+ if (notify->away_message)
+ free (notify->away_message);
+
+ /* remove notify from list */
+ if (notify->prev_notify)
+ (notify->prev_notify)->next_notify = notify->next_notify;
+ if (notify->next_notify)
+ (notify->next_notify)->prev_notify = notify->prev_notify;
+ if (server->notify_list == notify)
+ server->notify_list = notify->next_notify;
+ if (server->last_notify == notify)
+ server->last_notify = notify->prev_notify;
+
+ free (notify);
+
+ weechat_hook_signal_send ("irc_notify_removed",
+ WEECHAT_HOOK_SIGNAL_STRING, NULL);
+}
+
+/*
+ * irc_notify_free_all: remove all notify on a server
+ */
+
+void
+irc_notify_free_all (struct t_irc_server *server)
+{
+ while (server->notify_list)
+ {
+ irc_notify_free (server, server->notify_list);
+ }
+}
+
+/*
+ * irc_notify_display: display a notify
+ */
+
+void
+irc_notify_display (struct t_gui_buffer *buffer, struct t_irc_notify *notify)
+{
+ if (!notify->is_on_server && !notify->away_message)
+ {
+ weechat_printf (buffer,
+ " %s%s%s @ %s%s%s: %s%s",
+ IRC_COLOR_CHAT_NICK,
+ notify->nick,
+ IRC_COLOR_CHAT,
+ IRC_COLOR_CHAT_SERVER,
+ notify->server->name,
+ IRC_COLOR_CHAT,
+ IRC_COLOR_MESSAGE_QUIT,
+ _("offline"));
+ }
+ else
+ {
+ weechat_printf (buffer,
+ " %s%s%s @ %s%s%s: %s%s %s%s%s%s%s%s",
+ IRC_COLOR_CHAT_NICK,
+ notify->nick,
+ IRC_COLOR_CHAT,
+ IRC_COLOR_CHAT_SERVER,
+ notify->server->name,
+ IRC_COLOR_CHAT,
+ IRC_COLOR_MESSAGE_JOIN,
+ _("online"),
+ IRC_COLOR_CHAT,
+ (notify->away_message) ? " (" : "",
+ (notify->away_message) ? _("away") : "",
+ (notify->away_message) ? ": \"" : "",
+ (notify->away_message) ? notify->away_message : "",
+ (notify->away_message) ? "\")" : "");
+ }
+}
+
+/*
+ * irc_notify_display_list: display notify list for a server
+ * (or all servers if server is NULL)
+ */
+
+void
+irc_notify_display_list (struct t_irc_server *server)
+{
+ struct t_irc_notify *ptr_notify;
+ struct t_irc_server *ptr_server;
+ int count;
+
+ if (server)
+ {
+ if (server->notify_list)
+ {
+ weechat_printf (server->buffer, "");
+ weechat_printf (server->buffer,
+ _("Notify list for %s%s%s:"),
+ IRC_COLOR_CHAT_SERVER,
+ server->name,
+ IRC_COLOR_CHAT);
+ for (ptr_notify = server->notify_list; ptr_notify;
+ ptr_notify = ptr_notify->next_notify)
+ {
+ irc_notify_display (server->buffer, ptr_notify);
+ }
+ }
+ else
+ {
+ weechat_printf (server->buffer,
+ _("Notify list is empty on this server"));
+ }
+ }
+ else
+ {
+ count = 0;
+ for (ptr_server = irc_servers; ptr_server;
+ ptr_server = ptr_server->next_server)
+ {
+ for (ptr_notify = ptr_server->notify_list; ptr_notify;
+ ptr_notify = ptr_notify->next_notify)
+ {
+ if (count == 0)
+ {
+ weechat_printf (NULL, "");
+ weechat_printf (NULL, _("Notify list for all servers:"));
+ }
+ irc_notify_display (NULL, ptr_notify);
+ count++;
+ }
+ }
+ if (count == 0)
+ {
+ weechat_printf (NULL,
+ _("Notify list is empty on all servers"));
+ }
+ }
+}
+
+/*
+ * irc_notify_get_tags: get tags for message displayed
+ * (concatenation of "irc_notify" and tags from option)
+ */
+
+const char *
+irc_notify_get_tags (struct t_config_option *option)
+{
+ static char string[1024];
+ const char *tags;
+
+ tags = weechat_config_string (option);
+
+ snprintf (string, sizeof (string), "irc_notify%s%s",
+ (tags && tags[0]) ? "," : "",
+ (tags && tags[0]) ? tags : "");
+
+ return string;
+}
+
+/*
+ * irc_notify_set_is_on_server: set flag "is_on_server" for a notify
+ * and display message if user was not on server
+ */
+
+void
+irc_notify_set_is_on_server (struct t_irc_notify *notify,
+ int is_on_server)
+{
+ if (!notify)
+ return;
+
+ /* same status, then do nothing */
+ if (notify->is_on_server == is_on_server)
+ return;
+
+ notify->is_on_server = is_on_server;
+
+ weechat_printf_tags (notify->server->buffer,
+ irc_notify_get_tags (irc_config_look_notify_tags_ison),
+ (notify->is_on_server) ?
+ _("%snotify: %s%s%s has joined %s%s") :
+ _("%snotify: %s%s%s has quit %s%s"),
+ weechat_prefix ("network"),
+ IRC_COLOR_CHAT_NICK,
+ notify->nick,
+ (notify->is_on_server) ?
+ IRC_COLOR_MESSAGE_JOIN : IRC_COLOR_MESSAGE_QUIT,
+ IRC_COLOR_CHAT_SERVER,
+ notify->server->name);
+}
+
+/*
+ * irc_notify_set_away_message: set away message for a notify
+ * and display message if away status has changed
+ */
+
+void
+irc_notify_set_away_message (struct t_irc_notify *notify,
+ const char *away_message)
+{
+ if (!notify)
+ return;
+
+ /* same away message, then do nothing */
+ if ((!notify->away_message && !away_message)
+ || (notify->away_message && away_message
+ && (strcmp (notify->away_message, away_message) == 0)))
+ return;
+
+ if (!notify->away_message && away_message)
+ {
+ weechat_printf_tags (notify->server->buffer,
+ irc_notify_get_tags (irc_config_look_notify_tags_whois),
+ _("%snotify: %s%s%s is now away: \"%s\""),
+ weechat_prefix ("network"),
+ IRC_COLOR_CHAT_NICK,
+ notify->nick,
+ IRC_COLOR_CHAT,
+ away_message);
+ }
+ else if (notify->away_message && !away_message)
+ {
+ weechat_printf_tags (notify->server->buffer,
+ irc_notify_get_tags (irc_config_look_notify_tags_whois),
+ _("%snotify: %s%s%s is back"),
+ weechat_prefix ("network"),
+ IRC_COLOR_CHAT_NICK,
+ notify->nick,
+ IRC_COLOR_CHAT);
+ }
+ else if (notify->away_message && away_message)
+ {
+ weechat_printf_tags (notify->server->buffer,
+ irc_notify_get_tags (irc_config_look_notify_tags_whois),
+ _("%snotify: %s%s%s is still away: \"%s\""),
+ weechat_prefix ("network"),
+ IRC_COLOR_CHAT_NICK,
+ notify->nick,
+ IRC_COLOR_CHAT,
+ away_message);
+ }
+
+ if (notify->away_message)
+ free (notify->away_message);
+ notify->away_message = (away_message) ? strdup (away_message) : NULL;
+}
+
+/*
+ * irc_notify_hsignal_cb: callback for hsignal on redirected commands
+ * "ison" and "whois"
+ */
+
+int
+irc_notify_hsignal_cb (void *data, const char *signal,
+ struct t_hashtable *hashtable)
+{
+ const char *error, *server, *pattern, *command, *output;
+ char **messages, **nicks_sent, **nicks_recv, *irc_cmd, *arguments;
+ char *ptr_args, *pos;
+ int i, j, num_messages, num_nicks_sent, num_nicks_recv, nick_was_sent;
+ int away_message_updated, no_such_nick;
+ struct t_irc_server *ptr_server;
+ struct t_irc_notify *ptr_notify;
+
+ /* make C compiler happy */
+ (void) data;
+ (void) signal;
+
+ error = weechat_hashtable_get (hashtable, "error");
+ server = weechat_hashtable_get (hashtable, "server");
+ pattern = weechat_hashtable_get (hashtable, "pattern");
+ command = weechat_hashtable_get (hashtable, "command");
+ output = weechat_hashtable_get (hashtable, "output");
+
+ /* if there is an error on redirection, just ignore result */
+ if (error && error[0])
+ return WEECHAT_RC_OK;
+
+ /* missing things in redirection */
+ if (!server || !pattern || !command || !output)
+ return WEECHAT_RC_OK;
+
+ /* search server */
+ ptr_server = irc_server_search (server);
+ if (!ptr_server)
+ return WEECHAT_RC_OK;
+
+ /* search for start of arguments in command sent to server */
+ ptr_args = strchr (command, ' ');
+ if (!ptr_args)
+ return WEECHAT_RC_OK;
+ ptr_args++;
+ while ((ptr_args[0] == ' ') || (ptr_args[0] == ':'))
+ {
+ ptr_args++;
+ }
+ if (!ptr_args[0])
+ return WEECHAT_RC_OK;
+
+ /* read output of command */
+ if (strcmp (pattern, "ison") == 0)
+ {
+ /* redirection of command "ison" */
+ messages = weechat_string_split (output, "\n", 0, 0, &num_messages);
+ if (messages)
+ {
+ nicks_sent = weechat_string_split (ptr_args, " ", 0, 0,
+ &num_nicks_sent);
+ if (!nicks_sent)
+ return WEECHAT_RC_OK;
+ for (ptr_notify = ptr_server->notify_list;
+ ptr_notify;
+ ptr_notify = ptr_notify->next_notify)
+ {
+ ptr_notify->ison_received = 0;
+ }
+ for (i = 0; i < num_messages; i++)
+ {
+ irc_server_parse_message (messages[i], NULL, NULL, NULL, NULL,
+ &arguments);
+ if (arguments)
+ {
+ pos = strchr (arguments, ' ');
+ if (pos)
+ {
+ pos++;
+ while ((pos[0] == ' ') || (pos[0] == ':'))
+ {
+ pos++;
+ }
+ if (pos[0])
+ {
+ nicks_recv = weechat_string_split (pos, " ", 0, 0,
+ &num_nicks_recv);
+ if (nicks_recv)
+ {
+ for (j = 0; j < num_nicks_recv; j++)
+ {
+ for (ptr_notify = ptr_server->notify_list;
+ ptr_notify;
+ ptr_notify = ptr_notify->next_notify)
+ {
+ if (strcmp (ptr_notify->nick, nicks_recv[j]) == 0)
+ {
+ irc_notify_set_is_on_server (ptr_notify, 1);
+ ptr_notify->ison_received = 1;
+ }
+ }
+ }
+ weechat_string_free_split (nicks_recv);
+ }
+ }
+ }
+ free (arguments);
+ }
+ }
+ for (ptr_notify = ptr_server->notify_list;
+ ptr_notify;
+ ptr_notify = ptr_notify->next_notify)
+ {
+ if (!ptr_notify->ison_received)
+ {
+ nick_was_sent = 0;
+ for (j = 0; j < num_nicks_sent; j++)
+ {
+ if (strcmp (nicks_sent[j], ptr_notify->nick) == 0)
+ {
+ nick_was_sent = 1;
+ break;
+ }
+ }
+ if (nick_was_sent)
+ {
+ irc_notify_set_is_on_server (ptr_notify, 0);
+ }
+ }
+
+ }
+ weechat_string_free_split (messages);
+ }
+ }
+ else if (strcmp (pattern, "whois") == 0)
+ {
+ /* redirection of command "whois" */
+ ptr_notify = irc_notify_search (ptr_server, ptr_args);
+ if (ptr_notify)
+ {
+ away_message_updated = 0;
+ no_such_nick = 0;
+ messages = weechat_string_split (output, "\n", 0, 0, &num_messages);
+ if (messages)
+ {
+ for (i = 0; i < num_messages; i++)
+ {
+ irc_server_parse_message (messages[0], NULL, NULL,
+ &irc_cmd, NULL, &arguments);
+ if (irc_cmd && arguments)
+ {
+ if (strcmp (irc_cmd, "401") == 0)
+ {
+ /* no such nick/channel */
+ no_such_nick = 1;
+ }
+ else if (strcmp (irc_cmd, "301") == 0)
+ {
+ /* away message */
+ pos = strchr (arguments, ':');
+ if (pos)
+ {
+ pos++;
+ /* nick is away */
+ irc_notify_set_away_message (ptr_notify, pos);
+ away_message_updated = 1;
+ }
+ }
+ }
+ if (irc_cmd)
+ free (irc_cmd);
+ if (arguments)
+ free (arguments);
+ }
+ }
+ if (!away_message_updated && !no_such_nick)
+ {
+ /* nick is back */
+ irc_notify_set_away_message (ptr_notify, NULL);
+ }
+ }
+ }
+
+ return WEECHAT_RC_OK;
+}
+
+/*
+ * irc_notify_timer_ison_cb: timer called to send "ison" command to servers
+ */
+
+int
+irc_notify_timer_ison_cb (void *data, int remaining_calls)
+{
+ char ison_list[1024];
+ int total_length, length;
+ struct t_irc_server *ptr_server;
+ struct t_irc_notify *ptr_notify, *ptr_next_notify;
+
+ /* make C compiler happy */
+ (void) data;
+ (void) remaining_calls;
+
+ for (ptr_server = irc_servers; ptr_server;
+ ptr_server = ptr_server->next_server)
+ {
+ if (ptr_server->is_connected && ptr_server->notify_list)
+ {
+ ison_list[0] = '\0';
+ total_length = 0;
+
+ ptr_notify = ptr_server->notify_list;
+ while (ptr_notify)
+ {
+ ptr_next_notify = ptr_notify->next_notify;
+
+ length = strlen (ptr_notify->nick);
+ total_length += length + 1;
+ if (ison_list[0])
+ strcat (ison_list, " ");
+ strcat (ison_list, ptr_notify->nick);
+
+ ptr_notify = ptr_next_notify;
+ }
+ if (ison_list[0])
+ {
+ irc_redirect_new (ptr_server, "ison", "notify", 1,
+ NULL, 0, NULL);
+ irc_server_sendf (ptr_server, IRC_SERVER_SEND_OUTQ_PRIO_LOW,
+ NULL, "ISON :%s", ison_list);
+ }
+ }
+ }
+
+ return WEECHAT_RC_OK;
+}
+
+/*
+ * irc_notify_timer_whois_cb: timer called to send "whois" command to servers
+ */
+
+int
+irc_notify_timer_whois_cb (void *data, int remaining_calls)
+{
+ struct t_irc_server *ptr_server;
+ struct t_irc_notify *ptr_notify, *ptr_next_notify;
+
+ /* make C compiler happy */
+ (void) data;
+ (void) remaining_calls;
+
+ for (ptr_server = irc_servers; ptr_server;
+ ptr_server = ptr_server->next_server)
+ {
+ if (ptr_server->is_connected && ptr_server->notify_list)
+ {
+ ptr_notify = ptr_server->notify_list;
+ while (ptr_notify)
+ {
+ ptr_next_notify = ptr_notify->next_notify;
+
+ if (ptr_notify->check_away)
+ {
+ /*
+ * redirect whois, and get only 2 messages:
+ * 301: away message
+ * 401: no such nick/channel
+ */
+ irc_redirect_new (ptr_server, "whois", "notify", 1,
+ ptr_notify->nick, 0, "301,401");
+ irc_server_sendf (ptr_server,
+ IRC_SERVER_SEND_OUTQ_PRIO_LOW, NULL,
+ "WHOIS :%s", ptr_notify->nick);
+ }
+
+ ptr_notify = ptr_next_notify;
+ }
+ }
+ }
+
+ return WEECHAT_RC_OK;
+}
+
+/*
+ * irc_notify_add_to_infolist: add a notify in an infolist
+ * return 1 if ok, 0 if error
+ */
+
+int
+irc_notify_add_to_infolist (struct t_infolist *infolist,
+ struct t_irc_notify *notify)
+{
+ struct t_infolist_item *ptr_item;
+
+ if (!infolist || !notify)
+ return 0;
+
+ ptr_item = weechat_infolist_new_item (infolist);
+ if (!ptr_item)
+ return 0;
+
+ if (!weechat_infolist_new_var_pointer (ptr_item, "server", notify->server))
+ return 0;
+ if (!weechat_infolist_new_var_string (ptr_item, "server_name", notify->server->name))
+ return 0;
+ if (!weechat_infolist_new_var_string (ptr_item, "nick", notify->nick))
+ return 0;
+ if (!weechat_infolist_new_var_integer (ptr_item, "check_away", notify->check_away))
+ return 0;
+ if (!weechat_infolist_new_var_integer (ptr_item, "is_on_server", notify->is_on_server))
+ return 0;
+ if (!weechat_infolist_new_var_string (ptr_item, "away_message", notify->away_message))
+ return 0;
+
+ return 1;
+}
+
+/*
+ * irc_notify_print_log: print notify infos in log (usually for crash dump)
+ */
+
+void
+irc_notify_print_log (struct t_irc_server *server)
+{
+ struct t_irc_notify *ptr_notify;
+
+ for (ptr_notify = server->notify_list; ptr_notify;
+ ptr_notify = ptr_notify->next_notify)
+ {
+ weechat_log_printf ("");
+ weechat_log_printf (" => notify (addr:0x%lx):", ptr_notify);
+ weechat_log_printf (" server. . . . . . . : 0x%lx", ptr_notify->server);
+ weechat_log_printf (" nick. . . . . . . . : '%s'", ptr_notify->nick);
+ weechat_log_printf (" check_away. . . . . : %d", ptr_notify->check_away);
+ weechat_log_printf (" is_on_server. . . . : %d", ptr_notify->is_on_server);
+ weechat_log_printf (" away_message. . . . : '%s'", ptr_notify->away_message);
+ weechat_log_printf (" ison_received . . . : %d", ptr_notify->ison_received);
+ weechat_log_printf (" prev_notify . . . . : 0x%lx", ptr_notify->prev_notify);
+ weechat_log_printf (" next_notify . . . . : 0x%lx", ptr_notify->next_notify);
+ }
+}
+
+/*
+ * irc_notify_hook_timer_ison: hook timer to send "ison" command
+ */
+
+void
+irc_notify_hook_timer_ison ()
+{
+ if (irc_notify_timer_ison)
+ weechat_unhook (irc_notify_timer_ison);
+
+ irc_notify_timer_ison = weechat_hook_timer (
+ 60 * 1000 * weechat_config_integer (irc_config_network_notify_check_ison),
+ 0, 0, &irc_notify_timer_ison_cb, NULL);
+}
+
+/*
+ * irc_notify_hook_timer_whois: hook timer to send "whois" command
+ */
+
+void
+irc_notify_hook_timer_whois ()
+{
+ if (irc_notify_timer_whois)
+ weechat_unhook (irc_notify_timer_whois);
+
+ irc_notify_timer_whois = weechat_hook_timer (
+ 60 * 1000 * weechat_config_integer (irc_config_network_notify_check_whois),
+ 0, 0, &irc_notify_timer_whois_cb, NULL);
+}
+
+/*
+ * irc_notify_init: hook timers and hsignals
+ */
+
+void
+irc_notify_init ()
+{
+ irc_notify_hook_timer_ison ();
+ irc_notify_hook_timer_whois ();
+
+ irc_notify_hsignal = weechat_hook_hsignal ("irc_redirection_notify_*",
+ &irc_notify_hsignal_cb,
+ NULL);
+}
+
+/*
+ * irc_notify_end: remove timers and hsignals
+ */
+
+void
+irc_notify_end ()
+{
+ if (irc_notify_timer_ison)
+ weechat_unhook (irc_notify_timer_ison);
+ if (irc_notify_timer_whois)
+ weechat_unhook (irc_notify_timer_whois);
+ if (irc_notify_hsignal)
+ weechat_unhook (irc_notify_hsignal);
+}
diff --git a/src/plugins/irc/irc-notify.h b/src/plugins/irc/irc-notify.h
new file mode 100644
index 000000000..b069d258d
--- /dev/null
+++ b/src/plugins/irc/irc-notify.h
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2010 Sebastien Helleu <flashcode@flashtux.org>
+ *
+ * This file is part of WeeChat, the extensible chat client.
+ *
+ * WeeChat is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * WeeChat is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with WeeChat. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __WEECHAT_IRC_NOTIFY_H
+#define __WEECHAT_IRC_NOTIFY_H 1
+
+struct t_irc_server;
+
+struct t_irc_notify
+{
+ struct t_irc_server *server; /* server */
+ char *nick; /* nick */
+ int check_away; /* check away status (with whois) */
+ /* current state of nick */
+ int is_on_server; /* 1 if nick is currently on server */
+ /* (using answer of ison command) */
+ char *away_message; /* current away message, NULL if */
+ /* nick is not away (using answer of */
+ /* whois command) */
+ /* internal stuff */
+ int ison_received; /* used when receiving ison answer */
+ struct t_irc_notify *prev_notify; /* link to previous notify */
+ struct t_irc_notify *next_notify; /* link to next notify */
+};
+
+extern int irc_notify_valid (struct t_irc_server *server,
+ struct t_irc_notify *notify);
+extern struct t_irc_notify *irc_notify_search (struct t_irc_server *server,
+ const char *nick);
+extern void irc_notify_set_server_option (struct t_irc_server *server);
+extern struct t_irc_notify *irc_notify_new (struct t_irc_server *server,
+ const char *nick,
+ int check_away);
+extern void irc_notify_new_for_server (struct t_irc_server *server);
+extern void irc_notify_new_for_all_servers ();
+extern void irc_notify_free (struct t_irc_server *server,
+ struct t_irc_notify *notify);
+extern void irc_notify_free_all (struct t_irc_server *server);
+extern void irc_notify_display_list (struct t_irc_server *server);
+extern int irc_notify_timer_ison_cb (void *data, int remaining_calls);
+extern int irc_notify_timer_whois_cb (void *data, int remaining_calls);
+extern int irc_notify_add_to_infolist (struct t_infolist *infolist,
+ struct t_irc_notify *notify);
+extern void irc_notify_print_log (struct t_irc_server *server);
+extern void irc_notify_hook_timer_ison ();
+extern void irc_notify_hook_timer_whois ();
+extern void irc_notify_init ();
+extern void irc_notify_end ();
+
+#endif /* __WEECHAT_IRC_NOTIFY_H */
diff --git a/src/plugins/irc/irc-redirect.h b/src/plugins/irc/irc-redirect.h
index 44f802068..3186c9186 100644
--- a/src/plugins/irc/irc-redirect.h
+++ b/src/plugins/irc/irc-redirect.h
@@ -91,6 +91,13 @@ extern struct t_irc_redirect *irc_redirect_new_with_commands (struct t_irc_serve
const char *cmd_stop,
const char *cmd_extra,
const char *cmd_filter);
+extern struct t_irc_redirect *irc_redirect_new (struct t_irc_server *server,
+ const char *pattern,
+ const char *signal,
+ int count,
+ const char *string,
+ int timeout,
+ const char *cmd_filter);
extern struct t_irc_redirect *irc_redirect_search_available (struct t_irc_server *server);
extern void irc_redirect_init_command (struct t_irc_redirect *redirect,
const char *command);
diff --git a/src/plugins/irc/irc-server.c b/src/plugins/irc/irc-server.c
index de005d823..09fd5de2d 100644
--- a/src/plugins/irc/irc-server.c
+++ b/src/plugins/irc/irc-server.c
@@ -50,6 +50,7 @@
#include "irc-config.h"
#include "irc-input.h"
#include "irc-nick.h"
+#include "irc-notify.h"
#include "irc-protocol.h"
#include "irc-raw.h"
#include "irc-redirect.h"
@@ -73,6 +74,7 @@ char *irc_server_option_string[IRC_SERVER_NUM_OPTIONS] =
"anti_flood_prio_high", "anti_flood_prio_low",
"away_check", "away_check_max_nicks",
"default_msg_part", "default_msg_quit",
+ "notify",
};
char *irc_server_option_default[IRC_SERVER_NUM_OPTIONS] =
@@ -86,6 +88,7 @@ char *irc_server_option_default[IRC_SERVER_NUM_OPTIONS] =
"2", "2",
"0", "25",
"WeeChat %v", "WeeChat %v",
+ "",
};
char *irc_server_prefix_modes_default = "qaohvu";
@@ -650,6 +653,8 @@ irc_server_alloc (const char *name)
}
new_server->redirects = NULL;
new_server->last_redirect = NULL;
+ new_server->notify_list = NULL;
+ new_server->last_notify = NULL;
new_server->buffer = NULL;
new_server->buffer_as_string = NULL;
new_server->channels = NULL;
@@ -1088,6 +1093,7 @@ irc_server_free_data (struct t_irc_server *server)
{
irc_server_outqueue_free_all (server, i);
}
+ irc_notify_free_all (server);
irc_redirect_free_all (server);
if (server->channels)
irc_channel_free_all (server);
@@ -4480,6 +4486,8 @@ irc_server_print_log ()
}
weechat_log_printf (" redirects. . . . . . : 0x%lx", ptr_server->redirects);
weechat_log_printf (" last_redirect. . . . : 0x%lx", ptr_server->last_redirect);
+ weechat_log_printf (" notify_list. . . . . : 0x%lx", ptr_server->notify_list);
+ weechat_log_printf (" last_notify. . . . . : 0x%lx", ptr_server->last_notify);
weechat_log_printf (" buffer . . . . . . . : 0x%lx", ptr_server->buffer);
weechat_log_printf (" buffer_as_string . . : 0x%lx", ptr_server->buffer_as_string);
weechat_log_printf (" channels . . . . . . : 0x%lx", ptr_server->channels);
@@ -4489,6 +4497,8 @@ irc_server_print_log ()
irc_redirect_print_log (ptr_server);
+ irc_notify_print_log (ptr_server);
+
for (ptr_channel = ptr_server->channels; ptr_channel;
ptr_channel = ptr_channel->next_channel)
{
diff --git a/src/plugins/irc/irc-server.h b/src/plugins/irc/irc-server.h
index b8e728d3c..23140ed85 100644
--- a/src/plugins/irc/irc-server.h
+++ b/src/plugins/irc/irc-server.h
@@ -64,6 +64,7 @@ enum t_irc_server_option
IRC_SERVER_OPTION_AWAY_CHECK_MAX_NICKS, /* max nicks for away check */
IRC_SERVER_OPTION_DEFAULT_MSG_PART, /* default part message */
IRC_SERVER_OPTION_DEFAULT_MSG_QUIT, /* default quit message */
+ IRC_SERVER_OPTION_NOTIFY, /* notify list */
/* number of server options */
IRC_SERVER_NUM_OPTIONS,
};
@@ -173,6 +174,8 @@ struct t_irc_server
struct t_irc_outqueue *last_outqueue[2]; /* last outgoing message */
struct t_irc_redirect *redirects; /* command redirections */
struct t_irc_redirect *last_redirect; /* last command redirection */
+ struct t_irc_notify *notify_list; /* list of notify */
+ struct t_irc_notify *last_notify; /* last notify */
struct t_gui_buffer *buffer; /* GUI buffer allocated for server */
char *buffer_as_string; /* used to return buffer info */
struct t_irc_channel *channels; /* opened channels on server */
@@ -234,6 +237,9 @@ extern void irc_server_send_signal (struct t_irc_server *server,
const char *signal, const char *command,
const char *full_message,
const char *tags);
+extern void irc_server_parse_message (const char *message, char **nick,
+ char **host, char **command,
+ char **channel, char **arguments);
extern struct t_hashtable *irc_server_parse_message_to_hashtable (const char *message);
extern void irc_server_set_send_default_tags (const char *tags);
extern void irc_server_sendf (struct t_irc_server *server, int flags,
diff --git a/src/plugins/irc/irc-upgrade.c b/src/plugins/irc/irc-upgrade.c
index d4c5d0522..a167960b6 100644
--- a/src/plugins/irc/irc-upgrade.c
+++ b/src/plugins/irc/irc-upgrade.c
@@ -29,13 +29,14 @@
#include "irc.h"
#include "irc-upgrade.h"
#include "irc-buffer.h"
+#include "irc-channel.h"
#include "irc-config.h"
#include "irc-input.h"
-#include "irc-server.h"
-#include "irc-channel.h"
#include "irc-nick.h"
+#include "irc-notify.h"
#include "irc-raw.h"
#include "irc-redirect.h"
+#include "irc-server.h"
struct t_irc_server *irc_upgrade_current_server = NULL;
@@ -55,6 +56,7 @@ irc_upgrade_save_all_data (struct t_upgrade_file *upgrade_file)
struct t_irc_nick *ptr_nick;
struct t_irc_redirect *ptr_redirect;
struct t_irc_redirect_pattern *ptr_redirect_pattern;
+ struct t_irc_notify *ptr_notify;
struct t_irc_raw_message *ptr_raw_message;
int rc;
@@ -122,7 +124,6 @@ irc_upgrade_save_all_data (struct t_upgrade_file *upgrade_file)
for (ptr_redirect = ptr_server->redirects; ptr_redirect;
ptr_redirect = ptr_redirect->next_redirect)
{
- /* save channel */
infolist = weechat_infolist_new ();
if (!infolist)
return 0;
@@ -138,6 +139,26 @@ irc_upgrade_save_all_data (struct t_upgrade_file *upgrade_file)
if (!rc)
return 0;
}
+
+ /* save server notify list */
+ for (ptr_notify = ptr_server->notify_list; ptr_notify;
+ ptr_notify = ptr_notify->next_notify)
+ {
+ infolist = weechat_infolist_new ();
+ if (!infolist)
+ return 0;
+ if (!irc_notify_add_to_infolist (infolist, ptr_notify))
+ {
+ weechat_infolist_free (infolist);
+ return 0;
+ }
+ rc = weechat_upgrade_write_object (upgrade_file,
+ IRC_UPGRADE_TYPE_NOTIFY,
+ infolist);
+ weechat_infolist_free (infolist);
+ if (!rc)
+ return 0;
+ }
}
/* save raw messages */
@@ -255,6 +276,7 @@ irc_upgrade_read_cb (void *data,
const char *buffer_name, *str, *nick;
struct t_irc_nick *ptr_nick;
struct t_irc_redirect *ptr_redirect;
+ struct t_irc_notify *ptr_notify;
struct t_gui_buffer *ptr_buffer;
/* make C compiler happy */
@@ -558,6 +580,20 @@ irc_upgrade_read_cb (void *data,
weechat_infolist_string (infolist, "cmd_stop"),
weechat_infolist_string (infolist, "cmd_extra"));
break;
+ case IRC_UPGRADE_TYPE_NOTIFY:
+ if (irc_upgrade_current_server)
+ {
+ ptr_notify = irc_notify_search (irc_upgrade_current_server,
+ weechat_infolist_string (infolist, "nick"));
+ if (ptr_notify)
+ {
+ ptr_notify->is_on_server = weechat_infolist_integer (infolist, "is_on_server");
+ str = weechat_infolist_string (infolist, "away_message");
+ if (str)
+ ptr_notify->away_message = strdup (str);
+ }
+ }
+ break;
case IRC_UPGRADE_TYPE_RAW_MESSAGE:
irc_raw_message_add_to_list (weechat_infolist_time (infolist, "date"),
weechat_infolist_string (infolist, "prefix"),
diff --git a/src/plugins/irc/irc-upgrade.h b/src/plugins/irc/irc-upgrade.h
index 724fd15c9..175376c2f 100644
--- a/src/plugins/irc/irc-upgrade.h
+++ b/src/plugins/irc/irc-upgrade.h
@@ -32,6 +32,7 @@ enum t_irc_upgrade_type
IRC_UPGRADE_TYPE_RAW_MESSAGE,
IRC_UPGRADE_TYPE_REDIRECT_PATTERN,
IRC_UPGRADE_TYPE_REDIRECT,
+ IRC_UPGRADE_TYPE_NOTIFY,
};
extern int irc_upgrade_save ();
diff --git a/src/plugins/irc/irc.c b/src/plugins/irc/irc.c
index 68e3abb3c..df356daf6 100644
--- a/src/plugins/irc/irc.c
+++ b/src/plugins/irc/irc.c
@@ -29,6 +29,7 @@
#include "irc.h"
#include "irc-bar-item.h"
#include "irc-buffer.h"
+#include "irc-channel.h"
#include "irc-color.h"
#include "irc-command.h"
#include "irc-completion.h"
@@ -36,11 +37,11 @@
#include "irc-debug.h"
#include "irc-info.h"
#include "irc-input.h"
-#include "irc-server.h"
-#include "irc-channel.h"
#include "irc-nick.h"
+#include "irc-notify.h"
#include "irc-raw.h"
#include "irc-redirect.h"
+#include "irc-server.h"
#include "irc-upgrade.h"
@@ -167,6 +168,8 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
irc_redirect_init ();
+ irc_notify_init ();
+
/* hook some signals */
irc_debug_init ();
weechat_hook_signal ("quit", &irc_signal_quit_cb, NULL);
@@ -269,6 +272,8 @@ weechat_plugin_end (struct t_weechat_plugin *plugin)
irc_config_free ();
+ irc_notify_end ();
+
irc_redirect_end ();
return WEECHAT_RC_OK;