From 71d77a58903bc39341e8ecdda16f8a607355d6f1 Mon Sep 17 00:00:00 2001 From: Sebastien Helleu Date: Tue, 9 Feb 2010 12:40:19 +0100 Subject: [PATCH] Add new command /silence --- ChangeLog | 3 +- doc/en/autogen/user/weechat_commands.txt | 19 +++++ doc/fr/autogen/user/weechat_commands.txt | 19 +++++ doc/it/autogen/user/weechat_commands.txt | 19 +++++ po/cs.po | 28 +++++- po/de.po | 28 +++++- po/es.po | 28 +++++- po/fr.po | 48 ++++++++++- po/hu.po | 28 +++++- po/it.po | 28 +++++- po/pl.po | 28 +++++- po/ru.po | 28 +++++- po/weechat.pot | 27 +++++- src/core/wee-command.c | 103 +++++++++++++++++++++++ src/core/wee-input.c | 2 - src/gui/gui-chat.c | 14 ++- src/gui/gui-chat.h | 11 ++- 17 files changed, 444 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1302674ea..91ad160ab 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,12 +1,13 @@ WeeChat ChangeLog ================= FlashCode -v0.3.2-dev, 2010-02-06 +v0.3.2-dev, 2010-02-09 Version 0.3.2 (under dev!) -------------------------- * core: add signal "day_changed" +* core: add new command /silence * core: remove unneeded space after time on each line if option weechat.look.buffer_time_format is set to empty value (bug #28751) * core: add option "switch_active_buffer_previous" for command /input diff --git a/doc/en/autogen/user/weechat_commands.txt b/doc/en/autogen/user/weechat_commands.txt index 6e7301524..bcb1d9be2 100644 --- a/doc/en/autogen/user/weechat_commands.txt +++ b/doc/en/autogen/user/weechat_commands.txt @@ -281,6 +281,25 @@ For all types, you can use null to remove option value (undefined value). This works only for some special plugin variables. ........................................ +• *`/silence`* `[-current | -buffer name | -all] command`:: + +........................................ + execute a command silently + + -current: no output on curent buffer + -buffer: no output on specified buffer + name: full buffer name (examples: "irc.server.freenode", "irc.freenode.#weechat") + -all: no output on ALL buffers + command: command to execute silently (a '/' is automatically added if not found at beginning of command) + + If no target is specified (-current, -buffer or -all), then default is to silence WeeChat core buffer only. + + Examples: + config save: /silence save + message to current IRC channel: /silence -current msg * hi! + message to #weechat channel: /silence -buffer irc.freenode.#weechat msg #weechat hi! +........................................ + • *`/unset`* `[option]`:: ........................................ diff --git a/doc/fr/autogen/user/weechat_commands.txt b/doc/fr/autogen/user/weechat_commands.txt index 039209304..c320c55fb 100644 --- a/doc/fr/autogen/user/weechat_commands.txt +++ b/doc/fr/autogen/user/weechat_commands.txt @@ -281,6 +281,25 @@ Pour tous les types, vous pouvez utiliser null pour supprimer la valeur de l'option (valeur non définie). Cela ne fonctionne qu'avec certaines options spéciales des extensions. ........................................ +• *`/silence`* `[-current | -buffer nom | -all] commande`:: + +........................................ + exécuter une commande silencieusement + + -current: pas d'affichage sur le tampon courant + -buffer: pas d'affichage sur le tampon spécifié + nom: nom complet du tampon (exemples: "irc.server.freenode", "irc.freenode.#weechat") + -all: pas d'affichage sur TOUS les tampons + commande: commande à exécuter silencieusement (un '/' est automatiquement ajouté s'il n'est pas trouvé au début de la commande) + + Si aucune cible n'est spécifiée (-current, -buffer ou -all), alors par défaut seul le tampon core WeeChat sera silencieux. + + Exemples: + sauvegarde configuration: /silence save + message au canal IRC courant: /silence -current msg * bonjour ! + message au canal #weechat: /silence -buffer irc.freenode.#weechat msg #weechat bonjour ! +........................................ + • *`/unset`* `[option]`:: ........................................ diff --git a/doc/it/autogen/user/weechat_commands.txt b/doc/it/autogen/user/weechat_commands.txt index 5e9a0db20..447bcb507 100644 --- a/doc/it/autogen/user/weechat_commands.txt +++ b/doc/it/autogen/user/weechat_commands.txt @@ -281,6 +281,25 @@ Per tutti i tipi, è possibile utilizzare un valore nullo per eliminare il valore dell'opzione (non definito). Funziona solo per alcune variabili speciali dei plugin. ........................................ +• *`/silence`* `[-current | -buffer name | -all] command`:: + +........................................ + execute a command silently + + -current: no output on curent buffer + -buffer: no output on specified buffer + name: full buffer name (examples: "irc.server.freenode", "irc.freenode.#weechat") + -all: no output on ALL buffers + command: command to execute silently (a '/' is automatically added if not found at beginning of command) + + If no target is specified (-current, -buffer or -all), then default is to silence WeeChat core buffer only. + + Examples: + config save: /silence save + message to current IRC channel: /silence -current msg * hi! + message to #weechat channel: /silence -buffer irc.freenode.#weechat msg #weechat hi! +........................................ + • *`/unset`* `[opzione]`:: ........................................ diff --git a/po/cs.po b/po/cs.po index e497c2ea5..1af465815 100644 --- a/po/cs.po +++ b/po/cs.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.3.2-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2010-02-06 12:11+0100\n" +"POT-Creation-Date: 2010-02-09 12:33+0100\n" "PO-Revision-Date: 2010-01-23 11:56+0100\n" "Last-Translator: Jiri Golembiovsky \n" "Language-Team: weechat-dev \n" @@ -1265,6 +1265,32 @@ msgstr "" "(nedefinovaná hodnota).To však funguje jen pro některé speciální proměnné " "pluginů." +#, fuzzy +msgid "execute a command silently" +msgstr "příkazy weechat" + +msgid "[-current | -buffer name | -all] command" +msgstr "" + +msgid "" +"-current: no output on curent buffer\n" +" -buffer: no output on specified buffer\n" +" name: full buffer name (examples: \"irc.server.freenode\", \"irc." +"freenode.#weechat\")\n" +" -all: no output on ALL buffers\n" +" command: command to execute silently (a '/' is automatically added if not " +"found at beginning of command)\n" +"\n" +"If no target is specified (-current, -buffer or -all), then default is to " +"silence WeeChat core buffer only.\n" +"\n" +"Examples:\n" +" config save: /silence save\n" +" message to current IRC channel: /silence -current msg * hi!\n" +" message to #weechat channel: /silence -buffer irc.freenode.#weechat msg " +"#weechat hi!" +msgstr "" + msgid "unset/reset config options" msgstr "odnastavit/resetovat konfigurační možnosti" diff --git a/po/de.po b/po/de.po index c1f739e7f..878310ef5 100644 --- a/po/de.po +++ b/po/de.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.3.2-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2010-02-06 12:11+0100\n" +"POT-Creation-Date: 2010-02-09 12:33+0100\n" "PO-Revision-Date: 2010-01-26 22:35+0100\n" "Last-Translator: Nils G \n" "Language-Team: weechat-dev \n" @@ -1318,6 +1318,32 @@ msgstr "" "genutzt werden um den Wert der Option zu löschen (undefinierter Wert). Dies " "kann nur bei einigen Erweiterungen genutzt werden." +#, fuzzy +msgid "execute a command silently" +msgstr "WeeChat Befehle" + +msgid "[-current | -buffer name | -all] command" +msgstr "" + +msgid "" +"-current: no output on curent buffer\n" +" -buffer: no output on specified buffer\n" +" name: full buffer name (examples: \"irc.server.freenode\", \"irc." +"freenode.#weechat\")\n" +" -all: no output on ALL buffers\n" +" command: command to execute silently (a '/' is automatically added if not " +"found at beginning of command)\n" +"\n" +"If no target is specified (-current, -buffer or -all), then default is to " +"silence WeeChat core buffer only.\n" +"\n" +"Examples:\n" +" config save: /silence save\n" +" message to current IRC channel: /silence -current msg * hi!\n" +" message to #weechat channel: /silence -buffer irc.freenode.#weechat msg " +"#weechat hi!" +msgstr "" + msgid "unset/reset config options" msgstr "Konfigurationsparameter freigeben/zurücksetzen" diff --git a/po/es.po b/po/es.po index 3d02717af..dac42e7cc 100644 --- a/po/es.po +++ b/po/es.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.3.2-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2010-02-06 12:11+0100\n" +"POT-Creation-Date: 2010-02-09 12:33+0100\n" "PO-Revision-Date: 2010-01-23 11:56+0100\n" "Last-Translator: Elián Hanisch \n" "Language-Team: weechat-dev \n" @@ -1281,6 +1281,32 @@ msgstr "" "Para todos los tipos, puedes usar null para remover el valor de la opción " "(valor indefinido). Esto solo funciona para algunas variables especiales." +#, fuzzy +msgid "execute a command silently" +msgstr "comandos de weechat" + +msgid "[-current | -buffer name | -all] command" +msgstr "" + +msgid "" +"-current: no output on curent buffer\n" +" -buffer: no output on specified buffer\n" +" name: full buffer name (examples: \"irc.server.freenode\", \"irc." +"freenode.#weechat\")\n" +" -all: no output on ALL buffers\n" +" command: command to execute silently (a '/' is automatically added if not " +"found at beginning of command)\n" +"\n" +"If no target is specified (-current, -buffer or -all), then default is to " +"silence WeeChat core buffer only.\n" +"\n" +"Examples:\n" +" config save: /silence save\n" +" message to current IRC channel: /silence -current msg * hi!\n" +" message to #weechat channel: /silence -buffer irc.freenode.#weechat msg " +"#weechat hi!" +msgstr "" + msgid "unset/reset config options" msgstr "deshacer/reiniciar opciones de configuración" diff --git a/po/fr.po b/po/fr.po index df32e9f8c..0428eb31d 100644 --- a/po/fr.po +++ b/po/fr.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.3.2-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2010-02-06 12:11+0100\n" -"PO-Revision-Date: 2010-02-06 12:11+0100\n" +"POT-Creation-Date: 2010-02-09 12:33+0100\n" +"PO-Revision-Date: 2010-02-09 12:35+0100\n" "Last-Translator: FlashCode \n" "Language-Team: weechat-dev \n" "MIME-Version: 1.0\n" @@ -1281,6 +1281,47 @@ msgstr "" "l'option (valeur non définie). Cela ne fonctionne qu'avec certaines options " "spéciales des extensions." +msgid "execute a command silently" +msgstr "exécuter une commande silencieusement" + +msgid "[-current | -buffer name | -all] command" +msgstr "[-current | -buffer nom | -all] commande" + +msgid "" +"-current: no output on curent buffer\n" +" -buffer: no output on specified buffer\n" +" name: full buffer name (examples: \"irc.server.freenode\", \"irc." +"freenode.#weechat\")\n" +" -all: no output on ALL buffers\n" +" command: command to execute silently (a '/' is automatically added if not " +"found at beginning of command)\n" +"\n" +"If no target is specified (-current, -buffer or -all), then default is to " +"silence WeeChat core buffer only.\n" +"\n" +"Examples:\n" +" config save: /silence save\n" +" message to current IRC channel: /silence -current msg * hi!\n" +" message to #weechat channel: /silence -buffer irc.freenode.#weechat msg " +"#weechat hi!" +msgstr "" +"-current: pas d'affichage sur le tampon courant\n" +" -buffer: pas d'affichage sur le tampon spécifié\n" +" nom: nom complet du tampon (exemples: \"irc.server.freenode\", \"irc." +"freenode.#weechat\")\n" +" -all: pas d'affichage sur TOUS les tampons\n" +"commande: commande à exécuter silencieusement (un '/' est automatiquement " +"ajouté s'il n'est pas trouvé au début de la commande)\n" +"\n" +"Si aucune cible n'est spécifiée (-current, -buffer ou -all), alors par " +"défaut seul le tampon core WeeChat sera silencieux.\n" +"\n" +"Exemples:\n" +" sauvegarde configuration: /silence save\n" +" message au canal IRC courant: /silence -current msg * bonjour !\n" +" message au canal #weechat: /silence -buffer irc.freenode.#weechat msg " +"#weechat bonjour !" + msgid "unset/reset config options" msgstr "supprimer/réinitialiser des options de configuration" @@ -6117,5 +6158,8 @@ msgstr "%s%s: impossible de positionner l'option \"nonblock\" pour la socket" msgid "%s%s: timeout for \"%s\" with %s" msgstr "%s%s: délai d'attente dépassé pour \"%s\" avec %s" +#~ msgid "[-all | -current] command" +#~ msgstr "[-all | -current] commande" + #~ msgid "display message if CTCP is unknown" #~ msgstr "afficher le message si le CTCP est inconnu" diff --git a/po/hu.po b/po/hu.po index 9956cf93b..d2e746717 100644 --- a/po/hu.po +++ b/po/hu.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.3.2-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2010-02-06 12:11+0100\n" +"POT-Creation-Date: 2010-02-09 12:33+0100\n" "PO-Revision-Date: 2010-01-23 11:57+0100\n" "Last-Translator: Andras Voroskoi \n" "Language-Team: weechat-dev \n" @@ -1184,6 +1184,32 @@ msgid "" "This works only for some special plugin variables." msgstr "" +#, fuzzy +msgid "execute a command silently" +msgstr "%s belső parancsok:\n" + +msgid "[-current | -buffer name | -all] command" +msgstr "" + +msgid "" +"-current: no output on curent buffer\n" +" -buffer: no output on specified buffer\n" +" name: full buffer name (examples: \"irc.server.freenode\", \"irc." +"freenode.#weechat\")\n" +" -all: no output on ALL buffers\n" +" command: command to execute silently (a '/' is automatically added if not " +"found at beginning of command)\n" +"\n" +"If no target is specified (-current, -buffer or -all), then default is to " +"silence WeeChat core buffer only.\n" +"\n" +"Examples:\n" +" config save: /silence save\n" +" message to current IRC channel: /silence -current msg * hi!\n" +" message to #weechat channel: /silence -buffer irc.freenode.#weechat msg " +"#weechat hi!" +msgstr "" + #, fuzzy msgid "unset/reset config options" msgstr "konfigurációs paraméterek beállítása" diff --git a/po/it.po b/po/it.po index 320362e6f..4b4e3e546 100644 --- a/po/it.po +++ b/po/it.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Weechat 0.3.2-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2010-02-06 12:11+0100\n" +"POT-Creation-Date: 2010-02-09 12:33+0100\n" "PO-Revision-Date: 2010-01-23 11:57+0100\n" "Last-Translator: Marco Paolone \n" "Language-Team: weechat-dev \n" @@ -1275,6 +1275,32 @@ msgstr "" "valore dell'opzione (non definito). Funziona solo per alcune variabili " "speciali dei plugin." +#, fuzzy +msgid "execute a command silently" +msgstr "comandi di weechat" + +msgid "[-current | -buffer name | -all] command" +msgstr "" + +msgid "" +"-current: no output on curent buffer\n" +" -buffer: no output on specified buffer\n" +" name: full buffer name (examples: \"irc.server.freenode\", \"irc." +"freenode.#weechat\")\n" +" -all: no output on ALL buffers\n" +" command: command to execute silently (a '/' is automatically added if not " +"found at beginning of command)\n" +"\n" +"If no target is specified (-current, -buffer or -all), then default is to " +"silence WeeChat core buffer only.\n" +"\n" +"Examples:\n" +" config save: /silence save\n" +" message to current IRC channel: /silence -current msg * hi!\n" +" message to #weechat channel: /silence -buffer irc.freenode.#weechat msg " +"#weechat hi!" +msgstr "" + msgid "unset/reset config options" msgstr "annulla/resetta opzione" diff --git a/po/pl.po b/po/pl.po index 2b39e40cb..3e68efe32 100644 --- a/po/pl.po +++ b/po/pl.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.3.2-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2010-02-06 12:11+0100\n" +"POT-Creation-Date: 2010-02-09 12:33+0100\n" "PO-Revision-Date: 2010-01-23 11:57+0100\n" "Last-Translator: Krzysztof Koroscik \n" "Language-Team: Polish\n" @@ -1290,6 +1290,32 @@ msgstr "" "(niezdefiniowana wartość). Działa to tylko dla niektórych specjalnych " "zmiennych wtyczek." +#, fuzzy +msgid "execute a command silently" +msgstr "komendy weechata" + +msgid "[-current | -buffer name | -all] command" +msgstr "" + +msgid "" +"-current: no output on curent buffer\n" +" -buffer: no output on specified buffer\n" +" name: full buffer name (examples: \"irc.server.freenode\", \"irc." +"freenode.#weechat\")\n" +" -all: no output on ALL buffers\n" +" command: command to execute silently (a '/' is automatically added if not " +"found at beginning of command)\n" +"\n" +"If no target is specified (-current, -buffer or -all), then default is to " +"silence WeeChat core buffer only.\n" +"\n" +"Examples:\n" +" config save: /silence save\n" +" message to current IRC channel: /silence -current msg * hi!\n" +" message to #weechat channel: /silence -buffer irc.freenode.#weechat msg " +"#weechat hi!" +msgstr "" + msgid "unset/reset config options" msgstr "skasuj/zresetuj zmienną konfiguracyjną" diff --git a/po/ru.po b/po/ru.po index f803a7ab5..d0a96572f 100644 --- a/po/ru.po +++ b/po/ru.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.3.2-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2010-02-06 12:11+0100\n" +"POT-Creation-Date: 2010-02-09 12:33+0100\n" "PO-Revision-Date: 2010-01-23 11:57+0100\n" "Last-Translator: Pavel Shevchuk \n" "Language-Team: weechat-dev \n" @@ -1188,6 +1188,32 @@ msgid "" "This works only for some special plugin variables." msgstr "" +#, fuzzy +msgid "execute a command silently" +msgstr "Внутренние команды %s:\n" + +msgid "[-current | -buffer name | -all] command" +msgstr "" + +msgid "" +"-current: no output on curent buffer\n" +" -buffer: no output on specified buffer\n" +" name: full buffer name (examples: \"irc.server.freenode\", \"irc." +"freenode.#weechat\")\n" +" -all: no output on ALL buffers\n" +" command: command to execute silently (a '/' is automatically added if not " +"found at beginning of command)\n" +"\n" +"If no target is specified (-current, -buffer or -all), then default is to " +"silence WeeChat core buffer only.\n" +"\n" +"Examples:\n" +" config save: /silence save\n" +" message to current IRC channel: /silence -current msg * hi!\n" +" message to #weechat channel: /silence -buffer irc.freenode.#weechat msg " +"#weechat hi!" +msgstr "" + #, fuzzy msgid "unset/reset config options" msgstr "настроить параметры конфигурации" diff --git a/po/weechat.pot b/po/weechat.pot index e5f3cb51d..0471abe0f 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-02-06 12:11+0100\n" +"POT-Creation-Date: 2010-02-09 12:33+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1022,6 +1022,31 @@ msgid "" "This works only for some special plugin variables." msgstr "" +msgid "execute a command silently" +msgstr "" + +msgid "[-current | -buffer name | -all] command" +msgstr "" + +msgid "" +"-current: no output on curent buffer\n" +" -buffer: no output on specified buffer\n" +" name: full buffer name (examples: \"irc.server.freenode\", \"irc." +"freenode.#weechat\")\n" +" -all: no output on ALL buffers\n" +" command: command to execute silently (a '/' is automatically added if not " +"found at beginning of command)\n" +"\n" +"If no target is specified (-current, -buffer or -all), then default is to " +"silence WeeChat core buffer only.\n" +"\n" +"Examples:\n" +" config save: /silence save\n" +" message to current IRC channel: /silence -current msg * hi!\n" +" message to #weechat channel: /silence -buffer irc.freenode.#weechat msg " +"#weechat hi!" +msgstr "" + msgid "unset/reset config options" msgstr "" diff --git a/src/core/wee-command.c b/src/core/wee-command.c index 445d97a43..5dace95fc 100644 --- a/src/core/wee-command.c +++ b/src/core/wee-command.c @@ -3203,6 +3203,88 @@ command_set (void *data, struct t_gui_buffer *buffer, return WEECHAT_RC_OK; } +/* + * command_silence: execute a command silently + */ + +int +command_silence (void *data, struct t_gui_buffer *buffer, + int argc, char **argv, char **argv_eol) +{ + int length, silent_mode; + char *command, *ptr_command, *buffer_name, *pos; + struct t_gui_buffer *silent_buffer, *ptr_buffer; + + /* make C compiler happy */ + (void) data; + + if (argc >= 2) + { + silent_mode = GUI_CHAT_SILENT_BUFFER; + silent_buffer = gui_buffer_search_main (); + ptr_command = argv_eol[1]; + + if (string_strcasecmp (argv[1], "-current") == 0) + { + silent_buffer = buffer; + ptr_command = argv_eol[2]; + } + else if (string_strcasecmp (argv[1], "-buffer") == 0) + { + ptr_buffer = NULL; + if (argc < 3) + return WEECHAT_RC_ERROR; + buffer_name = strdup (argv[2]); + if (!buffer_name) + return WEECHAT_RC_ERROR; + pos = strchr (buffer_name, '.'); + if (pos) + { + pos[0] = '\0'; + pos++; + ptr_buffer = gui_buffer_search_by_name (buffer_name, pos); + } + free (buffer_name); + if (ptr_buffer) + silent_buffer = ptr_buffer; + ptr_command = argv_eol[3]; + } + else if (string_strcasecmp (argv[1], "-all") == 0) + { + silent_mode = GUI_CHAT_SILENT_ALL_BUFFERS; + silent_buffer = NULL; + ptr_command = argv_eol[2]; + } + + if (ptr_command && ptr_command[0]) + { + gui_chat_silent = silent_mode; + gui_chat_silent_buffer = silent_buffer; + + if (ptr_command[0] == '/') + { + input_exec_command (buffer, 1, NULL, ptr_command); + } + else + { + length = strlen (ptr_command) + 2; + command = malloc (length); + if (command) + { + snprintf (command, length, "/%s", ptr_command); + input_exec_command (buffer, 1, NULL, command); + free (command); + } + } + + gui_chat_silent = GUI_CHAT_SILENT_DISABLED; + gui_chat_silent_buffer = NULL; + } + } + + return WEECHAT_RC_OK; +} + /* * command_unset: unset/reset config options */ @@ -4300,6 +4382,27 @@ command_init () "for some special plugin variables."), "%(config_options) %(config_option_values)", &command_set, NULL); + hook_command (NULL, "silence", + N_("execute a command silently"), + N_("[-current | -buffer name | -all] command"), + N_("-current: no output on curent buffer\n" + " -buffer: no output on specified buffer\n" + " name: full buffer name (examples: " + "\"irc.server.freenode\", \"irc.freenode.#weechat\")\n" + " -all: no output on ALL buffers\n" + " command: command to execute silently (a '/' is " + "automatically added if not found at beginning of " + "command)\n\n" + "If no target is specified (-current, -buffer or -all), " + "then default is to silence WeeChat core buffer only.\n\n" + "Examples:\n" + " config save: /silence save\n" + " message to current IRC channel: " + "/silence -current msg * hi!\n" + " message to #weechat channel: " + "/silence -buffer irc.freenode.#weechat msg #weechat hi!"), + "-current|-buffer|-all|%(commands) %(commands)|%*", + &command_silence, NULL); hook_command (NULL, "unset", N_("unset/reset config options"), N_("[option]"), diff --git a/src/core/wee-input.c b/src/core/wee-input.c index d25225348..2622192c0 100644 --- a/src/core/wee-input.c +++ b/src/core/wee-input.c @@ -78,8 +78,6 @@ input_exec_data (struct t_gui_buffer *buffer, const char *data) /* * input_exec_command: execute a command (WeeChat internal or a plugin command) - * if only_builtin == 1, then try only - * WeeChat commands (not plugins neither aliases) * returns: 1 if command was executed succesfully * 0 if error (command not executed) */ diff --git a/src/gui/gui-chat.c b/src/gui/gui-chat.c index 37d111d38..061654a54 100644 --- a/src/gui/gui-chat.c +++ b/src/gui/gui-chat.c @@ -46,10 +46,12 @@ #include "gui-window.h" -char *gui_chat_buffer = NULL; /* buffer for printf */ -char *gui_chat_prefix[GUI_CHAT_NUM_PREFIXES]; /* prefixes */ -char gui_chat_prefix_empty[] = ""; /* empty prefix */ +char *gui_chat_buffer = NULL; /* buffer for printf */ +char *gui_chat_prefix[GUI_CHAT_NUM_PREFIXES]; /* prefixes */ +char gui_chat_prefix_empty[] = ""; /* empty prefix */ int gui_chat_time_length = 0; /* length of time for each line (in chars) */ +int gui_chat_silent = GUI_CHAT_SILENT_DISABLED; /* silence mode */ +struct t_gui_buffer *gui_chat_silent_buffer = NULL; /* buffer for silence */ /* @@ -452,6 +454,12 @@ gui_chat_printf_date_tags (struct t_gui_buffer *buffer, time_t date, if (buffer->type != GUI_BUFFER_TYPE_FORMATTED) return; } + + /* if silent is enabled for buffer (or all buffers), then just return */ + if ((gui_chat_silent == GUI_CHAT_SILENT_ALL_BUFFERS) + || ((gui_chat_silent == GUI_CHAT_SILENT_BUFFER) + && (gui_chat_silent_buffer == buffer))) + return; if (!gui_chat_buffer) gui_chat_buffer = malloc (GUI_CHAT_BUFFER_PRINTF_SIZE); diff --git a/src/gui/gui-chat.h b/src/gui/gui-chat.h index 3b7119882..460b8eb6f 100644 --- a/src/gui/gui-chat.h +++ b/src/gui/gui-chat.h @@ -31,7 +31,7 @@ struct t_gui_line; #define GUI_CHAT_TAG_NO_HIGHLIGHT "no_highlight" -enum t_gui_prefix +enum t_gui_chat_prefix { GUI_CHAT_PREFIX_ERROR = 0, GUI_CHAT_PREFIX_NETWORK, @@ -42,9 +42,18 @@ enum t_gui_prefix GUI_CHAT_NUM_PREFIXES, }; +enum t_gui_chat_silent +{ + GUI_CHAT_SILENT_DISABLED = 0, + GUI_CHAT_SILENT_BUFFER, + GUI_CHAT_SILENT_ALL_BUFFERS, +}; + extern char *gui_chat_prefix[GUI_CHAT_NUM_PREFIXES]; extern char gui_chat_prefix_empty[]; extern int gui_chat_time_length; +extern int gui_chat_silent; +extern struct t_gui_buffer *gui_chat_silent_buffer; /* chat functions */