diff --git a/doc/en/autogen/user/irc_options.txt b/doc/en/autogen/user/irc_options.txt index e34b1b96e..aba6df78b 100644 --- a/doc/en/autogen/user/irc_options.txt +++ b/doc/en/autogen/user/irc_options.txt @@ -88,8 +88,13 @@ ** type: integer ** values: auto, never, always (default value: auto) -* *irc.look.open_near_server* -** description: open new channels/privates near server +* *irc.look.open_channel_near_server* +** description: open new channels near server +** type: boolean +** values: on, off (default value: off) + +* *irc.look.open_pv_near_server* +** description: open new privates near server ** type: boolean ** values: on, off (default value: off) diff --git a/doc/en/weechat_plugin_api.en.txt b/doc/en/weechat_plugin_api.en.txt index f393cef5c..97cdacdbd 100644 --- a/doc/en/weechat_plugin_api.en.txt +++ b/doc/en/weechat_plugin_api.en.txt @@ -5369,6 +5369,9 @@ Arguments: "1": switch to this buffer in current window + "auto": switch to this buffer in current window, read marker is not reset +| number | number | + move buffer to this number + | name | any string | set new name for buffer diff --git a/doc/fr/autogen/user/irc_options.txt b/doc/fr/autogen/user/irc_options.txt index db9ae1800..d2f2b7ad6 100644 --- a/doc/fr/autogen/user/irc_options.txt +++ b/doc/fr/autogen/user/irc_options.txt @@ -88,8 +88,13 @@ ** type: entier ** valeurs: auto, never, always (valeur par défaut: auto) -* *irc.look.open_near_server* -** description: ouvrir les nouveaux canaux/privés près du serveur +* *irc.look.open_channel_near_server* +** description: ouvrir les nouveaux canaux près du serveur +** type: booléen +** valeurs: on, off (valeur par défaut: off) + +* *irc.look.open_pv_near_server* +** description: ouvrir les nouveaux privés près du serveur ** type: booléen ** valeurs: on, off (valeur par défaut: off) diff --git a/po/cs.po b/po/cs.po index 11d8a9def..ec8ab5a1e 100644 --- a/po/cs.po +++ b/po/cs.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.3.0-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2009-06-23 09:42+0200\n" +"POT-Creation-Date: 2009-06-25 10:20+0200\n" "PO-Revision-Date: 2009-05-11 13:02+0200\n" "Last-Translator: Jiri Golembiovsky \n" "Language-Team: weechat-dev \n" @@ -3766,7 +3766,12 @@ msgstr "získat lokální čas ze serveru" msgid "merge server buffers" msgstr "řídit buffery" -msgid "open new channels/privates near server" +#, fuzzy +msgid "open new channels near server" +msgstr "otevřít nový kanál/soukromý rozhovor poblíž serveru" + +#, fuzzy +msgid "open new privates near server" msgstr "otevřít nový kanál/soukromý rozhovor poblíž serveru" msgid "text to display before nick in chat window" @@ -5701,10 +5706,6 @@ msgstr "%s chybí argument pro volbu \"%s\"\n" #~ msgid "use same buffer for all servers" #~ msgstr "pužít stejný buffer pro všechny servery" -#, fuzzy -#~ msgid "open new MUCs/privates near server" -#~ msgstr "otevřít nový kanál/soukromý rozhovor poblíž serveru" - #~ msgid "smart completion for nicks (completes with last speakers first)" #~ msgstr "chytré doplňování přezdívek (doplňovat posledně mluvící jako první)" diff --git a/po/de.po b/po/de.po index aea048f45..1513fc4e5 100644 --- a/po/de.po +++ b/po/de.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.3.0-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2009-06-23 09:42+0200\n" +"POT-Creation-Date: 2009-06-25 10:20+0200\n" "PO-Revision-Date: 2009-05-11 13:02+0200\n" "Last-Translator: Thomas Schuetz \n" "Language-Team: weechat-dev \n" @@ -3743,7 +3743,12 @@ msgstr "Ortszeit des Servers abfragen" msgid "merge server buffers" msgstr "Puffer verwalten" -msgid "open new channels/privates near server" +#, fuzzy +msgid "open new channels near server" +msgstr "öffne neue Channels oder private Nachrichten neben dem Server-Puffer" + +#, fuzzy +msgid "open new privates near server" msgstr "öffne neue Channels oder private Nachrichten neben dem Server-Puffer" msgid "text to display before nick in chat window" @@ -5640,11 +5645,6 @@ msgstr "%s fehlende Argumente für die \"--dir\"-Option\n" #~ msgid "use same buffer for all servers" #~ msgstr "benutze den gleichen Puffer für alle Server" -#, fuzzy -#~ msgid "open new MUCs/privates near server" -#~ msgstr "" -#~ "öffne neue Channels oder private Nachrichten neben dem Server-Puffer" - #~ msgid "smart completion for nicks (completes with last speakers first)" #~ msgstr "" #~ "Intelligente vervollständigung der Nicknamen (vervollständigt zuerst mit " diff --git a/po/es.po b/po/es.po index 34fcd66ec..ca1072876 100644 --- a/po/es.po +++ b/po/es.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.3.0-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2009-06-23 09:42+0200\n" +"POT-Creation-Date: 2009-06-25 10:20+0200\n" "PO-Revision-Date: 2009-05-11 13:02+0200\n" "Last-Translator: Roberto González Cardenete \n" "Language-Team: weechat-dev \n" @@ -3732,7 +3732,12 @@ msgstr "pedir la hora local del servidor" msgid "merge server buffers" msgstr "gestionar los búfers" -msgid "open new channels/privates near server" +#, fuzzy +msgid "open new channels near server" +msgstr "abrir nuevos canales/privados cerca del servidor" + +#, fuzzy +msgid "open new privates near server" msgstr "abrir nuevos canales/privados cerca del servidor" msgid "text to display before nick in chat window" @@ -5633,10 +5638,6 @@ msgstr "%s falta un argumento para la opción --dir\n" #~ msgid "use same buffer for all servers" #~ msgstr "usar el mismo búfer para todos los servidores" -#, fuzzy -#~ msgid "open new MUCs/privates near server" -#~ msgstr "abrir nuevos canales/privados cerca del servidor" - #, fuzzy #~ msgid "" #~ "default part message (leaving MUC) ('%v' will be replaced by WeeChat " diff --git a/po/fr.po b/po/fr.po index 5b8640957..cac4bef5f 100644 --- a/po/fr.po +++ b/po/fr.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.3.0-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2009-06-23 09:42+0200\n" -"PO-Revision-Date: 2009-06-23 09:43+0200\n" +"POT-Creation-Date: 2009-06-25 10:20+0200\n" +"PO-Revision-Date: 2009-06-25 10:20+0200\n" "Last-Translator: FlashCode \n" "Language-Team: weechat-dev \n" "MIME-Version: 1.0\n" @@ -3904,8 +3904,11 @@ msgstr "utiliser la couleur du pseudo dans les messages du serveur" msgid "merge server buffers" msgstr "mélange des tampons de serveur" -msgid "open new channels/privates near server" -msgstr "ouvrir les nouveaux canaux/privés près du serveur" +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 "text to display before nick in chat window" msgstr "texte à afficher avant le pseudo dans la fenêtre de discussion" diff --git a/po/hu.po b/po/hu.po index fb69293d3..09ab97765 100644 --- a/po/hu.po +++ b/po/hu.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.3.0-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2009-06-23 09:42+0200\n" +"POT-Creation-Date: 2009-06-25 10:20+0200\n" "PO-Revision-Date: 2009-05-11 13:02+0200\n" "Last-Translator: Andras Voroskoi \n" "Language-Team: weechat-dev \n" @@ -3781,7 +3781,12 @@ msgstr "helyi idő lekérdezése a szerverről" msgid "merge server buffers" msgstr "pufferek kezelése" -msgid "open new channels/privates near server" +#, 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" msgid "text to display before nick in chat window" @@ -5691,10 +5696,6 @@ msgstr "%s hiányzó argumentum a(z) \"%s\" opciónak\n" #~ msgid "use same buffer for all servers" #~ msgstr "ugyanazon puffer használata minden szerverhez" -#, fuzzy -#~ msgid "open new MUCs/privates near server" -#~ msgstr "az új szobák/privát beszélgetések a szerverhez közel nyíljanak" - #~ msgid "smart completion for nicks (completes with last speakers first)" #~ msgstr "okos névkiegészítés (először az utolsó partnerre egészít ki)" diff --git a/po/pl.po b/po/pl.po index 27c659bab..bc998de39 100644 --- a/po/pl.po +++ b/po/pl.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.3.0-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2009-06-23 09:42+0200\n" +"POT-Creation-Date: 2009-06-25 10:20+0200\n" "PO-Revision-Date: 2009-05-11 13:02+0200\n" "Last-Translator: \n" "Language-Team: Polish\n" @@ -3243,7 +3243,10 @@ msgstr "" msgid "merge server buffers" msgstr "" -msgid "open new channels/privates near server" +msgid "open new channels near server" +msgstr "" + +msgid "open new privates near server" msgstr "" msgid "text to display before nick in chat window" diff --git a/po/ru.po b/po/ru.po index e66a88787..838c7981e 100644 --- a/po/ru.po +++ b/po/ru.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.3.0-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2009-06-23 09:42+0200\n" +"POT-Creation-Date: 2009-06-25 10:20+0200\n" "PO-Revision-Date: 2009-05-11 13:02+0200\n" "Last-Translator: Pavel Shevchuk \n" "Language-Team: weechat-dev \n" @@ -3773,7 +3773,12 @@ msgstr "запросить местное время сервера" msgid "merge server buffers" msgstr "управление буферами" -msgid "open new channels/privates near server" +#, fuzzy +msgid "open new channels near server" +msgstr "открывать новые каналы/приваты рядом с сервером" + +#, fuzzy +msgid "open new privates near server" msgstr "открывать новые каналы/приваты рядом с сервером" msgid "text to display before nick in chat window" @@ -5665,10 +5670,6 @@ msgstr "%s нет аргумента для параметра \"%s\"\n" #~ msgid "use same buffer for all servers" #~ msgstr "один буфер для всех серверов" -#, fuzzy -#~ msgid "open new MUCs/privates near server" -#~ msgstr "открывать новые каналы/приваты рядом с сервером" - #~ msgid "smart completion for nicks (completes with last speakers first)" #~ msgstr "умное дополнение ников (начинает перебор с последних собеседников)" diff --git a/po/weechat.pot b/po/weechat.pot index b2c7b3361..f6200f6b2 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: 2009-06-23 09:42+0200\n" +"POT-Creation-Date: 2009-06-25 10:20+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -3210,7 +3210,10 @@ msgstr "" msgid "merge server buffers" msgstr "" -msgid "open new channels/privates near server" +msgid "open new channels near server" +msgstr "" + +msgid "open new privates near server" msgstr "" msgid "text to display before nick in chat window" diff --git a/src/gui/gui-buffer.c b/src/gui/gui-buffer.c index 5abff70d1..8eefc2ef1 100644 --- a/src/gui/gui-buffer.c +++ b/src/gui/gui-buffer.c @@ -981,6 +981,13 @@ gui_buffer_set (struct t_gui_buffer *buffer, const char *property, if (error && !error[0]) buffer->print_hooks_enabled = (number) ? 1 : 0; } + else if (string_strcasecmp (property, "number") == 0) + { + error = NULL; + number = strtol (value, &error, 10); + if (error && !error[0] && (number >= 1)) + gui_buffer_move_to_number (buffer, number); + } else if (string_strcasecmp (property, "name") == 0) { gui_buffer_set_name (buffer, value); diff --git a/src/plugins/irc/irc-channel.c b/src/plugins/irc/irc-channel.c index a2eb29ca5..33744d95f 100644 --- a/src/plugins/irc/irc-channel.c +++ b/src/plugins/irc/irc-channel.c @@ -60,6 +60,72 @@ irc_channel_valid (struct t_irc_server *server, struct t_irc_channel *channel) return 0; } +/* + * irc_channel_move_near_server: move new channel/pv buffer near server + */ + +void +irc_channel_move_near_server (struct t_irc_server *server, int channel_type, + struct t_gui_buffer *buffer) +{ + int number, number_channel, number_last_channel, number_last_private; + int number_found; + char str_number[32]; + struct t_irc_channel *ptr_channel; + + number = weechat_buffer_get_integer (buffer, "number"); + number_last_channel = 0; + number_last_private = 0; + number_found = 0; + + if (server->channels) + { + /* search last channel/pv number for server */ + for (ptr_channel = server->channels; ptr_channel; + ptr_channel = ptr_channel->next_channel) + { + if (ptr_channel->buffer) + { + number_channel = weechat_buffer_get_integer (ptr_channel->buffer, + "number"); + switch (ptr_channel->type) + { + case IRC_CHANNEL_TYPE_CHANNEL: + if (number_channel > number_last_channel) + number_last_channel = number_channel; + break; + case IRC_CHANNEL_TYPE_PRIVATE: + if (number_channel > number_last_private) + number_last_private = number_channel; + break; + } + } + } + + /* use last channel/pv number + 1 */ + switch (channel_type) + { + case IRC_CHANNEL_TYPE_CHANNEL: + if (number_last_channel > 0) + number_found = number_last_channel + 1; + break; + case IRC_CHANNEL_TYPE_PRIVATE: + if (number_last_private > 0) + number_found = number_last_private + 1; + else if (number_last_channel > 0) + number_found = number_last_channel + 1; + break; + } + + /* switch to number found */ + if ((number_found >= 1) && (number_found != number)) + { + snprintf (str_number, sizeof (str_number), "%d", number_found); + weechat_buffer_set (buffer, "number", str_number); + } + } +} + /* * irc_channel_new: allocate a new channel for a server and add it to channels * list @@ -100,6 +166,13 @@ irc_channel_new (struct t_irc_server *server, int channel_type, free (new_channel); return NULL; } + if (((channel_type == IRC_CHANNEL_TYPE_CHANNEL) + && weechat_config_boolean (irc_config_look_open_channel_near_server)) + || ((channel_type == IRC_CHANNEL_TYPE_PRIVATE) + && weechat_config_boolean (irc_config_look_open_pv_near_server))) + { + irc_channel_move_near_server (server, channel_type, new_buffer); + } buffer_created = 1; } diff --git a/src/plugins/irc/irc-config.c b/src/plugins/irc/irc-config.c index 5a47e5757..fe3679a94 100644 --- a/src/plugins/irc/irc-config.c +++ b/src/plugins/irc/irc-config.c @@ -44,7 +44,8 @@ struct t_config_section *irc_config_section_server = NULL; struct t_config_option *irc_config_look_color_nicks_in_server_messages; struct t_config_option *irc_config_look_server_buffer; -struct t_config_option *irc_config_look_open_near_server; +struct t_config_option *irc_config_look_open_channel_near_server; +struct t_config_option *irc_config_look_open_pv_near_server; struct t_config_option *irc_config_look_nick_prefix; struct t_config_option *irc_config_look_nick_suffix; struct t_config_option *irc_config_look_nick_completion_smart; @@ -1116,10 +1117,15 @@ irc_config_init () "merge_with_core|merge_without_core|independent", 0, 0, "merge_with_core", NULL, 0, NULL, NULL, &irc_config_change_look_server_buffer, NULL, NULL, NULL); - irc_config_look_open_near_server = weechat_config_new_option ( + irc_config_look_open_channel_near_server = weechat_config_new_option ( irc_config_file, ptr_section, - "open_near_server", "boolean", - N_("open new channels/privates near server"), + "open_channel_near_server", "boolean", + N_("open new channels near server"), + NULL, 0, 0, "off", NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL); + irc_config_look_open_pv_near_server = weechat_config_new_option ( + irc_config_file, ptr_section, + "open_pv_near_server", "boolean", + N_("open new privates near server"), NULL, 0, 0, "off", NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL); irc_config_look_nick_prefix = weechat_config_new_option ( irc_config_file, ptr_section, diff --git a/src/plugins/irc/irc-config.h b/src/plugins/irc/irc-config.h index b6ef3aa3f..004734310 100644 --- a/src/plugins/irc/irc-config.h +++ b/src/plugins/irc/irc-config.h @@ -62,7 +62,8 @@ extern struct t_config_section *irc_config_section_server; extern struct t_config_option *irc_config_look_color_nicks_in_server_messages; extern struct t_config_option *irc_config_look_server_buffer; -extern struct t_config_option *irc_config_look_open_near_server; +extern struct t_config_option *irc_config_look_open_channel_near_server; +extern struct t_config_option *irc_config_look_open_pv_near_server; extern struct t_config_option *irc_config_look_nick_prefix; extern struct t_config_option *irc_config_look_nick_suffix; extern struct t_config_option *irc_config_look_nick_completion_smart;