diff options
author | Sebastien Helleu <flashcode@flashtux.org> | 2009-04-11 14:49:34 +0200 |
---|---|---|
committer | Sebastien Helleu <flashcode@flashtux.org> | 2009-04-11 14:49:34 +0200 |
commit | acb57723343d61cc287a260333c28d802d6ea70f (patch) | |
tree | 6d154d5b7b2e1fcdc3b0702e9a5693d342e710a6 | |
parent | 8ac00cdac6ba3a2caf9a7b282701e3bb22c988de (diff) | |
download | weechat-acb57723343d61cc287a260333c28d802d6ea70f.zip |
Add support of many templates for completion of command arguments, rename default completion items
53 files changed, 3026 insertions, 855 deletions
diff --git a/doc/de/Makefile.am b/doc/de/Makefile.am index 4f7f54b5e..35741d472 100644 --- a/doc/de/Makefile.am +++ b/doc/de/Makefile.am @@ -23,6 +23,7 @@ BOOK_AUTOGEN_INCLUDE = ../include_autogen.xml \ autogen/aspell_options.xml \ autogen/charset_commands.xml \ autogen/charset_options.xml \ + autogen/completions.xml \ autogen/demo_commands.xml \ autogen/fifo_infos.xml \ autogen/irc_commands.xml \ diff --git a/doc/de/autogen/completions.xml b/doc/de/autogen/completions.xml new file mode 100644 index 000000000..946666323 --- /dev/null +++ b/doc/de/autogen/completions.xml @@ -0,0 +1,203 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ********* WARNING! ********* + + This file is autogenerated with docgen.pl script. *** DO NOT EDIT! *** + docgen.pl builds XML doc files to include in many languages +--> + +<row> + <entry>alias</entry> + <entry>alias</entry> + <entry>list of alias</entry> +</row> +<row> + <entry>aspell</entry> + <entry>aspell_langs</entry> + <entry>list of supported langs for aspell</entry> +</row> +<row> + <entry>irc</entry> + <entry>irc_channel</entry> + <entry>current IRC channel</entry> +</row> +<row> + <entry>irc</entry> + <entry>irc_channel_nicks_hosts</entry> + <entry>nicks and hostnames of current IRC channel</entry> +</row> +<row> + <entry>irc</entry> + <entry>irc_channel_topic</entry> + <entry>topic of current IRC channel</entry> +</row> +<row> + <entry>irc</entry> + <entry>irc_channels</entry> + <entry>IRC channels (on all servers)</entry> +</row> +<row> + <entry>irc</entry> + <entry>irc_ignores_numbers</entry> + <entry>numbers for defined ignores</entry> +</row> +<row> + <entry>irc</entry> + <entry>irc_msg_part</entry> + <entry>default part message for IRC channel</entry> +</row> +<row> + <entry>irc</entry> + <entry>irc_server</entry> + <entry>current IRC server</entry> +</row> +<row> + <entry>irc</entry> + <entry>irc_server_nick</entry> + <entry>nick on current IRC server</entry> +</row> +<row> + <entry>irc</entry> + <entry>irc_server_nicks</entry> + <entry>nicks on all channels of current IRC server</entry> +</row> +<row> + <entry>irc</entry> + <entry>irc_servers</entry> + <entry>IRC servers (internal names)</entry> +</row> +<row> + <entry>irc</entry> + <entry>nick</entry> + <entry>nicks of current IRC channel</entry> +</row> +<row> + <entry>lua</entry> + <entry>lua_script</entry> + <entry>list of scripts</entry> +</row> +<row> + <entry>perl</entry> + <entry>perl_script</entry> + <entry>list of scripts</entry> +</row> +<row> + <entry>python</entry> + <entry>python_script</entry> + <entry>list of scripts</entry> +</row> +<row> + <entry>ruby</entry> + <entry>ruby_script</entry> + <entry>list of scripts</entry> +</row> +<row> + <entry>tcl</entry> + <entry>tcl_script</entry> + <entry>list of scripts</entry> +</row> +<row> + <entry>weechat</entry> + <entry>bars_names</entry> + <entry>names of bars</entry> +</row> +<row> + <entry>weechat</entry> + <entry>bars_options</entry> + <entry>options for bars</entry> +</row> +<row> + <entry>weechat</entry> + <entry>buffers_names</entry> + <entry>names of buffers</entry> +</row> +<row> + <entry>weechat</entry> + <entry>buffers_numbers</entry> + <entry>numbers of buffers</entry> +</row> +<row> + <entry>weechat</entry> + <entry>buffers_plugins_names</entry> + <entry>names of buffers (including plugins names)</entry> +</row> +<row> + <entry>weechat</entry> + <entry>commands</entry> + <entry>commands (weechat and plugins)</entry> +</row> +<row> + <entry>weechat</entry> + <entry>config_files</entry> + <entry>configuration files</entry> +</row> +<row> + <entry>weechat</entry> + <entry>config_option_values</entry> + <entry>values for a configuration option</entry> +</row> +<row> + <entry>weechat</entry> + <entry>config_options</entry> + <entry>configuration options</entry> +</row> +<row> + <entry>weechat</entry> + <entry>filename</entry> + <entry>filename</entry> +</row> +<row> + <entry>weechat</entry> + <entry>filters_names</entry> + <entry>names of filters</entry> +</row> +<row> + <entry>weechat</entry> + <entry>infolists</entry> + <entry>names of infolists hooked</entry> +</row> +<row> + <entry>weechat</entry> + <entry>infos</entry> + <entry>names of infos hooked</entry> +</row> +<row> + <entry>weechat</entry> + <entry>keys_codes</entry> + <entry>key codes</entry> +</row> +<row> + <entry>weechat</entry> + <entry>nicks</entry> + <entry>nicks in nicklist of current buffer</entry> +</row> +<row> + <entry>weechat</entry> + <entry>plugins_commands</entry> + <entry>commands defined by plugins</entry> +</row> +<row> + <entry>weechat</entry> + <entry>plugins_names</entry> + <entry>names of plugins</entry> +</row> +<row> + <entry>weechat</entry> + <entry>proxies_names</entry> + <entry>names of proxies</entry> +</row> +<row> + <entry>weechat</entry> + <entry>proxies_options</entry> + <entry>options for proxies</entry> +</row> +<row> + <entry>weechat</entry> + <entry>weechat_commands</entry> + <entry>weechat commands</entry> +</row> +<row> + <entry>xfer</entry> + <entry>nick</entry> + <entry>nicks of DCC chat</entry> +</row> diff --git a/doc/de/autogen/weechat_commands.xml b/doc/de/autogen/weechat_commands.xml index 5e4e6be3c..b385619bd 100644 --- a/doc/de/autogen/weechat_commands.xml +++ b/doc/de/autogen/weechat_commands.xml @@ -150,14 +150,14 @@ functions for command line Cette commande est utilisée par les associations de touches ou les extensions. </programlisting> -<command>/key [key [command [args]]] | [unbind key] | [reset -yes] | [missing]</command> +<command>/key [bind key [command [args]]] | [unbind key] | [reset -yes] | [missing]</command> <programlisting> belegen/freigeben von Tasten - key: display or bind this key to a command - unbind: unbind a key - reset: restore bindings to the default values and delete ALL personal bindings (use carefully!) - missing: add missing keys (using default bindings) + bind: bind a command to a key or display command bound to key + unbind: remove a key binding + reset: restore bindings to the default values and delete ALL personal bindings (use carefully!) +missing: add missing keys (using default bindings) </programlisting> <command>/layout [[save | apply | reset] [buffers | windows]]</command> diff --git a/doc/de/autogen/weechat_options.xml b/doc/de/autogen/weechat_options.xml index ead661fea..b1c9deed1 100644 --- a/doc/de/autogen/weechat_options.xml +++ b/doc/de/autogen/weechat_options.xml @@ -572,7 +572,7 @@ <para>type: string</para> </listitem> <listitem> - <para>values: any string (default value: '%n|%(irc_channels)')</para> + <para>values: any string (default value: '%(nicks)|%(irc_channels)')</para> </listitem> </itemizedlist> diff --git a/doc/de/dev/plugin_c_api.de.xml b/doc/de/dev/plugin_c_api.de.xml index 669a13179..e04330536 100644 --- a/doc/de/dev/plugin_c_api.de.xml +++ b/doc/de/dev/plugin_c_api.de.xml @@ -1836,7 +1836,7 @@ void weechat_exec_on_files ( <option>callback</option>: function called for each file found, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -2490,7 +2490,7 @@ struct t_config_file *weechat_config_new ( configuration file is reloaded with /reload (optional, may be NULL), arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -2629,7 +2629,7 @@ struct t_config_section *weechat_config_new_section ( except if options in your section need custom function), arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -2681,7 +2681,7 @@ struct t_config_section *weechat_config_new_section ( is written in file (should be NULL for most cases, except if your section needs to be written by a custom function), arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -2727,7 +2727,7 @@ struct t_config_section *weechat_config_new_section ( <option>callback_write_default</option>: callback called when default values for section must be written in file, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -2769,7 +2769,7 @@ struct t_config_section *weechat_config_new_section ( new option is created in section (NULL if section does not allow new options to be created), arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -2821,7 +2821,7 @@ struct t_config_section *weechat_config_new_section ( option is deleted (NULL if section does not allow options to be deleted), arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -3095,7 +3095,7 @@ struct t_config_option *weechat_config_new_option ( <option>callback_check_value</option>: callback called to check new value for an option (optional), arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -3136,7 +3136,7 @@ struct t_config_option *weechat_config_new_option ( <option>callback_change</option>: callback called when value of option has changed (optional), arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -3172,7 +3172,7 @@ struct t_config_option *weechat_config_new_option ( <option>callback_delete</option>: callback called when option will be deleted (optional), arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -3727,7 +3727,7 @@ void *weechat_config_option_get_pointer ( <para> <option>property</option>: property name: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Property</entry> @@ -4656,7 +4656,7 @@ const char *weechat_prefix (const char *prefix); <para> <option>prefix</option>: name of prefix: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Prefix</entry> @@ -5037,11 +5037,26 @@ struct t_hook *weechat_hook_command ( completions are possible for one argument, separated by "|". Default completion codes are: <informaltable colsep="0" frame="none"> + <tgroup cols="3"> + <thead> + <row> + <entry>Plugin</entry> + <entry>Code</entry> + <entry>Description</entry> + </row> + </thead> + <tbody> + &completions.xml; + </tbody> + </tgroup> + </informaltable> + Special codes: + <informaltable colsep="0" frame="none"> <tgroup cols="2"> <thead> <row> <entry>Code</entry> - <entry>Completion</entry> + <entry>Description</entry> </row> </thead> <tbody> @@ -5053,71 +5068,6 @@ struct t_hook *weechat_hook_command ( <entry>%*</entry> <entry>Repeat last completion</entry> </row> - <row> - <entry>%b</entry> - <entry>Buffers names</entry> - </row> - <row> - <entry>%B</entry> - <entry>Buffers names (with plugin name)</entry> - </row> - <row> - <entry>%c</entry> - <entry>Configuration files</entry> - </row> - <row> - <entry>%f</entry> - <entry>Filename</entry> - </row> - <row> - <entry>%F</entry> - <entry>Filters</entry> - </row> - <row> - <entry>%h</entry> - <entry>Commands hooked</entry> - </row> - <row> - <entry>%i</entry> - <entry>Infos hooked</entry> - </row> - <row> - <entry>%I</entry> - <entry>Infolists hooked</entry> - </row> - <row> - <entry>%n</entry> - <entry>Nick</entry> - </row> - <row> - <entry>%o</entry> - <entry>Configuration option</entry> - </row> - <row> - <entry>%p</entry> - <entry>Plugin name</entry> - </row> - <row> - <entry>%P</entry> - <entry>Plugin commands</entry> - </row> - <row> - <entry>%r</entry> - <entry>Bar names</entry> - </row> - <row> - <entry>%v</entry> - <entry>Value of configuration option</entry> - </row> - <row> - <entry>%w</entry> - <entry>WeeChat commands</entry> - </row> - <row> - <entry>%(xxx)</entry> - <entry>Custom completion by plugin (xxx is a completion - code added by a plugin)</entry> - </row> </tbody> </tgroup> </informaltable> @@ -5128,7 +5078,7 @@ struct t_hook *weechat_hook_command ( <option>callback</option>: function called when command is used, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -5244,7 +5194,7 @@ struct t_hook *weechat_hook_command_run ( <option>callback</option>: function called when command is run, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -5351,7 +5301,7 @@ struct t_hook *weechat_hook_timer ( <option>callback</option>: function called when time is reached, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -5452,7 +5402,7 @@ struct t_hook *weechat_hook_fd ( <option>callback</option>: function called when a selected event occurs, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -5546,7 +5496,7 @@ struct t_hook *weechat_hook_process ( <option>callback</option>: function called when data from child is available, or when child has ended, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -5684,7 +5634,7 @@ struct t_hook *weechat_hook_connect ( <option>callback</option>: function called when connection is ok or failed, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -5858,7 +5808,7 @@ struct t_hook *weechat_hook_print ( <option>callback</option>: function called when message is printed, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -5981,7 +5931,7 @@ struct t_hook *weechat_hook_signal ( <option>callback</option>: function called when signal is received, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -6124,7 +6074,7 @@ struct t_hook *weechat_hook_config ( <option>callback</option>: function called when configuration option is changed, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -6217,7 +6167,7 @@ struct t_hook *weechat_hook_completion ( is used (user is completing something using this item), arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -6383,7 +6333,7 @@ struct t_hook *weechat_hook_modifier ( <option>callback</option>: function called when modifier is received, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -6547,7 +6497,7 @@ struct t_hook *weechat_hook_info ( <option>callback</option>: function called when info is asked, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -6642,7 +6592,7 @@ struct t_hook *weechat_hook_infolist ( <option>callback</option>: function called when infolist is asked, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -6805,7 +6755,7 @@ struct t_gui_buffer *weechat_buffer_new ( <option>input_callback</option>: function called when input text is entered on buffer, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -6845,7 +6795,7 @@ struct t_gui_buffer *weechat_buffer_new ( <option>close_callback</option>: function called when buffer is closed, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -7294,7 +7244,7 @@ void weechat_buffer_set (struct t_gui_buffer *buffer, const char *property, <para> <option>property</option>: property name: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Name</entry> @@ -7522,7 +7472,7 @@ void weechat_buffer_set_pointer (struct t_gui_buffer *buffer, const char *proper <para> <option>property</option>: property name: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Name</entry> @@ -9005,7 +8955,7 @@ const char *weechat_info_get (const char *info_name, core or other plugin (see plugin doc for infos returned by each plugin). WeeChat core infos are: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Info</entry> diff --git a/doc/docgen.pl b/doc/docgen.pl index 3faf9c347..6562cdb15 100644 --- a/doc/docgen.pl +++ b/doc/docgen.pl @@ -15,8 +15,8 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. # -# Documentation generator for WeeChat: build XML include files with commands -# and options for WeeChat core and plugins. +# Documentation generator for WeeChat: build XML include files with commands, +# options, infos and completions for WeeChat core and plugins. # # Instructions to build config files yourself in WeeChat directories (replace # all paths with your path to WeeChat): @@ -39,7 +39,7 @@ use File::Basename; my $version = "0.1"; -# -------------------------------[ config ]------------------------------------- +# -------------------------------[ config ]------------------------------------ # default path where doc XML files will be written (should be doc/ in sources # package tree) @@ -82,10 +82,14 @@ my @ignore_options = ("aspell\\.dict\\..*", "logger\\.mask\\..*", "weechat\\.proxy\\..*", "weechat\\.bar\\..*", - "weechat\\.debug\\..*", - ); + "weechat\\.debug\\..*"); -# --------------------------------[ init ]-------------------------------------- +# completions to ignore +my @ignore_completions_plugins = ("jabber"); +my @ignore_completions_items = ("jabber.*", + "weeget.*"); + +# -------------------------------[ init ]-------------------------------------- weechat::register("docgen", "FlashCode <flashcode\@flashtux.org>", $version, "GPL", "Doc generator for WeeChat 0.2.7", "", ""); @@ -93,7 +97,7 @@ weechat::hook_command("docgen", "Doc generator", "", "", "", "docgen"); weechat::config_set_plugin("path", $default_path) if (weechat::config_get_plugin("path") eq ""); -# ------------------------------------------------------------------------------ +# ----------------------------------------------------------------------------- # get list of commands in a hash with 3 indexes: plugin, command, xxx sub get_commands @@ -192,6 +196,40 @@ sub get_infos return %infos; } +# get list of completions hooked by plugins in a hash with 3 indexes: plugin, item, xxx +sub get_completions +{ + my %completions; + + # get completions hooked + my $infolist = weechat::infolist_get("hook", "", "completion"); + while (weechat::infolist_next($infolist)) + { + my $completion_item = weechat::infolist_string($infolist, "completion_item"); + my $plugin = weechat::infolist_string($infolist, "plugin_name"); + $plugin = "weechat" if ($plugin eq ""); + + # check if completion item is ignored or not + my $ignore = 0; + foreach my $mask (@ignore_completions_plugins) + { + $ignore = 1 if ($plugin =~ /${mask}/); + } + foreach my $mask (@ignore_completions_items) + { + $ignore = 1 if ($completion_item =~ /${mask}/); + } + + if ($ignore ne 1) + { + $completions{$plugin}{$completion_item}{"description"} = weechat::infolist_string($infolist, "description"); + } + } + weechat::infolist_free($infolist); + + return %completions; +} + # escape string for XML output sub escape { @@ -207,6 +245,7 @@ sub docgen my %plugin_commands = get_commands(); my %plugin_options = get_options(); my %plugin_infos = get_infos(); + my %plugin_completions = get_completions(); # xml header (comment) for all files my $xml_header = @@ -235,6 +274,8 @@ sub docgen my $num_files_options_updated = 0; my $num_files_infos = 0; my $num_files_infos_updated = 0; + my $num_files_completions = 0; + my $num_files_completions_updated = 0; setlocale(LC_MESSAGES, $locale.".UTF-8"); my $d = Locale::gettext->domain_raw("weechat"); @@ -415,23 +456,65 @@ sub docgen weechat::print("", weechat::prefix("error")."docgen error: unable to write file '$filename'"); } } + + # write completions hooked + my $filename = $dir."completions.xml"; + if (open(FILE, ">".$filename.".tmp")) + { + print FILE $xml_header; + foreach my $plugin (sort keys %plugin_completions) + { + foreach my $completion_item (sort keys %{$plugin_completions{$plugin}}) + { + my $description = $plugin_completions{$plugin}{$completion_item}{"description"}; + $description = $d->get($description) if ($description ne ""); + + print FILE "<row>\n"; + print FILE " <entry>".escape($plugin)."</entry>\n"; + print FILE " <entry>".escape($completion_item)."</entry>\n"; + print FILE " <entry>".escape($description)."</entry>\n"; + print FILE "</row>\n"; + } + } + #weechat::print("", "docgen: file ok: '$filename'"); + my $rc = system("diff ".$filename." ".$filename.".tmp >/dev/null 2>&1"); + if ($rc != 0) + { + system("mv -f ".$filename.".tmp ".$filename); + $num_files_updated++; + $num_files_completions_updated++; + } + else + { + system("rm ".$filename.".tmp"); + } + $num_files++; + $num_files_completions++; + close(FILE); + } + else + { + weechat::print("", weechat::prefix("error")."docgen error: unable to write file '$filename'"); + } } else { weechat::print("", weechat::prefix("error")."docgen error: directory '$dir' does not exist"); } my $total_files = $num_files_commands + $num_files_options - + $num_files_infos; + + $num_files_infos + $num_files_completions; my $total_files_updated = $num_files_commands_updated + $num_files_options_updated - + $num_files_infos_updated; + + $num_files_infos_updated + $num_files_completions_updated; weechat::print("", "docgen: ".$locale.": ".$total_files." files (" .$num_files_commands." cmd, " .$num_files_options." opt, " - .$num_files_infos." infos) -- " + .$num_files_infos." infos, " + .$num_files_completions." complt) -- " .$total_files_updated." updated (" .$num_files_commands_updated." cmd, " .$num_files_options_updated." opt, " - .$num_files_infos_updated." infos)"); + .$num_files_infos_updated." infos, " + .$num_files_completions_updated." complt)"); } weechat::print("", "docgen: total: ".$num_files." files (".$num_files_updated." updated)"); @@ -456,6 +539,8 @@ sub docgen { print FILE "<!ENTITY ".$plugin."_infos.xml SYSTEM \"autogen/".$plugin."_infos.xml\">\n"; } + print FILE "\n<!-- completions hooked -->\n\n"; + print FILE "<!ENTITY completions.xml SYSTEM \"autogen/completions.xml\">\n"; close(FILE); my $rc = system("diff ".$filename." ".$filename.".tmp >/dev/null 2>&1"); if ($rc != 0) diff --git a/doc/en/Makefile.am b/doc/en/Makefile.am index 030d8e9c5..641fcdc6f 100644 --- a/doc/en/Makefile.am +++ b/doc/en/Makefile.am @@ -23,6 +23,7 @@ BOOK_AUTOGEN_INCLUDE = ../include_autogen.xml \ autogen/aspell_options.xml \ autogen/charset_commands.xml \ autogen/charset_options.xml \ + autogen/completions.xml \ autogen/demo_commands.xml \ autogen/fifo_infos.xml \ autogen/irc_commands.xml \ diff --git a/doc/en/autogen/completions.xml b/doc/en/autogen/completions.xml new file mode 100644 index 000000000..946666323 --- /dev/null +++ b/doc/en/autogen/completions.xml @@ -0,0 +1,203 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ********* WARNING! ********* + + This file is autogenerated with docgen.pl script. *** DO NOT EDIT! *** + docgen.pl builds XML doc files to include in many languages +--> + +<row> + <entry>alias</entry> + <entry>alias</entry> + <entry>list of alias</entry> +</row> +<row> + <entry>aspell</entry> + <entry>aspell_langs</entry> + <entry>list of supported langs for aspell</entry> +</row> +<row> + <entry>irc</entry> + <entry>irc_channel</entry> + <entry>current IRC channel</entry> +</row> +<row> + <entry>irc</entry> + <entry>irc_channel_nicks_hosts</entry> + <entry>nicks and hostnames of current IRC channel</entry> +</row> +<row> + <entry>irc</entry> + <entry>irc_channel_topic</entry> + <entry>topic of current IRC channel</entry> +</row> +<row> + <entry>irc</entry> + <entry>irc_channels</entry> + <entry>IRC channels (on all servers)</entry> +</row> +<row> + <entry>irc</entry> + <entry>irc_ignores_numbers</entry> + <entry>numbers for defined ignores</entry> +</row> +<row> + <entry>irc</entry> + <entry>irc_msg_part</entry> + <entry>default part message for IRC channel</entry> +</row> +<row> + <entry>irc</entry> + <entry>irc_server</entry> + <entry>current IRC server</entry> +</row> +<row> + <entry>irc</entry> + <entry>irc_server_nick</entry> + <entry>nick on current IRC server</entry> +</row> +<row> + <entry>irc</entry> + <entry>irc_server_nicks</entry> + <entry>nicks on all channels of current IRC server</entry> +</row> +<row> + <entry>irc</entry> + <entry>irc_servers</entry> + <entry>IRC servers (internal names)</entry> +</row> +<row> + <entry>irc</entry> + <entry>nick</entry> + <entry>nicks of current IRC channel</entry> +</row> +<row> + <entry>lua</entry> + <entry>lua_script</entry> + <entry>list of scripts</entry> +</row> +<row> + <entry>perl</entry> + <entry>perl_script</entry> + <entry>list of scripts</entry> +</row> +<row> + <entry>python</entry> + <entry>python_script</entry> + <entry>list of scripts</entry> +</row> +<row> + <entry>ruby</entry> + <entry>ruby_script</entry> + <entry>list of scripts</entry> +</row> +<row> + <entry>tcl</entry> + <entry>tcl_script</entry> + <entry>list of scripts</entry> +</row> +<row> + <entry>weechat</entry> + <entry>bars_names</entry> + <entry>names of bars</entry> +</row> +<row> + <entry>weechat</entry> + <entry>bars_options</entry> + <entry>options for bars</entry> +</row> +<row> + <entry>weechat</entry> + <entry>buffers_names</entry> + <entry>names of buffers</entry> +</row> +<row> + <entry>weechat</entry> + <entry>buffers_numbers</entry> + <entry>numbers of buffers</entry> +</row> +<row> + <entry>weechat</entry> + <entry>buffers_plugins_names</entry> + <entry>names of buffers (including plugins names)</entry> +</row> +<row> + <entry>weechat</entry> + <entry>commands</entry> + <entry>commands (weechat and plugins)</entry> +</row> +<row> + <entry>weechat</entry> + <entry>config_files</entry> + <entry>configuration files</entry> +</row> +<row> + <entry>weechat</entry> + <entry>config_option_values</entry> + <entry>values for a configuration option</entry> +</row> +<row> + <entry>weechat</entry> + <entry>config_options</entry> + <entry>configuration options</entry> +</row> +<row> + <entry>weechat</entry> + <entry>filename</entry> + <entry>filename</entry> +</row> +<row> + <entry>weechat</entry> + <entry>filters_names</entry> + <entry>names of filters</entry> +</row> +<row> + <entry>weechat</entry> + <entry>infolists</entry> + <entry>names of infolists hooked</entry> +</row> +<row> + <entry>weechat</entry> + <entry>infos</entry> + <entry>names of infos hooked</entry> +</row> +<row> + <entry>weechat</entry> + <entry>keys_codes</entry> + <entry>key codes</entry> +</row> +<row> + <entry>weechat</entry> + <entry>nicks</entry> + <entry>nicks in nicklist of current buffer</entry> +</row> +<row> + <entry>weechat</entry> + <entry>plugins_commands</entry> + <entry>commands defined by plugins</entry> +</row> +<row> + <entry>weechat</entry> + <entry>plugins_names</entry> + <entry>names of plugins</entry> +</row> +<row> + <entry>weechat</entry> + <entry>proxies_names</entry> + <entry>names of proxies</entry> +</row> +<row> + <entry>weechat</entry> + <entry>proxies_options</entry> + <entry>options for proxies</entry> +</row> +<row> + <entry>weechat</entry> + <entry>weechat_commands</entry> + <entry>weechat commands</entry> +</row> +<row> + <entry>xfer</entry> + <entry>nick</entry> + <entry>nicks of DCC chat</entry> +</row> diff --git a/doc/en/autogen/weechat_commands.xml b/doc/en/autogen/weechat_commands.xml index e9740ea33..fb714edf6 100644 --- a/doc/en/autogen/weechat_commands.xml +++ b/doc/en/autogen/weechat_commands.xml @@ -150,14 +150,14 @@ functions for command line Cette commande est utilisée par les associations de touches ou les extensions. </programlisting> -<command>/key [key [command [args]]] | [unbind key] | [reset -yes] | [missing]</command> +<command>/key [bind key [command [args]]] | [unbind key] | [reset -yes] | [missing]</command> <programlisting> bind/unbind keys - key: display or bind this key to a command - unbind: unbind a key - reset: restore bindings to the default values and delete ALL personal bindings (use carefully!) - missing: add missing keys (using default bindings) + bind: bind a command to a key or display command bound to key + unbind: remove a key binding + reset: restore bindings to the default values and delete ALL personal bindings (use carefully!) +missing: add missing keys (using default bindings) </programlisting> <command>/layout [[save | apply | reset] [buffers | windows]]</command> diff --git a/doc/en/autogen/weechat_options.xml b/doc/en/autogen/weechat_options.xml index 0015063b2..20779ea41 100644 --- a/doc/en/autogen/weechat_options.xml +++ b/doc/en/autogen/weechat_options.xml @@ -572,7 +572,7 @@ <para>type: string</para> </listitem> <listitem> - <para>values: any string (default value: '%n|%(irc_channels)')</para> + <para>values: any string (default value: '%(nicks)|%(irc_channels)')</para> </listitem> </itemizedlist> diff --git a/doc/en/dev/plugin_c_api.en.xml b/doc/en/dev/plugin_c_api.en.xml index b5f01bff4..f4a50efd7 100644 --- a/doc/en/dev/plugin_c_api.en.xml +++ b/doc/en/dev/plugin_c_api.en.xml @@ -1835,7 +1835,7 @@ void weechat_exec_on_files ( <option>callback</option>: function called for each file found, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -2489,7 +2489,7 @@ struct t_config_file *weechat_config_new ( configuration file is reloaded with /reload (optional, may be NULL), arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -2628,7 +2628,7 @@ struct t_config_section *weechat_config_new_section ( except if options in your section need custom function), arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -2680,7 +2680,7 @@ struct t_config_section *weechat_config_new_section ( is written in file (should be NULL for most cases, except if your section needs to be written by a custom function), arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -2726,7 +2726,7 @@ struct t_config_section *weechat_config_new_section ( <option>callback_write_default</option>: callback called when default values for section must be written in file, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -2768,7 +2768,7 @@ struct t_config_section *weechat_config_new_section ( new option is created in section (NULL if section does not allow new options to be created), arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -2820,7 +2820,7 @@ struct t_config_section *weechat_config_new_section ( option is deleted (NULL if section does not allow options to be deleted), arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -3094,7 +3094,7 @@ struct t_config_option *weechat_config_new_option ( <option>callback_check_value</option>: callback called to check new value for an option (optional), arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -3135,7 +3135,7 @@ struct t_config_option *weechat_config_new_option ( <option>callback_change</option>: callback called when value of option has changed (optional), arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -3171,7 +3171,7 @@ struct t_config_option *weechat_config_new_option ( <option>callback_delete</option>: callback called when option will be deleted (optional), arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -3726,7 +3726,7 @@ void *weechat_config_option_get_pointer ( <para> <option>property</option>: property name: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Property</entry> @@ -4655,7 +4655,7 @@ const char *weechat_prefix (const char *prefix); <para> <option>prefix</option>: name of prefix: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Prefix</entry> @@ -5036,11 +5036,26 @@ struct t_hook *weechat_hook_command ( completions are possible for one argument, separated by "|". Default completion codes are: <informaltable colsep="0" frame="none"> + <tgroup cols="3"> + <thead> + <row> + <entry>Plugin</entry> + <entry>Code</entry> + <entry>Description</entry> + </row> + </thead> + <tbody> + &completions.xml; + </tbody> + </tgroup> + </informaltable> + Special codes: + <informaltable colsep="0" frame="none"> <tgroup cols="2"> <thead> <row> <entry>Code</entry> - <entry>Completion</entry> + <entry>Description</entry> </row> </thead> <tbody> @@ -5052,71 +5067,6 @@ struct t_hook *weechat_hook_command ( <entry>%*</entry> <entry>Repeat last completion</entry> </row> - <row> - <entry>%b</entry> - <entry>Buffers names</entry> - </row> - <row> - <entry>%B</entry> - <entry>Buffers names (with plugin name)</entry> - </row> - <row> - <entry>%c</entry> - <entry>Configuration files</entry> - </row> - <row> - <entry>%f</entry> - <entry>Filename</entry> - </row> - <row> - <entry>%F</entry> - <entry>Filters</entry> - </row> - <row> - <entry>%h</entry> - <entry>Commands hooked</entry> - </row> - <row> - <entry>%i</entry> - <entry>Infos hooked</entry> - </row> - <row> - <entry>%I</entry> - <entry>Infolists hooked</entry> - </row> - <row> - <entry>%n</entry> - <entry>Nick</entry> - </row> - <row> - <entry>%o</entry> - <entry>Configuration option</entry> - </row> - <row> - <entry>%p</entry> - <entry>Plugin name</entry> - </row> - <row> - <entry>%P</entry> - <entry>Plugin commands</entry> - </row> - <row> - <entry>%r</entry> - <entry>Bar names</entry> - </row> - <row> - <entry>%v</entry> - <entry>Value of configuration option</entry> - </row> - <row> - <entry>%w</entry> - <entry>WeeChat commands</entry> - </row> - <row> - <entry>%(xxx)</entry> - <entry>Custom completion by plugin (xxx is a completion - code added by a plugin)</entry> - </row> </tbody> </tgroup> </informaltable> @@ -5127,7 +5077,7 @@ struct t_hook *weechat_hook_command ( <option>callback</option>: function called when command is used, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -5243,7 +5193,7 @@ struct t_hook *weechat_hook_command_run ( <option>callback</option>: function called when command is run, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -5350,7 +5300,7 @@ struct t_hook *weechat_hook_timer ( <option>callback</option>: function called when time is reached, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -5451,7 +5401,7 @@ struct t_hook *weechat_hook_fd ( <option>callback</option>: function called when a selected event occurs, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -5545,7 +5495,7 @@ struct t_hook *weechat_hook_process ( <option>callback</option>: function called when data from child is available, or when child has ended, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -5683,7 +5633,7 @@ struct t_hook *weechat_hook_connect ( <option>callback</option>: function called when connection is ok or failed, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -5857,7 +5807,7 @@ struct t_hook *weechat_hook_print ( <option>callback</option>: function called when message is printed, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -5980,7 +5930,7 @@ struct t_hook *weechat_hook_signal ( <option>callback</option>: function called when signal is received, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -6123,7 +6073,7 @@ struct t_hook *weechat_hook_config ( <option>callback</option>: function called when configuration option is changed, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -6216,7 +6166,7 @@ struct t_hook *weechat_hook_completion ( is used (user is completing something using this item), arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -6382,7 +6332,7 @@ struct t_hook *weechat_hook_modifier ( <option>callback</option>: function called when modifier is received, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -6546,7 +6496,7 @@ struct t_hook *weechat_hook_info ( <option>callback</option>: function called when info is asked, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -6641,7 +6591,7 @@ struct t_hook *weechat_hook_infolist ( <option>callback</option>: function called when infolist is asked, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -6804,7 +6754,7 @@ struct t_gui_buffer *weechat_buffer_new ( <option>input_callback</option>: function called when input text is entered on buffer, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -6844,7 +6794,7 @@ struct t_gui_buffer *weechat_buffer_new ( <option>close_callback</option>: function called when buffer is closed, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -7293,7 +7243,7 @@ void weechat_buffer_set (struct t_gui_buffer *buffer, const char *property, <para> <option>property</option>: property name: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Name</entry> @@ -7521,7 +7471,7 @@ void weechat_buffer_set_pointer (struct t_gui_buffer *buffer, const char *proper <para> <option>property</option>: property name: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Name</entry> @@ -9004,7 +8954,7 @@ const char *weechat_info_get (const char *info_name, core or other plugin (see plugin doc for infos returned by each plugin). WeeChat core infos are: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Info</entry> diff --git a/doc/fr/Makefile.am b/doc/fr/Makefile.am index 7c9c7e9fd..9483f23ee 100644 --- a/doc/fr/Makefile.am +++ b/doc/fr/Makefile.am @@ -23,6 +23,7 @@ BOOK_AUTOGEN_INCLUDE = ../include_autogen.xml \ autogen/aspell_options.xml \ autogen/charset_commands.xml \ autogen/charset_options.xml \ + autogen/completions.xml \ autogen/demo_commands.xml \ autogen/fifo_infos.xml \ autogen/irc_commands.xml \ diff --git a/doc/fr/autogen/completions.xml b/doc/fr/autogen/completions.xml new file mode 100644 index 000000000..92c4d092a --- /dev/null +++ b/doc/fr/autogen/completions.xml @@ -0,0 +1,203 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ********* WARNING! ********* + + This file is autogenerated with docgen.pl script. *** DO NOT EDIT! *** + docgen.pl builds XML doc files to include in many languages +--> + +<row> + <entry>alias</entry> + <entry>alias</entry> + <entry>liste des alias</entry> +</row> +<row> + <entry>aspell</entry> + <entry>aspell_langs</entry> + <entry>liste des langues supportées pour aspell</entry> +</row> +<row> + <entry>irc</entry> + <entry>irc_channel</entry> + <entry>canal IRC courant</entry> +</row> +<row> + <entry>irc</entry> + <entry>irc_channel_nicks_hosts</entry> + <entry>pseudos et noms d'hôtes du canal IRC courant</entry> +</row> +<row> + <entry>irc</entry> + <entry>irc_channel_topic</entry> + <entry>titre du canal IRC courant</entry> +</row> +<row> + <entry>irc</entry> + <entry>irc_channels</entry> + <entry>canaux IRC (sur tous les serveurs)</entry> +</row> +<row> + <entry>irc</entry> + <entry>irc_ignores_numbers</entry> + <entry>numéros pour les ignores définis</entry> +</row> +<row> + <entry>irc</entry> + <entry>irc_msg_part</entry> + <entry>message de fin par défaut pour le canal IRC</entry> +</row> +<row> + <entry>irc</entry> + <entry>irc_server</entry> + <entry>serveur IRC courant</entry> +</row> +<row> + <entry>irc</entry> + <entry>irc_server_nick</entry> + <entry>pseudo sur le serveur IRC courant</entry> +</row> +<row> + <entry>irc</entry> + <entry>irc_server_nicks</entry> + <entry>pseudos sur tous les canaux du serveur IRC courant</entry> +</row> +<row> + <entry>irc</entry> + <entry>irc_servers</entry> + <entry>serveurs IRC (noms internes)</entry> +</row> +<row> + <entry>irc</entry> + <entry>nick</entry> + <entry>pseudos du canal IRC courant</entry> +</row> +<row> + <entry>lua</entry> + <entry>lua_script</entry> + <entry>liste des scripts</entry> +</row> +<row> + <entry>perl</entry> + <entry>perl_script</entry> + <entry>liste des scripts</entry> +</row> +<row> + <entry>python</entry> + <entry>python_script</entry> + <entry>liste des scripts</entry> +</row> +<row> + <entry>ruby</entry> + <entry>ruby_script</entry> + <entry>liste des scripts</entry> +</row> +<row> + <entry>tcl</entry> + <entry>tcl_script</entry> + <entry>liste des scripts</entry> +</row> +<row> + <entry>weechat</entry> + <entry>bars_names</entry> + <entry>noms des barres</entry> +</row> +<row> + <entry>weechat</entry> + <entry>bars_options</entry> + <entry>options pour les barres</entry> +</row> +<row> + <entry>weechat</entry> + <entry>buffers_names</entry> + <entry>noms des tampons</entry> +</row> +<row> + <entry>weechat</entry> + <entry>buffers_numbers</entry> + <entry>numéros des tampons</entry> +</row> +<row> + <entry>weechat</entry> + <entry>buffers_plugins_names</entry> + <entry>noms des tampons (incluant les noms d'extensions)</entry> +</row> +<row> + <entry>weechat</entry> + <entry>commands</entry> + <entry>commandes (weechat et extensions)</entry> +</row> +<row> + <entry>weechat</entry> + <entry>config_files</entry> + <entry>fichiers de configuration</entry> +</row> +<row> + <entry>weechat</entry> + <entry>config_option_values</entry> + <entry>valeurs pour une option de configuration</entry> +</row> +<row> + <entry>weechat</entry> + <entry>config_options</entry> + <entry>options de configuration</entry> +</row> +<row> + <entry>weechat</entry> + <entry>filename</entry> + <entry>nom de fichier</entry> +</row> +<row> + <entry>weechat</entry> + <entry>filters_names</entry> + <entry>noms des filtres</entry> +</row> +<row> + <entry>weechat</entry> + <entry>infolists</entry> + <entry>noms des infolistes accrochées</entry> +</row> +<row> + <entry>weechat</entry> + <entry>infos</entry> + <entry>noms des infos accrochées</entry> +</row> +<row> + <entry>weechat</entry> + <entry>keys_codes</entry> + <entry>codes des touches</entry> +</row> +<row> + <entry>weechat</entry> + <entry>nicks</entry> + <entry>pseudos dans la liste des pseudos du tampon courant</entry> +</row> +<row> + <entry>weechat</entry> + <entry>plugins_commands</entry> + <entry>commandes définies par les extensions</entry> +</row> +<row> + <entry>weechat</entry> + <entry>plugins_names</entry> + <entry>noms des extensions</entry> +</row> +<row> + <entry>weechat</entry> + <entry>proxies_names</entry> + <entry>noms des proxies</entry> +</row> +<row> + <entry>weechat</entry> + <entry>proxies_options</entry> + <entry>options pour les proxies</entry> +</row> +<row> + <entry>weechat</entry> + <entry>weechat_commands</entry> + <entry>commandes weechat</entry> +</row> +<row> + <entry>xfer</entry> + <entry>nick</entry> + <entry>pseudos de la discussion DCC</entry> +</row> diff --git a/doc/fr/autogen/weechat_commands.xml b/doc/fr/autogen/weechat_commands.xml index e1f2412ed..dd720cb75 100644 --- a/doc/fr/autogen/weechat_commands.xml +++ b/doc/fr/autogen/weechat_commands.xml @@ -149,14 +149,14 @@ fonctions pour la ligne de commande Cette commande est utilisée par les associations de touches ou les extensions. </programlisting> -<command>/key [touche [commande [args]]] | [unbind touche] | [reset -yes] | [missing]</command> +<command>/key [bind touche [commande [args]]] | [unbind touche] | [reset -yes] | [missing]</command> <programlisting> associer/libérer des touches - touche: voir ou associer cette touche à une commande - unbind: supprimer l'association à une touche - reset: restaure les touches aux valeurs par défaut et supprime TOUTES les touches personnelles (utiliser avec précaution !) - missing: ajoute les touches manquantes (en utilisant les touches par défaut) + bind: associer une commande à une touche ou afficher la commande associée à la touche + unbind: supprimer l'association à une touche + reset: restaure les touches aux valeurs par défaut et supprime TOUTES les touches personnelles (utiliser avec précaution !) +missing: ajoute les touches manquantes (en utilisant les touches par défaut) </programlisting> <command>/layout [[save | apply | reset] [buffers | windows]]</command> diff --git a/doc/fr/autogen/weechat_options.xml b/doc/fr/autogen/weechat_options.xml index 89ecdfebd..10b3c5087 100644 --- a/doc/fr/autogen/weechat_options.xml +++ b/doc/fr/autogen/weechat_options.xml @@ -572,7 +572,7 @@ <para>type: chaîne</para> </listitem> <listitem> - <para>valeurs: toute chaîne (valeur par défaut: '%n|%(irc_channels)')</para> + <para>valeurs: toute chaîne (valeur par défaut: '%(nicks)|%(irc_channels)')</para> </listitem> </itemizedlist> diff --git a/doc/fr/dev/plugin_c_api.fr.xml b/doc/fr/dev/plugin_c_api.fr.xml index fcdf963bc..ecf45a0df 100644 --- a/doc/fr/dev/plugin_c_api.fr.xml +++ b/doc/fr/dev/plugin_c_api.fr.xml @@ -1836,7 +1836,7 @@ void weechat_exec_on_files ( <option>callback</option>: function called for each file found, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -2490,7 +2490,7 @@ struct t_config_file *weechat_config_new ( configuration file is reloaded with /reload (optional, may be NULL), arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -2629,7 +2629,7 @@ struct t_config_section *weechat_config_new_section ( except if options in your section need custom function), arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -2681,7 +2681,7 @@ struct t_config_section *weechat_config_new_section ( is written in file (should be NULL for most cases, except if your section needs to be written by a custom function), arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -2727,7 +2727,7 @@ struct t_config_section *weechat_config_new_section ( <option>callback_write_default</option>: callback called when default values for section must be written in file, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -2769,7 +2769,7 @@ struct t_config_section *weechat_config_new_section ( new option is created in section (NULL if section does not allow new options to be created), arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -2821,7 +2821,7 @@ struct t_config_section *weechat_config_new_section ( option is deleted (NULL if section does not allow options to be deleted), arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -3095,7 +3095,7 @@ struct t_config_option *weechat_config_new_option ( <option>callback_check_value</option>: callback called to check new value for an option (optional), arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -3136,7 +3136,7 @@ struct t_config_option *weechat_config_new_option ( <option>callback_change</option>: callback called when value of option has changed (optional), arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -3172,7 +3172,7 @@ struct t_config_option *weechat_config_new_option ( <option>callback_delete</option>: callback called when option will be deleted (optional), arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -3727,7 +3727,7 @@ void *weechat_config_option_get_pointer ( <para> <option>property</option>: property name: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Property</entry> @@ -4656,7 +4656,7 @@ const char *weechat_prefix (const char *prefix); <para> <option>prefix</option>: name of prefix: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Prefix</entry> @@ -5037,11 +5037,26 @@ struct t_hook *weechat_hook_command ( completions are possible for one argument, separated by "|". Default completion codes are: <informaltable colsep="0" frame="none"> + <tgroup cols="3"> + <thead> + <row> + <entry>Plugin</entry> + <entry>Code</entry> + <entry>Description</entry> + </row> + </thead> + <tbody> + &completions.xml; + </tbody> + </tgroup> + </informaltable> + Special codes: + <informaltable colsep="0" frame="none"> <tgroup cols="2"> <thead> <row> <entry>Code</entry> - <entry>Completion</entry> + <entry>Description</entry> </row> </thead> <tbody> @@ -5053,71 +5068,6 @@ struct t_hook *weechat_hook_command ( <entry>%*</entry> <entry>Repeat last completion</entry> </row> - <row> - <entry>%b</entry> - <entry>Buffers names</entry> - </row> - <row> - <entry>%B</entry> - <entry>Buffers names (with plugin name)</entry> - </row> - <row> - <entry>%c</entry> - <entry>Configuration files</entry> - </row> - <row> - <entry>%f</entry> - <entry>Filename</entry> - </row> - <row> - <entry>%F</entry> - <entry>Filters</entry> - </row> - <row> - <entry>%h</entry> - <entry>Commands hooked</entry> - </row> - <row> - <entry>%i</entry> - <entry>Infos hooked</entry> - </row> - <row> - <entry>%I</entry> - <entry>Infolists hooked</entry> - </row> - <row> - <entry>%n</entry> - <entry>Nick</entry> - </row> - <row> - <entry>%o</entry> - <entry>Configuration option</entry> - </row> - <row> - <entry>%p</entry> - <entry>Plugin name</entry> - </row> - <row> - <entry>%P</entry> - <entry>Plugin commands</entry> - </row> - <row> - <entry>%r</entry> - <entry>Bar names</entry> - </row> - <row> - <entry>%v</entry> - <entry>Value of configuration option</entry> - </row> - <row> - <entry>%w</entry> - <entry>WeeChat commands</entry> - </row> - <row> - <entry>%(xxx)</entry> - <entry>Custom completion by plugin (xxx is a completion - code added by a plugin)</entry> - </row> </tbody> </tgroup> </informaltable> @@ -5128,7 +5078,7 @@ struct t_hook *weechat_hook_command ( <option>callback</option>: function called when command is used, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -5244,7 +5194,7 @@ struct t_hook *weechat_hook_command_run ( <option>callback</option>: function called when command is run, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -5351,7 +5301,7 @@ struct t_hook *weechat_hook_timer ( <option>callback</option>: function called when time is reached, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -5452,7 +5402,7 @@ struct t_hook *weechat_hook_fd ( <option>callback</option>: function called when a selected event occurs, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -5546,7 +5496,7 @@ struct t_hook *weechat_hook_process ( <option>callback</option>: function called when data from child is available, or when child has ended, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -5684,7 +5634,7 @@ struct t_hook *weechat_hook_connect ( <option>callback</option>: function called when connection is ok or failed, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -5858,7 +5808,7 @@ struct t_hook *weechat_hook_print ( <option>callback</option>: function called when message is printed, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -5981,7 +5931,7 @@ struct t_hook *weechat_hook_signal ( <option>callback</option>: function called when signal is received, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -6124,7 +6074,7 @@ struct t_hook *weechat_hook_config ( <option>callback</option>: function called when configuration option is changed, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -6217,7 +6167,7 @@ struct t_hook *weechat_hook_completion ( is used (user is completing something using this item), arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -6383,7 +6333,7 @@ struct t_hook *weechat_hook_modifier ( <option>callback</option>: function called when modifier is received, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -6547,7 +6497,7 @@ struct t_hook *weechat_hook_info ( <option>callback</option>: function called when info is asked, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -6642,7 +6592,7 @@ struct t_hook *weechat_hook_infolist ( <option>callback</option>: function called when infolist is asked, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -6805,7 +6755,7 @@ struct t_gui_buffer *weechat_buffer_new ( <option>input_callback</option>: function called when input text is entered on buffer, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -6845,7 +6795,7 @@ struct t_gui_buffer *weechat_buffer_new ( <option>close_callback</option>: function called when buffer is closed, arguments: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Type</entry> @@ -7294,7 +7244,7 @@ void weechat_buffer_set (struct t_gui_buffer *buffer, const char *property, <para> <option>property</option>: property name: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Name</entry> @@ -7522,7 +7472,7 @@ void weechat_buffer_set_pointer (struct t_gui_buffer *buffer, const char *proper <para> <option>property</option>: property name: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Name</entry> @@ -9005,7 +8955,7 @@ const char *weechat_info_get (const char *info_name, core or other plugin (see plugin doc for infos returned by each plugin). WeeChat core infos are: <informaltable colsep="0" frame="none"> - <tgroup cols="2"> + <tgroup cols="3"> <thead> <row> <entry>Info</entry> diff --git a/doc/include_autogen.xml b/doc/include_autogen.xml index 633ff42a9..6ce8297f0 100644 --- a/doc/include_autogen.xml +++ b/doc/include_autogen.xml @@ -43,3 +43,7 @@ <!ENTITY tcl_infos.xml SYSTEM "autogen/tcl_infos.xml"> <!ENTITY weechat_infos.xml SYSTEM "autogen/weechat_infos.xml"> <!ENTITY xfer_infos.xml SYSTEM "autogen/xfer_infos.xml"> + +<!-- completions hooked --> + +<!ENTITY completions.xml SYSTEM "autogen/completions.xml"> @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.2.7-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2009-04-07 18:12+0200\n" +"POT-Creation-Date: 2009-04-09 12:57+0200\n" "PO-Revision-Date: 2009-01-03 00:42+0100\n" "Last-Translator: Jiri Golembiovsky <golemj@gmail.com>\n" "Language-Team: weechat-dev <weechat-dev@nongnu.org>\n" @@ -352,6 +352,24 @@ msgstr "Žádné pole nejsou definovány" msgid "Key bindings (%d):" msgstr "Klávesové zkratky:" +msgid "Key:" +msgstr "Klávesa:" + +msgid "No key found" +msgstr "Žádná klávesa nenalezena" + +#, c-format +msgid "%sError: unable to bind key \"%s\"" +msgstr "%sChyba: nemohu napojit kalávesu \"%s\"" + +#, c-format +msgid "Key \"%s\" unbound" +msgstr "Klávesa \"%s\" odpojena" + +#, c-format +msgid "%sError: unable to unbind key \"%s\"" +msgstr "%sChyba: nemohu odpojit klávesu \"%s\"" + msgid "Default key bindings restored" msgstr "Výchozí klávesové zkratky obnoveny" @@ -368,24 +386,6 @@ msgstr[0] "uživatel byl zablokován" msgstr[1] "uživatel byl zablokován" #, c-format -msgid "Key \"%s\" unbound" -msgstr "Klávesa \"%s\" odpojena" - -#, c-format -msgid "%sError: unable to unbind key \"%s\"" -msgstr "%sChyba: nemohu odpojit klávesu \"%s\"" - -msgid "Key:" -msgstr "Klávesa:" - -msgid "No key found" -msgstr "Žádná klávesa nenalezena" - -#, c-format -msgid "%sError: unable to bind key \"%s\"" -msgstr "%sChyba: nemohu napojit kalávesu \"%s\"" - -#, c-format msgid "leaf: id: %d, parent: %d, plugin: \"%s\", buffer: \"%s\"" msgstr "list: id: %d, rodič: %d, plugin: \"%s\", buffer: \"%s\"" @@ -963,18 +963,18 @@ msgid "bind/unbind keys" msgstr "napojit/odpojit klávesy" #, fuzzy -msgid "[key [command [args]]] | [unbind key] | [reset -yes] | [missing]" +msgid "[bind key [command [args]]] | [unbind key] | [reset -yes] | [missing]" msgstr "" "[klávesa [funkce/příkaz]] [unbind klávesa] [functions] [call funkce " "[\"argumenty\"]] [reset -yes]" #, fuzzy msgid "" -" key: display or bind this key to a command\n" -" unbind: unbind a key\n" -" reset: restore bindings to the default values and delete ALL personal " +" bind: bind a command to a key or display command bound to key\n" +" unbind: remove a key binding\n" +" reset: restore bindings to the default values and delete ALL personal " "bindings (use carefully!)\n" -" missing: add missing keys (using default bindings)" +"missing: add missing keys (using default bindings)" msgstr "" " klávesa: zobrazí nebo napojí klávesu na vnitřní funkci nebo příkaz " "(začínající \"/\")\n" @@ -2047,6 +2047,84 @@ msgid "Not enough memory for new line" msgstr "Nedostatek paměti pro nový řádek\n" #, fuzzy +msgid "names of buffers" +msgstr "nevalidní délka pro buffer" + +#, fuzzy +msgid "numbers of buffers" +msgstr "nevalidní délka pro buffer" + +msgid "names of buffers (including plugins names)" +msgstr "" + +#, fuzzy +msgid "configuration files" +msgstr "říct serveru, aby znovu načetl svůj konfigurační soubor" + +#, fuzzy +msgid "filename" +msgstr "uživatel byl zablokován" + +#, fuzzy +msgid "names of filters" +msgstr "Seznam pro aliasy:\n" + +#, fuzzy +msgid "commands (weechat and plugins)" +msgstr "Tento příkaz je používán napojenou klávesou nebo pluginy." + +#, fuzzy +msgid "names of infos hooked" +msgstr " napojené tisky:" + +#, fuzzy +msgid "names of infolists hooked" +msgstr " napojené tisky:" + +#, fuzzy +msgid "nicks in nicklist of current buffer" +msgstr "nevalidní délka pro buffer" + +#, fuzzy +msgid "configuration options" +msgstr "Nebyla nalezena žádná volba nastavení" + +#, fuzzy +msgid "names of plugins" +msgstr "nastaví konfigurační možnosti" + +#, fuzzy +msgid "commands defined by plugins" +msgstr "Tento příkaz je používán napojenou klávesou nebo pluginy." + +#, fuzzy +msgid "names of bars" +msgstr "Seznam pro aliasy:\n" + +#, fuzzy +msgid "values for a configuration option" +msgstr "Nebyla nalezena žádná volba nastavení" + +#, fuzzy +msgid "weechat commands" +msgstr "Další příkazy:" + +#, fuzzy +msgid "names of proxies" +msgstr "Seznam položek polí:" + +#, fuzzy +msgid "options for proxies" +msgstr "Seznam položek polí:" + +#, fuzzy +msgid "options for bars" +msgstr "Seznam polí:" + +msgid "key codes" +msgstr "" + +#, fuzzy msgid "Error: not enough memory to add a buffer to hotlist" msgstr "%s nemohu přidat buffer do hotlistu\n" @@ -2187,6 +2265,9 @@ msgid "" "Input line beginning with a '/' is not checked, except for some commands." msgstr "" +msgid "list of supported langs for aspell" +msgstr "" + msgid "comma separated list of dictionaries to use on this buffer" msgstr "" @@ -3459,6 +3540,48 @@ msgstr "%s \"%s\" příkaz nemůže být spuštěn v bufferu serveru\n" msgid "%s%s: command \"%s\" must be executed on connected irc server" msgstr "%s \"%s\" příkaz nemůže být spuštěn v bufferu serveru\n" +#, fuzzy +msgid "current IRC server" +msgstr "připojit se k serveru/serverům" + +#, fuzzy +msgid "nick on current IRC server" +msgstr "připojit se k serveru/serverům" + +#, fuzzy +msgid "nicks on all channels of current IRC server" +msgstr "seznam uživatelů přihlášených k serveru" + +msgid "IRC servers (internal names)" +msgstr "" + +#, fuzzy +msgid "current IRC channel" +msgstr "aktuální hodnota" + +#, fuzzy +msgid "nicks of current IRC channel" +msgstr "seznam uživatelů na kanálu" + +#, fuzzy +msgid "nicks and hostnames of current IRC channel" +msgstr "seznam uživatelů na kanálu" + +#, fuzzy +msgid "topic of current IRC channel" +msgstr "seznam uživatelů na kanálu" + +#, fuzzy +msgid "IRC channels (on all servers)" +msgstr "seznam uživatelů přihlášených k serveru" + +#, fuzzy +msgid "default part message for IRC channel" +msgstr "seznam uživatelů na kanálu" + +msgid "numbers for defined ignores" +msgstr "" + #, c-format msgid "" "%s%s: warning: server \"%s\" not found in configuration file, not deleted in " @@ -5168,6 +5291,10 @@ msgstr "" "\n" "Pokud nejsou uvedeny argumenty, jsou vypsány všechny načtené skripty." +#, fuzzy +msgid "list of scripts" +msgstr "Seznam položek polí:" + #. TRANSLATORS: %s is language (for example "perl") #, fuzzy, c-format msgid "list of %s scripts" @@ -5445,6 +5572,10 @@ msgid "" "Without argument, this command opens buffer with xfer list." msgstr "" +#, fuzzy +msgid "nicks of DCC chat" +msgstr "seznam uživatelů na kanálu" + msgid "auto open xfer buffer when a new xfer is added to list" msgstr "" "automaticky otevřít xfer buffer, když je přidána nová položka do xfer seznamu" @@ -5595,6 +5726,10 @@ msgid "%s%s: timeout for \"%s\" with %s" msgstr "%s chybí argument pro volbu \"%s\"\n" #, fuzzy +#~ msgid "list of aliases" +#~ msgstr "Seznam pro aliasy:\n" + +#, fuzzy #~ msgid "" #~ "smart completion for nicks (completes first with last speakers, " #~ "highlights or both)" @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.2.7-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2009-04-07 18:12+0200\n" +"POT-Creation-Date: 2009-04-09 12:57+0200\n" "PO-Revision-Date: 2009-01-03 00:42+0100\n" "Last-Translator: Thomas Schuetz <i18n@internet-villa.de>\n" "Language-Team: weechat-dev <weechat-dev@nongnu.org>\n" @@ -382,20 +382,16 @@ msgid "Key bindings (%d):" msgstr "Tastenbelegungen:\n" #, fuzzy -msgid "Default key bindings restored" -msgstr "Standardtastenbelegungen wiederhergestellt\n" +msgid "Key:" +msgstr "Taste:\n" -#, fuzzy, c-format -msgid "%sError: \"-yes\" argument is required for keys reset (security reason)" -msgstr "" -"%s \"-yes\" Argument ist aus Sicherheitsgründen für den Tastenreset " -"notwendig\n" +#, fuzzy +msgid "No key found" +msgstr "Keine Taste gefunden.\n" #, fuzzy, c-format -msgid "%d new key added" -msgid_plural "%d new keys added" -msgstr[0] "Keine /ignore-Regeln definiert.\n" -msgstr[1] "Keine /ignore-Regeln definiert.\n" +msgid "%sError: unable to bind key \"%s\"" +msgstr "%s kann die Taste \"%s\" nicht zuordnen\n" #, fuzzy, c-format msgid "Key \"%s\" unbound" @@ -406,16 +402,20 @@ msgid "%sError: unable to unbind key \"%s\"" msgstr "%s kann die Tastenbelegung \"%s\" nicht entfernen\n" #, fuzzy -msgid "Key:" -msgstr "Taste:\n" +msgid "Default key bindings restored" +msgstr "Standardtastenbelegungen wiederhergestellt\n" -#, fuzzy -msgid "No key found" -msgstr "Keine Taste gefunden.\n" +#, fuzzy, c-format +msgid "%sError: \"-yes\" argument is required for keys reset (security reason)" +msgstr "" +"%s \"-yes\" Argument ist aus Sicherheitsgründen für den Tastenreset " +"notwendig\n" #, fuzzy, c-format -msgid "%sError: unable to bind key \"%s\"" -msgstr "%s kann die Taste \"%s\" nicht zuordnen\n" +msgid "%d new key added" +msgid_plural "%d new keys added" +msgstr[0] "Keine /ignore-Regeln definiert.\n" +msgstr[1] "Keine /ignore-Regeln definiert.\n" #, c-format msgid "leaf: id: %d, parent: %d, plugin: \"%s\", buffer: \"%s\"" @@ -988,18 +988,18 @@ msgid "bind/unbind keys" msgstr "belegen/freigeben von Tasten" #, fuzzy -msgid "[key [command [args]]] | [unbind key] | [reset -yes] | [missing]" +msgid "[bind key [command [args]]] | [unbind key] | [reset -yes] | [missing]" msgstr "" "[Taste [Funktion/Befehl]] [unbind Taste] [functions] [call Funktion " "[\"Argumente\"]] [reset -yes] " #, fuzzy msgid "" -" key: display or bind this key to a command\n" -" unbind: unbind a key\n" -" reset: restore bindings to the default values and delete ALL personal " +" bind: bind a command to a key or display command bound to key\n" +" unbind: remove a key binding\n" +" reset: restore bindings to the default values and delete ALL personal " "bindings (use carefully!)\n" -" missing: add missing keys (using default bindings)" +"missing: add missing keys (using default bindings)" msgstr "" " Taste: diese Taste anzeigen oder mit einer internen Funktion oder " "einem Befehl, beginnend mit \"/\", belegen\n" @@ -2056,6 +2056,84 @@ msgid "Not enough memory for new line" msgstr "Nicht genügend Speicher für neue Zeile\n" #, fuzzy +msgid "names of buffers" +msgstr "konnte den Puffer nicht laden" + +#, fuzzy +msgid "numbers of buffers" +msgstr "konnte den Puffer nicht laden" + +msgid "names of buffers (including plugins names)" +msgstr "" + +#, fuzzy +msgid "configuration files" +msgstr "den Server dazu bringen, seine Konfigurationsdatei neu zu laden" + +#, fuzzy +msgid "filename" +msgstr "/users wurde deaktiviert" + +#, fuzzy +msgid "names of filters" +msgstr "Liste der Aliases:\n" + +#, fuzzy +msgid "commands (weechat and plugins)" +msgstr " (kein Plugin)\n" + +#, fuzzy +msgid "names of infos hooked" +msgstr " Timer-Handler:\n" + +#, fuzzy +msgid "names of infolists hooked" +msgstr " Timer-Handler:\n" + +#, fuzzy +msgid "nicks in nicklist of current buffer" +msgstr "Fehlerhafte Pufferlänge" + +#, fuzzy +msgid "configuration options" +msgstr "Keine Konfigurationsoption gefunden\n" + +#, fuzzy +msgid "names of plugins" +msgstr "Konfigurationsparameter setzen" + +#, fuzzy +msgid "commands defined by plugins" +msgstr " (kein Plugin)\n" + +#, fuzzy +msgid "names of bars" +msgstr "Liste der Aliases:\n" + +#, fuzzy +msgid "values for a configuration option" +msgstr "Keine Konfigurationsoption gefunden\n" + +#, fuzzy +msgid "weechat commands" +msgstr "%s interne Befehle:\n" + +#, fuzzy +msgid "names of proxies" +msgstr "Liste der Aliases:\n" + +#, fuzzy +msgid "options for proxies" +msgstr "Liste der Aliases:\n" + +#, fuzzy +msgid "options for bars" +msgstr "Liste der Aliases:\n" + +msgid "key codes" +msgstr "" + +#, fuzzy msgid "Error: not enough memory to add a buffer to hotlist" msgstr "%s Puffer kann nicht zur Hotlist hinzugefügt werden\n" @@ -2196,6 +2274,9 @@ msgid "" "Input line beginning with a '/' is not checked, except for some commands." msgstr "" +msgid "list of supported langs for aspell" +msgstr "" + msgid "comma separated list of dictionaries to use on this buffer" msgstr "" @@ -3435,6 +3516,48 @@ msgstr "%s der \"%s\"-Befehl kann nicht in Serverfenstern ausgeführt werden\n" msgid "%s%s: command \"%s\" must be executed on connected irc server" msgstr "%s der \"%s\"-Befehl kann nicht in Serverfenstern ausgeführt werden\n" +#, fuzzy +msgid "current IRC server" +msgstr "mit Server verbinden" + +#, fuzzy +msgid "nick on current IRC server" +msgstr "mit Server verbinden" + +#, fuzzy +msgid "nicks on all channels of current IRC server" +msgstr "Channels, die bei Verbindung zum Server zu betreten sind" + +msgid "IRC servers (internal names)" +msgstr "" + +#, fuzzy +msgid "current IRC channel" +msgstr "User [Ziel [Channel]]" + +#, fuzzy +msgid "nicks of current IRC channel" +msgstr "Liste von Nicks im Channel" + +#, fuzzy +msgid "nicks and hostnames of current IRC channel" +msgstr "Liste von Nicks im Channel" + +#, fuzzy +msgid "topic of current IRC channel" +msgstr "Liste von Nicks im Channel" + +#, fuzzy +msgid "IRC channels (on all servers)" +msgstr "Channels, die bei Verbindung zum Server zu betreten sind" + +#, fuzzy +msgid "default part message for IRC channel" +msgstr "Liste von Nicks im Channel" + +msgid "numbers for defined ignores" +msgstr "" + #, c-format msgid "" "%s%s: warning: server \"%s\" not found in configuration file, not deleted in " @@ -5107,6 +5230,10 @@ msgid "" "Without argument, this command lists all loaded scripts." msgstr "" +#, fuzzy +msgid "list of scripts" +msgstr "Liste der Aliases:\n" + #. TRANSLATORS: %s is language (for example "perl") #, fuzzy, c-format msgid "list of %s scripts" @@ -5380,6 +5507,10 @@ msgid "" "Without argument, this command opens buffer with xfer list." msgstr "" +#, fuzzy +msgid "nicks of DCC chat" +msgstr "Liste von Nicks im Channel" + msgid "auto open xfer buffer when a new xfer is added to list" msgstr "" @@ -5529,6 +5660,10 @@ msgid "%s%s: timeout for \"%s\" with %s" msgstr "%s fehlende Argumente für die \"--dir\"-Option\n" #, fuzzy +#~ msgid "list of aliases" +#~ msgstr "Liste der Aliases:\n" + +#, fuzzy #~ msgid "" #~ "smart completion for nicks (completes first with last speakers, " #~ "highlights or both)" @@ -5549,10 +5684,6 @@ msgstr "%s fehlende Argumente für die \"--dir\"-Option\n" #~ msgstr " (kein Plugin)\n" #, fuzzy -#~ msgid " (masked by a plugin)" -#~ msgstr " (kein Plugin)\n" - -#, fuzzy #~ msgid "plugin:" #~ msgstr " (kein Plugin)\n" @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.2.7-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2009-04-07 18:12+0200\n" +"POT-Creation-Date: 2009-04-09 12:57+0200\n" "PO-Revision-Date: 2009-01-03 00:42+0100\n" "Last-Translator: Roberto González Cardenete <robert.glez@gmail.com>\n" "Language-Team: weechat-dev <weechat-dev@nongnu.org>\n" @@ -377,21 +377,16 @@ msgstr "Ningún alias definido.\n" msgid "Key bindings (%d):" msgstr "Anclajes de clave:\n" -#, fuzzy -msgid "Default key bindings restored" -msgstr "Anclajes de clave por defecto restaurados\n" - -#, fuzzy, c-format -msgid "%sError: \"-yes\" argument is required for keys reset (security reason)" +msgid "Key:" msgstr "" -"%s \"-yes\" se requiere argumento para resetear las claves (por razones de " -"seguridad)\n" + +#, fuzzy +msgid "No key found" +msgstr "Ningún alias definido.\n" #, fuzzy, c-format -msgid "%d new key added" -msgid_plural "%d new keys added" -msgstr[0] "Sin ignores definidos.\n" -msgstr[1] "Sin ignores definidos.\n" +msgid "%sError: unable to bind key \"%s\"" +msgstr "%s No ha sido posible atar la clave \"%s\"\n" #, fuzzy, c-format msgid "Key \"%s\" unbound" @@ -401,16 +396,21 @@ msgstr "Clave \"%s\" desatada\n" msgid "%sError: unable to unbind key \"%s\"" msgstr "%s No ha sido posible desatar la clave \"%s\"\n" -msgid "Key:" -msgstr "" - #, fuzzy -msgid "No key found" -msgstr "Ningún alias definido.\n" +msgid "Default key bindings restored" +msgstr "Anclajes de clave por defecto restaurados\n" #, fuzzy, c-format -msgid "%sError: unable to bind key \"%s\"" -msgstr "%s No ha sido posible atar la clave \"%s\"\n" +msgid "%sError: \"-yes\" argument is required for keys reset (security reason)" +msgstr "" +"%s \"-yes\" se requiere argumento para resetear las claves (por razones de " +"seguridad)\n" + +#, fuzzy, c-format +msgid "%d new key added" +msgid_plural "%d new keys added" +msgstr[0] "Sin ignores definidos.\n" +msgstr[1] "Sin ignores definidos.\n" #, c-format msgid "leaf: id: %d, parent: %d, plugin: \"%s\", buffer: \"%s\"" @@ -984,16 +984,16 @@ msgid "bind/unbind keys" msgstr "atar/desatar claves" #, fuzzy -msgid "[key [command [args]]] | [unbind key] | [reset -yes] | [missing]" +msgid "[bind key [command [args]]] | [unbind key] | [reset -yes] | [missing]" msgstr "[clave función/comando] [desatar clave] [funciones] [reset -yes]" #, fuzzy msgid "" -" key: display or bind this key to a command\n" -" unbind: unbind a key\n" -" reset: restore bindings to the default values and delete ALL personal " +" bind: bind a command to a key or display command bound to key\n" +" unbind: remove a key binding\n" +" reset: restore bindings to the default values and delete ALL personal " "bindings (use carefully!)\n" -" missing: add missing keys (using default bindings)" +"missing: add missing keys (using default bindings)" msgstr "" " clave: ata esta clave a una función interna o a un comando (comenzando " "por \"/ \")\n" @@ -2034,6 +2034,84 @@ msgid "Not enough memory for new line" msgstr "No hay suficiente memoria para una nueva lÃnea\n" #, fuzzy +msgid "names of buffers" +msgstr "falló al cargar el búfer" + +#, fuzzy +msgid "numbers of buffers" +msgstr "falló al cargar el búfer" + +msgid "names of buffers (including plugins names)" +msgstr "" + +#, fuzzy +msgid "configuration files" +msgstr "pedir al servidor que recargue su archivo de configuración" + +#, fuzzy +msgid "filename" +msgstr "los usuarios han sido desactivados" + +#, fuzzy +msgid "names of filters" +msgstr "Lista de alias:\n" + +#, fuzzy +msgid "commands (weechat and plugins)" +msgstr " (sin plugins)\n" + +#, fuzzy +msgid "names of infos hooked" +msgstr " manejadores de temporización:\n" + +#, fuzzy +msgid "names of infolists hooked" +msgstr " manejadores de temporización:\n" + +#, fuzzy +msgid "nicks in nicklist of current buffer" +msgstr "longitud inválida para un búfer" + +#, fuzzy +msgid "configuration options" +msgstr "Ninguna opción de configuración encontrada\n" + +#, fuzzy +msgid "names of plugins" +msgstr "poner opciones de configuración" + +#, fuzzy +msgid "commands defined by plugins" +msgstr " (sin plugins)\n" + +#, fuzzy +msgid "names of bars" +msgstr "Lista de alias:\n" + +#, fuzzy +msgid "values for a configuration option" +msgstr "Ninguna opción de configuración encontrada\n" + +#, fuzzy +msgid "weechat commands" +msgstr "Comandos internos %s :\n" + +#, fuzzy +msgid "names of proxies" +msgstr "Lista de alias:\n" + +#, fuzzy +msgid "options for proxies" +msgstr "Lista de alias:\n" + +#, fuzzy +msgid "options for bars" +msgstr "Lista de alias:\n" + +msgid "key codes" +msgstr "" + +#, fuzzy msgid "Error: not enough memory to add a buffer to hotlist" msgstr "%s no es posible añadir un búfer a la lista caliente (hotlist)\n" @@ -2168,6 +2246,9 @@ msgid "" "Input line beginning with a '/' is not checked, except for some commands." msgstr "" +msgid "list of supported langs for aspell" +msgstr "" + msgid "comma separated list of dictionaries to use on this buffer" msgstr "" @@ -3424,6 +3505,48 @@ msgstr "%s el comando \"%s\" no puede ejecutarse en una ventana de servidor\n" msgid "%s%s: command \"%s\" must be executed on connected irc server" msgstr "%s el comando \"%s\" no puede ejecutarse en una ventana de servidor\n" +#, fuzzy +msgid "current IRC server" +msgstr "conectarse a un servidor" + +#, fuzzy +msgid "nick on current IRC server" +msgstr "conectarse a un servidor" + +#, fuzzy +msgid "nicks on all channels of current IRC server" +msgstr "lista de canales a unirse cuando se conecte a un servidor" + +msgid "IRC servers (internal names)" +msgstr "" + +#, fuzzy +msgid "current IRC channel" +msgstr "usuario [destinatario [canal]]" + +#, fuzzy +msgid "nicks of current IRC channel" +msgstr "lista de usuarios en el canal" + +#, fuzzy +msgid "nicks and hostnames of current IRC channel" +msgstr "lista de usuarios en el canal" + +#, fuzzy +msgid "topic of current IRC channel" +msgstr "lista de usuarios en el canal" + +#, fuzzy +msgid "IRC channels (on all servers)" +msgstr "lista de canales a unirse cuando se conecte a un servidor" + +#, fuzzy +msgid "default part message for IRC channel" +msgstr "lista de usuarios en el canal" + +msgid "numbers for defined ignores" +msgstr "" + #, c-format msgid "" "%s%s: warning: server \"%s\" not found in configuration file, not deleted in " @@ -5094,6 +5217,10 @@ msgid "" "Without argument, this command lists all loaded scripts." msgstr "" +#, fuzzy +msgid "list of scripts" +msgstr "Lista de alias:\n" + #. TRANSLATORS: %s is language (for example "perl") #, fuzzy, c-format msgid "list of %s scripts" @@ -5370,6 +5497,10 @@ msgid "" "Without argument, this command opens buffer with xfer list." msgstr "" +#, fuzzy +msgid "nicks of DCC chat" +msgstr "lista de usuarios en el canal" + msgid "auto open xfer buffer when a new xfer is added to list" msgstr "" @@ -5521,6 +5652,10 @@ msgstr "%s no es posible crear el servidor\n" msgid "%s%s: timeout for \"%s\" with %s" msgstr "%s falta un argumento para la opción --dir\n" +#, fuzzy +#~ msgid "list of aliases" +#~ msgstr "Lista de alias:\n" + #~ msgid "[action [args] | number | [[server] [channel]]]" #~ msgstr "[acción [argumentos] | número | [[servidor] [canal]]]" @@ -5534,10 +5669,6 @@ msgstr "%s falta un argumento para la opción --dir\n" #~ msgstr " (sin plugins)\n" #, fuzzy -#~ msgid " (masked by a plugin)" -#~ msgstr " (sin plugins)\n" - -#, fuzzy #~ msgid "plugin:" #~ msgstr " (sin plugins)\n" @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.2.7-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2009-04-07 18:12+0200\n" -"PO-Revision-Date: 2009-04-07 18:01+0200\n" +"POT-Creation-Date: 2009-04-09 12:57+0200\n" +"PO-Revision-Date: 2009-04-09 12:58+0200\n" "Last-Translator: FlashCode <flashcode@flashtux.org>\n" "Language-Team: weechat-dev <weechat-dev@nongnu.org>\n" "MIME-Version: 1.0\n" @@ -354,20 +354,15 @@ msgstr "Pas d'association de touche définie" msgid "Key bindings (%d):" msgstr "Associations de touches (%d):" -msgid "Default key bindings restored" -msgstr "Touches par défaut restaurées" +msgid "Key:" +msgstr "Touche:" -#, c-format -msgid "%sError: \"-yes\" argument is required for keys reset (security reason)" -msgstr "" -"%sErreur: le paramètre \"-yes\" est requis pour la réinitialisation des " -"touches (raison de sécurité)" +msgid "No key found" +msgstr "Aucune touche trouvée" #, c-format -msgid "%d new key added" -msgid_plural "%d new keys added" -msgstr[0] "%d nouvelle touche ajoutée" -msgstr[1] "%d nouvelles touches ajoutées" +msgid "%sError: unable to bind key \"%s\"" +msgstr "%sErreur: impossible de créer la touche \"%s\"" #, c-format msgid "Key \"%s\" unbound" @@ -377,15 +372,20 @@ msgstr "Touche \"%s\" supprimée" msgid "%sError: unable to unbind key \"%s\"" msgstr "%sErreur: impossible de supprimer la touche \"%s\"" -msgid "Key:" -msgstr "Touche:" +msgid "Default key bindings restored" +msgstr "Touches par défaut restaurées" -msgid "No key found" -msgstr "Aucune touche trouvée" +#, c-format +msgid "%sError: \"-yes\" argument is required for keys reset (security reason)" +msgstr "" +"%sErreur: le paramètre \"-yes\" est requis pour la réinitialisation des " +"touches (raison de sécurité)" #, c-format -msgid "%sError: unable to bind key \"%s\"" -msgstr "%sErreur: impossible de créer la touche \"%s\"" +msgid "%d new key added" +msgid_plural "%d new keys added" +msgstr[0] "%d nouvelle touche ajoutée" +msgstr[1] "%d nouvelles touches ajoutées" #, c-format msgid "leaf: id: %d, parent: %d, plugin: \"%s\", buffer: \"%s\"" @@ -1029,23 +1029,23 @@ msgstr "" msgid "bind/unbind keys" msgstr "associer/libérer des touches" -msgid "[key [command [args]]] | [unbind key] | [reset -yes] | [missing]" +msgid "[bind key [command [args]]] | [unbind key] | [reset -yes] | [missing]" msgstr "" -"[touche [commande [args]]] | [unbind touche] | [reset -yes] | [missing]" +"[bind touche [commande [args]]] | [unbind touche] | [reset -yes] | [missing]" msgid "" -" key: display or bind this key to a command\n" -" unbind: unbind a key\n" -" reset: restore bindings to the default values and delete ALL personal " +" bind: bind a command to a key or display command bound to key\n" +" unbind: remove a key binding\n" +" reset: restore bindings to the default values and delete ALL personal " "bindings (use carefully!)\n" -" missing: add missing keys (using default bindings)" +"missing: add missing keys (using default bindings)" msgstr "" -" touche: voir ou associer cette touche à une commande\n" -" unbind: supprimer l'association à une touche\n" -" reset: restaure les touches aux valeurs par défaut et supprime TOUTES " -"les touches personnelles (utiliser avec précaution !)\n" -" missing: ajoute les touches manquantes (en utilisant les touches par " -"défaut)" +" bind: associer une commande à une touche ou afficher la commande associée " +"à la touche\n" +" unbind: supprimer l'association à une touche\n" +" reset: restaure les touches aux valeurs par défaut et supprime TOUTES les " +"touches personnelles (utiliser avec précaution !)\n" +"missing: ajoute les touches manquantes (en utilisant les touches par défaut)" msgid "save/apply/reset layout for buffers and windows" msgstr "sauve/applique/réinitialise la disposition des tampons et fenêtres" @@ -2137,6 +2137,66 @@ msgstr "%sErreur: un tampon avec le même nom (%s) existe déjà" msgid "Not enough memory for new line" msgstr "Pas assez de mémoire pour une nouvelle ligne" +msgid "names of buffers" +msgstr "noms des tampons" + +msgid "numbers of buffers" +msgstr "numéros des tampons" + +msgid "names of buffers (including plugins names)" +msgstr "noms des tampons (incluant les noms d'extensions)" + +msgid "configuration files" +msgstr "fichiers de configuration" + +msgid "filename" +msgstr "nom de fichier" + +msgid "names of filters" +msgstr "noms des filtres" + +msgid "commands (weechat and plugins)" +msgstr "commandes (weechat et extensions)" + +msgid "names of infos hooked" +msgstr "noms des infos accrochées" + +msgid "names of infolists hooked" +msgstr "noms des infolistes accrochées" + +msgid "nicks in nicklist of current buffer" +msgstr "pseudos dans la liste des pseudos du tampon courant" + +msgid "configuration options" +msgstr "options de configuration" + +msgid "names of plugins" +msgstr "noms des extensions" + +msgid "commands defined by plugins" +msgstr "commandes définies par les extensions" + +msgid "names of bars" +msgstr "noms des barres" + +msgid "values for a configuration option" +msgstr "valeurs pour une option de configuration" + +msgid "weechat commands" +msgstr "commandes weechat" + +msgid "names of proxies" +msgstr "noms des proxies" + +msgid "options for proxies" +msgstr "options pour les proxies" + +msgid "options for bars" +msgstr "options pour les barres" + +msgid "key codes" +msgstr "codes des touches" + msgid "Error: not enough memory to add a buffer to hotlist" msgstr "Erreur: impossible d'ajouter le tampon à la liste des tampons actifs" @@ -2282,6 +2342,9 @@ msgstr "" "Les lignes d'entrée commençant par '/' ne sont pas vérifiées, sauf pour " "certaines commandes." +msgid "list of supported langs for aspell" +msgstr "liste des langues supportées pour aspell" + msgid "comma separated list of dictionaries to use on this buffer" msgstr "" "liste de dictionnaires (séparés par des virgules) à utiliser sur ce tampon" @@ -3582,6 +3645,39 @@ msgid "%s%s: command \"%s\" must be executed on connected irc server" msgstr "" "%s%s: la commande \"%s\" doit être exécutée sur un serveur irc connecté" +msgid "current IRC server" +msgstr "serveur IRC courant" + +msgid "nick on current IRC server" +msgstr "pseudo sur le serveur IRC courant" + +msgid "nicks on all channels of current IRC server" +msgstr "pseudos sur tous les canaux du serveur IRC courant" + +msgid "IRC servers (internal names)" +msgstr "serveurs IRC (noms internes)" + +msgid "current IRC channel" +msgstr "canal IRC courant" + +msgid "nicks of current IRC channel" +msgstr "pseudos du canal IRC courant" + +msgid "nicks and hostnames of current IRC channel" +msgstr "pseudos et noms d'hôtes du canal IRC courant" + +msgid "topic of current IRC channel" +msgstr "titre du canal IRC courant" + +msgid "IRC channels (on all servers)" +msgstr "canaux IRC (sur tous les serveurs)" + +msgid "default part message for IRC channel" +msgstr "message de fin par défaut pour le canal IRC" + +msgid "numbers for defined ignores" +msgstr "numéros pour les ignores définis" + #, c-format msgid "" "%s%s: warning: server \"%s\" not found in configuration file, not deleted in " @@ -5306,6 +5402,9 @@ msgstr "" "\n" "Sans argument, cette commande liste tous les scripts chargés." +msgid "list of scripts" +msgstr "liste des scripts" + #. TRANSLATORS: %s is language (for example "perl") #, c-format msgid "list of %s scripts" @@ -5577,6 +5676,9 @@ msgstr "" "\n" "Sans paramètre, cette commande ouvre le tampon avec la liste des xfer." +msgid "nicks of DCC chat" +msgstr "pseudos de la discussion DCC" + msgid "auto open xfer buffer when a new xfer is added to list" msgstr "" "ouvrir automatiquement le tampon xfer lorsqu'un nouveau xfer est ajouté à la " @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.2.7-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2009-04-07 18:12+0200\n" +"POT-Creation-Date: 2009-04-09 12:57+0200\n" "PO-Revision-Date: 2009-01-03 00:42+0100\n" "Last-Translator: Andras Voroskoi <voroskoi@frugalware.org>\n" "Language-Team: weechat-dev <weechat-dev@nongnu.org>\n" @@ -383,20 +383,16 @@ msgid "Key bindings (%d):" msgstr "Billentyűparancsok:\n" #, fuzzy -msgid "Default key bindings restored" -msgstr "Alapértelmezett billentyűparancsok visszaállítva\n" +msgid "Key:" +msgstr "Billentyű:\n" -#, fuzzy, c-format -msgid "%sError: \"-yes\" argument is required for keys reset (security reason)" -msgstr "" -"%s \"-yes\" paraméter megadása kötelező a billentyűparancsok " -"visszaállításához (biztonsági okokból)\n" +#, fuzzy +msgid "No key found" +msgstr "Nem találtam billentyűt.\n" #, fuzzy, c-format -msgid "%d new key added" -msgid_plural "%d new keys added" -msgstr[0] "Nincs mellőzés megadva.\n" -msgstr[1] "Nincs mellőzés megadva.\n" +msgid "%sError: unable to bind key \"%s\"" +msgstr "%s nem sikerült a(z) \"%s\" billentyűt hozzárendelni\n" #, fuzzy, c-format msgid "Key \"%s\" unbound" @@ -407,16 +403,20 @@ msgid "%sError: unable to unbind key \"%s\"" msgstr "%s nem sikerült a(z) \"%s\" billentyűparancsot visszavonni\n" #, fuzzy -msgid "Key:" -msgstr "Billentyű:\n" +msgid "Default key bindings restored" +msgstr "Alapértelmezett billentyűparancsok visszaállítva\n" -#, fuzzy -msgid "No key found" -msgstr "Nem találtam billentyűt.\n" +#, fuzzy, c-format +msgid "%sError: \"-yes\" argument is required for keys reset (security reason)" +msgstr "" +"%s \"-yes\" paraméter megadása kötelező a billentyűparancsok " +"visszaállításához (biztonsági okokból)\n" #, fuzzy, c-format -msgid "%sError: unable to bind key \"%s\"" -msgstr "%s nem sikerült a(z) \"%s\" billentyűt hozzárendelni\n" +msgid "%d new key added" +msgid_plural "%d new keys added" +msgstr[0] "Nincs mellőzés megadva.\n" +msgstr[1] "Nincs mellőzés megadva.\n" #, c-format msgid "leaf: id: %d, parent: %d, plugin: \"%s\", buffer: \"%s\"" @@ -1004,18 +1004,18 @@ msgid "bind/unbind keys" msgstr "billentyűk hozzárendelése/hozzárendelés eltávolítása" #, fuzzy -msgid "[key [command [args]]] | [unbind key] | [reset -yes] | [missing]" +msgid "[bind key [command [args]]] | [unbind key] | [reset -yes] | [missing]" msgstr "" "[billentyű [funkció/parancs]] [unbind billentyű] [funkciók] [call funkció " "[\"paraméterek\"]] [reset -yes]" #, fuzzy msgid "" -" key: display or bind this key to a command\n" -" unbind: unbind a key\n" -" reset: restore bindings to the default values and delete ALL personal " +" bind: bind a command to a key or display command bound to key\n" +" unbind: remove a key binding\n" +" reset: restore bindings to the default values and delete ALL personal " "bindings (use carefully!)\n" -" missing: add missing keys (using default bindings)" +"missing: add missing keys (using default bindings)" msgstr "" "billentyű: billentyű hozzárendelése valamely belső funkcióhoz vagy \"/\" " "jellel kezdődő parancshoz\n" @@ -2064,6 +2064,84 @@ msgid "Not enough memory for new line" msgstr "Nincs elég memória az új sorhoz\n" #, fuzzy +msgid "names of buffers" +msgstr "puffer betöltése sikertelen" + +#, fuzzy +msgid "numbers of buffers" +msgstr "puffer betöltése sikertelen" + +msgid "names of buffers (including plugins names)" +msgstr "" + +#, fuzzy +msgid "configuration files" +msgstr "szerver konfigurációs fájljának újraolvastatása" + +#, fuzzy +msgid "filename" +msgstr "a felhasználók le lettek tiltva" + +#, fuzzy +msgid "names of filters" +msgstr "Aliaszok listája:\n" + +#, fuzzy +msgid "commands (weechat and plugins)" +msgstr " (nem található bővítőmodul)\n" + +#, fuzzy +msgid "names of infos hooked" +msgstr " időkezelők:\n" + +#, fuzzy +msgid "names of infolists hooked" +msgstr " időkezelők:\n" + +#, fuzzy +msgid "nicks in nicklist of current buffer" +msgstr "érvénytelen pufferhossz" + +#, fuzzy +msgid "configuration options" +msgstr "Nem található az opció\n" + +#, fuzzy +msgid "names of plugins" +msgstr "konfigurációs paraméterek beállítása" + +#, fuzzy +msgid "commands defined by plugins" +msgstr " (nem található bővítőmodul)\n" + +#, fuzzy +msgid "names of bars" +msgstr "Aliaszok listája:\n" + +#, fuzzy +msgid "values for a configuration option" +msgstr "Nem található az opció\n" + +#, fuzzy +msgid "weechat commands" +msgstr "%s belső parancsok:\n" + +#, fuzzy +msgid "names of proxies" +msgstr "Aliaszok listája:\n" + +#, fuzzy +msgid "options for proxies" +msgstr "Aliaszok listája:\n" + +#, fuzzy +msgid "options for bars" +msgstr "Aliaszok listája:\n" + +msgid "key codes" +msgstr "" + +#, fuzzy msgid "Error: not enough memory to add a buffer to hotlist" msgstr "%s nincs elég memória az ignore elkészítéséhez\n" @@ -2205,6 +2283,9 @@ msgid "" "Input line beginning with a '/' is not checked, except for some commands." msgstr "" +msgid "list of supported langs for aspell" +msgstr "" + msgid "comma separated list of dictionaries to use on this buffer" msgstr "" @@ -3474,6 +3555,48 @@ msgstr "%s \"%s\" parancs nem futtatható a szerverablakban\n" msgid "%s%s: command \"%s\" must be executed on connected irc server" msgstr "%s \"%s\" parancs nem futtatható a szerverablakban\n" +#, fuzzy +msgid "current IRC server" +msgstr "csatlakozás a szerver(ek)hez" + +#, fuzzy +msgid "nick on current IRC server" +msgstr "csatlakozás a szerver(ek)hez" + +#, fuzzy +msgid "nicks on all channels of current IRC server" +msgstr "szobák listája ahová be akarunk lépni csatlakozás után" + +msgid "IRC servers (internal names)" +msgstr "" + +#, fuzzy +msgid "current IRC channel" +msgstr "felhasználó [cél [szoba]]" + +#, fuzzy +msgid "nicks of current IRC channel" +msgstr "felhasználók listája a szobában" + +#, fuzzy +msgid "nicks and hostnames of current IRC channel" +msgstr "felhasználók listája a szobában" + +#, fuzzy +msgid "topic of current IRC channel" +msgstr "felhasználók listája a szobában" + +#, fuzzy +msgid "IRC channels (on all servers)" +msgstr "szobák listája ahová be akarunk lépni csatlakozás után" + +#, fuzzy +msgid "default part message for IRC channel" +msgstr "felhasználók listája a szobában" + +msgid "numbers for defined ignores" +msgstr "" + #, c-format msgid "" "%s%s: warning: server \"%s\" not found in configuration file, not deleted in " @@ -5162,6 +5285,10 @@ msgid "" "Without argument, this command lists all loaded scripts." msgstr "" +#, fuzzy +msgid "list of scripts" +msgstr "Aliaszok listája:\n" + #. TRANSLATORS: %s is language (for example "perl") #, fuzzy, c-format msgid "list of %s scripts" @@ -5437,6 +5564,10 @@ msgid "" "Without argument, this command opens buffer with xfer list." msgstr "" +#, fuzzy +msgid "nicks of DCC chat" +msgstr "felhasználók listája a szobában" + msgid "auto open xfer buffer when a new xfer is added to list" msgstr "" @@ -5581,6 +5712,10 @@ msgid "%s%s: timeout for \"%s\" with %s" msgstr "%s hiányzó argumentum a(z) \"%s\" opciónak\n" #, fuzzy +#~ msgid "list of aliases" +#~ msgstr "Aliaszok listája:\n" + +#, fuzzy #~ msgid "" #~ "smart completion for nicks (completes first with last speakers, " #~ "highlights or both)" @@ -5598,10 +5733,6 @@ msgstr "%s hiányzó argumentum a(z) \"%s\" opciónak\n" #~ msgstr " (nem található bővítőmodul)\n" #, fuzzy -#~ msgid " (masked by a plugin)" -#~ msgstr " (nem található bővítőmodul)\n" - -#, fuzzy #~ msgid "plugin:" #~ msgstr " (nem található bővítőmodul)\n" @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat 0.2.7-dev\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2009-04-07 18:12+0200\n" +"POT-Creation-Date: 2009-04-09 12:57+0200\n" "PO-Revision-Date: 2009-01-03 00:42+0100\n" "Last-Translator: Pavel Shevchuk <stlwrt@gmail.com>\n" "Language-Team: weechat-dev <weechat-dev@nongnu.org>\n" @@ -379,19 +379,16 @@ msgid "Key bindings (%d):" msgstr "Комбинации клавиш:\n" #, fuzzy -msgid "Default key bindings restored" -msgstr "Комбинации клавиш по умолчанию восстановлены\n" +msgid "Key:" +msgstr "Клавиша:\n" -#, fuzzy, c-format -msgid "%sError: \"-yes\" argument is required for keys reset (security reason)" -msgstr "" -"%s аргумент \"-yes\" необходим для сброса ключей (в целях безопасности)\n" +#, fuzzy +msgid "No key found" +msgstr "Клавиши не найдены.\n" #, fuzzy, c-format -msgid "%d new key added" -msgid_plural "%d new keys added" -msgstr[0] "Игнорирования не заданы.\n" -msgstr[1] "Игнорирования не заданы.\n" +msgid "%sError: unable to bind key \"%s\"" +msgstr "%s не могу установить клавишу \"%s\"\n" #, fuzzy, c-format msgid "Key \"%s\" unbound" @@ -402,16 +399,19 @@ msgid "%sError: unable to unbind key \"%s\"" msgstr "%s не могу отвязать клавишу \"%s\"\n" #, fuzzy -msgid "Key:" -msgstr "Клавиша:\n" +msgid "Default key bindings restored" +msgstr "Комбинации клавиш по умолчанию восстановлены\n" -#, fuzzy -msgid "No key found" -msgstr "Клавиши не найдены.\n" +#, fuzzy, c-format +msgid "%sError: \"-yes\" argument is required for keys reset (security reason)" +msgstr "" +"%s аргумент \"-yes\" необходим для сброса ключей (в целях безопасности)\n" #, fuzzy, c-format -msgid "%sError: unable to bind key \"%s\"" -msgstr "%s не могу установить клавишу \"%s\"\n" +msgid "%d new key added" +msgid_plural "%d new keys added" +msgstr[0] "Игнорирования не заданы.\n" +msgstr[1] "Игнорирования не заданы.\n" #, c-format msgid "leaf: id: %d, parent: %d, plugin: \"%s\", buffer: \"%s\"" @@ -999,18 +999,18 @@ msgid "bind/unbind keys" msgstr "установить/снять клавиши" #, fuzzy -msgid "[key [command [args]]] | [unbind key] | [reset -yes] | [missing]" +msgid "[bind key [command [args]]] | [unbind key] | [reset -yes] | [missing]" msgstr "" "[клавиша [функция/команда]] [unbind клавиша] [функции] [call функция " "[\"аргументы\"]] [reset -yes]" #, fuzzy msgid "" -" key: display or bind this key to a command\n" -" unbind: unbind a key\n" -" reset: restore bindings to the default values and delete ALL personal " +" bind: bind a command to a key or display command bound to key\n" +" unbind: remove a key binding\n" +" reset: restore bindings to the default values and delete ALL personal " "bindings (use carefully!)\n" -" missing: add missing keys (using default bindings)" +"missing: add missing keys (using default bindings)" msgstr "" " клавиша: отобразить или назначить этой клавише функцию или команду " "(начинающуюся на \"/\")\n" @@ -2069,6 +2069,84 @@ msgid "Not enough memory for new line" msgstr "Недостаточно памяти для новой строчки\n" #, fuzzy +msgid "names of buffers" +msgstr "загрузка буфера не удалась" + +#, fuzzy +msgid "numbers of buffers" +msgstr "загрузка буфера не удалась" + +msgid "names of buffers (including plugins names)" +msgstr "" + +#, fuzzy +msgid "configuration files" +msgstr "перезагрузить конфигурационный файл сервера" + +#, fuzzy +msgid "filename" +msgstr "команда users отключена" + +#, fuzzy +msgid "names of filters" +msgstr "Список сокращений:\n" + +#, fuzzy +msgid "commands (weechat and plugins)" +msgstr " (нет pluginа)\n" + +#, fuzzy +msgid "names of infos hooked" +msgstr " обработчики таймера:\n" + +#, fuzzy +msgid "names of infolists hooked" +msgstr " обработчики таймера:\n" + +#, fuzzy +msgid "nicks in nicklist of current buffer" +msgstr "некорректная длина буфера" + +#, fuzzy +msgid "configuration options" +msgstr "Не найден параметр\n" + +#, fuzzy +msgid "names of plugins" +msgstr "настроить параметры конфигурации" + +#, fuzzy +msgid "commands defined by plugins" +msgstr " (нет pluginа)\n" + +#, fuzzy +msgid "names of bars" +msgstr "Список сокращений:\n" + +#, fuzzy +msgid "values for a configuration option" +msgstr "Не найден параметр\n" + +#, fuzzy +msgid "weechat commands" +msgstr "Внутренние команды %s:\n" + +#, fuzzy +msgid "names of proxies" +msgstr "Список сокращений:\n" + +#, fuzzy +msgid "options for proxies" +msgstr "Список сокращений:\n" + +#, fuzzy +msgid "options for bars" +msgstr "Список сокращений:\n" + +msgid "key codes" +msgstr "" + +#, fuzzy msgid "Error: not enough memory to add a buffer to hotlist" msgstr "%s не могу добавить буфер в хотлист\n" @@ -2209,6 +2287,9 @@ msgid "" "Input line beginning with a '/' is not checked, except for some commands." msgstr "" +msgid "list of supported langs for aspell" +msgstr "" + msgid "comma separated list of dictionaries to use on this buffer" msgstr "" @@ -3467,6 +3548,48 @@ msgstr "%s \"%s\" команда может быть выполнена толь msgid "%s%s: command \"%s\" must be executed on connected irc server" msgstr "%s \"%s\" команда может быть выполнена только в буфере сервера\n" +#, fuzzy +msgid "current IRC server" +msgstr "подключиться к серверу(-ам)" + +#, fuzzy +msgid "nick on current IRC server" +msgstr "подключиться к серверу(-ам)" + +#, fuzzy +msgid "nicks on all channels of current IRC server" +msgstr "Список каналов, на которые заходить при соединении с сервером" + +msgid "IRC servers (internal names)" +msgstr "" + +#, fuzzy +msgid "current IRC channel" +msgstr "пользователь [цель [канал]]" + +#, fuzzy +msgid "nicks of current IRC channel" +msgstr "список ников на канале" + +#, fuzzy +msgid "nicks and hostnames of current IRC channel" +msgstr "список ников на канале" + +#, fuzzy +msgid "topic of current IRC channel" +msgstr "список ников на канале" + +#, fuzzy +msgid "IRC channels (on all servers)" +msgstr "Список каналов, на которые заходить при соединении с сервером" + +#, fuzzy +msgid "default part message for IRC channel" +msgstr "список ников на канале" + +msgid "numbers for defined ignores" +msgstr "" + #, c-format msgid "" "%s%s: warning: server \"%s\" not found in configuration file, not deleted in " @@ -5138,6 +5261,10 @@ msgid "" "Without argument, this command lists all loaded scripts." msgstr "" +#, fuzzy +msgid "list of scripts" +msgstr "Список сокращений:\n" + #. TRANSLATORS: %s is language (for example "perl") #, fuzzy, c-format msgid "list of %s scripts" @@ -5406,6 +5533,10 @@ msgid "" "Without argument, this command opens buffer with xfer list." msgstr "" +#, fuzzy +msgid "nicks of DCC chat" +msgstr "список ников на канале" + msgid "auto open xfer buffer when a new xfer is added to list" msgstr "" @@ -5552,6 +5683,10 @@ msgid "%s%s: timeout for \"%s\" with %s" msgstr "%s нет аргумента для параметра \"%s\"\n" #, fuzzy +#~ msgid "list of aliases" +#~ msgstr "Список сокращений:\n" + +#, fuzzy #~ msgid "" #~ "smart completion for nicks (completes first with last speakers, " #~ "highlights or both)" @@ -5569,10 +5704,6 @@ msgstr "%s нет аргумента для параметра \"%s\"\n" #~ msgstr " (нет pluginа)\n" #, fuzzy -#~ msgid " (masked by a plugin)" -#~ msgstr " (нет pluginа)\n" - -#, fuzzy #~ msgid "plugin:" #~ msgstr " (нет pluginа)\n" diff --git a/po/weechat.pot b/po/weechat.pot index c89054c38..190b6546a 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-04-07 18:12+0200\n" +"POT-Creation-Date: 2009-04-09 12:57+0200\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" @@ -333,18 +333,15 @@ msgstr "" msgid "Key bindings (%d):" msgstr "" -msgid "Default key bindings restored" +msgid "Key:" msgstr "" -#, c-format -msgid "%sError: \"-yes\" argument is required for keys reset (security reason)" +msgid "No key found" msgstr "" #, c-format -msgid "%d new key added" -msgid_plural "%d new keys added" -msgstr[0] "" -msgstr[1] "" +msgid "%sError: unable to bind key \"%s\"" +msgstr "" #, c-format msgid "Key \"%s\" unbound" @@ -354,15 +351,18 @@ msgstr "" msgid "%sError: unable to unbind key \"%s\"" msgstr "" -msgid "Key:" +msgid "Default key bindings restored" msgstr "" -msgid "No key found" +#, c-format +msgid "%sError: \"-yes\" argument is required for keys reset (security reason)" msgstr "" #, c-format -msgid "%sError: unable to bind key \"%s\"" -msgstr "" +msgid "%d new key added" +msgid_plural "%d new keys added" +msgstr[0] "" +msgstr[1] "" #, c-format msgid "leaf: id: %d, parent: %d, plugin: \"%s\", buffer: \"%s\"" @@ -870,15 +870,15 @@ msgstr "" msgid "bind/unbind keys" msgstr "" -msgid "[key [command [args]]] | [unbind key] | [reset -yes] | [missing]" +msgid "[bind key [command [args]]] | [unbind key] | [reset -yes] | [missing]" msgstr "" msgid "" -" key: display or bind this key to a command\n" -" unbind: unbind a key\n" -" reset: restore bindings to the default values and delete ALL personal " +" bind: bind a command to a key or display command bound to key\n" +" unbind: remove a key binding\n" +" reset: restore bindings to the default values and delete ALL personal " "bindings (use carefully!)\n" -" missing: add missing keys (using default bindings)" +"missing: add missing keys (using default bindings)" msgstr "" msgid "save/apply/reset layout for buffers and windows" @@ -1757,6 +1757,66 @@ msgstr "" msgid "Not enough memory for new line" msgstr "" +msgid "names of buffers" +msgstr "" + +msgid "numbers of buffers" +msgstr "" + +msgid "names of buffers (including plugins names)" +msgstr "" + +msgid "configuration files" +msgstr "" + +msgid "filename" +msgstr "" + +msgid "names of filters" +msgstr "" + +msgid "commands (weechat and plugins)" +msgstr "" + +msgid "names of infos hooked" +msgstr "" + +msgid "names of infolists hooked" +msgstr "" + +msgid "nicks in nicklist of current buffer" +msgstr "" + +msgid "configuration options" +msgstr "" + +msgid "names of plugins" +msgstr "" + +msgid "commands defined by plugins" +msgstr "" + +msgid "names of bars" +msgstr "" + +msgid "values for a configuration option" +msgstr "" + +msgid "weechat commands" +msgstr "" + +msgid "names of proxies" +msgstr "" + +msgid "options for proxies" +msgstr "" + +msgid "options for bars" +msgstr "" + +msgid "key codes" +msgstr "" + msgid "Error: not enough memory to add a buffer to hotlist" msgstr "" @@ -1880,6 +1940,9 @@ msgid "" "Input line beginning with a '/' is not checked, except for some commands." msgstr "" +msgid "list of supported langs for aspell" +msgstr "" + msgid "comma separated list of dictionaries to use on this buffer" msgstr "" @@ -2954,6 +3017,39 @@ msgstr "" msgid "%s%s: command \"%s\" must be executed on connected irc server" msgstr "" +msgid "current IRC server" +msgstr "" + +msgid "nick on current IRC server" +msgstr "" + +msgid "nicks on all channels of current IRC server" +msgstr "" + +msgid "IRC servers (internal names)" +msgstr "" + +msgid "current IRC channel" +msgstr "" + +msgid "nicks of current IRC channel" +msgstr "" + +msgid "nicks and hostnames of current IRC channel" +msgstr "" + +msgid "topic of current IRC channel" +msgstr "" + +msgid "IRC channels (on all servers)" +msgstr "" + +msgid "default part message for IRC channel" +msgstr "" + +msgid "numbers for defined ignores" +msgstr "" + #, c-format msgid "" "%s%s: warning: server \"%s\" not found in configuration file, not deleted in " @@ -4447,6 +4543,9 @@ msgid "" "Without argument, this command lists all loaded scripts." msgstr "" +msgid "list of scripts" +msgstr "" + #. TRANSLATORS: %s is language (for example "perl") #, c-format msgid "list of %s scripts" @@ -4698,6 +4797,9 @@ msgid "" "Without argument, this command opens buffer with xfer list." msgstr "" +msgid "nicks of DCC chat" +msgstr "" + msgid "auto open xfer buffer when a new xfer is added to list" msgstr "" diff --git a/src/core/wee-command.c b/src/core/wee-command.c index cd11607c3..85f0a9328 100644 --- a/src/core/wee-command.c +++ b/src/core/wee-command.c @@ -1753,42 +1753,46 @@ command_key (void *data, struct t_gui_buffer *buffer, return WEECHAT_RC_OK; } - /* reset keys (only with "-yes", for security reason) */ - if (string_strcasecmp (argv[1], "reset") == 0) + /* bind a key (or display binding) */ + if (string_strcasecmp (argv[1], "bind") == 0) { - if ((argc >= 3) && (string_strcasecmp (argv[2], "-yes") == 0)) + if (argc == 3) { - gui_keyboard_free_all (&gui_keys, &last_gui_key); - gui_keyboard_default_bindings (); - gui_chat_printf (NULL, - _("Default key bindings restored")); + ptr_key = NULL; + internal_code = gui_keyboard_get_internal_code (argv[2]); + if (internal_code) + ptr_key = gui_keyboard_search (NULL, internal_code); + if (ptr_key) + { + gui_chat_printf (NULL, ""); + gui_chat_printf (NULL, _("Key:")); + command_key_display (ptr_key); + } + else + { + gui_chat_printf (NULL, + _("No key found")); + } + if (internal_code) + free (internal_code); + return WEECHAT_RC_OK; } - else + + /* bind new key */ + gui_keyboard_verbose = 1; + ptr_key = gui_keyboard_bind (NULL, argv[2], argv_eol[3]); + gui_keyboard_verbose = 0; + if (!ptr_key) { gui_chat_printf (NULL, - _("%sError: \"-yes\" argument is required for " - "keys reset (security reason)"), - gui_chat_prefix[GUI_CHAT_PREFIX_ERROR]); + _("%sError: unable to bind key \"%s\""), + gui_chat_prefix[GUI_CHAT_PREFIX_ERROR], + argv[2]); return WEECHAT_RC_ERROR; } return WEECHAT_RC_OK; } - /* add missing keys */ - if (string_strcasecmp (argv[1], "missing") == 0) - { - old_keys_count = gui_keys_count; - gui_keyboard_verbose = 1; - gui_keyboard_default_bindings (); - gui_keyboard_verbose = 0; - keys_added = (gui_keys_count > old_keys_count) ? - gui_keys_count - old_keys_count : 0; - gui_chat_printf (NULL, - NG_("%d new key added", "%d new keys added", keys_added), - keys_added); - return WEECHAT_RC_OK; - } - /* unbind a key */ if (string_strcasecmp (argv[1], "unbind") == 0) { @@ -1812,40 +1816,40 @@ command_key (void *data, struct t_gui_buffer *buffer, return WEECHAT_RC_OK; } - /* display a key */ - if (argc == 2) + /* reset keys (only with "-yes", for security reason) */ + if (string_strcasecmp (argv[1], "reset") == 0) { - ptr_key = NULL; - internal_code = gui_keyboard_get_internal_code (argv[1]); - if (internal_code) - ptr_key = gui_keyboard_search (NULL, internal_code); - if (ptr_key) + if ((argc >= 3) && (string_strcasecmp (argv[2], "-yes") == 0)) { - gui_chat_printf (NULL, ""); - gui_chat_printf (NULL, _("Key:")); - command_key_display (ptr_key); + gui_keyboard_free_all (&gui_keys, &last_gui_key); + gui_keyboard_default_bindings (); + gui_chat_printf (NULL, + _("Default key bindings restored")); } else { gui_chat_printf (NULL, - _("No key found")); + _("%sError: \"-yes\" argument is required for " + "keys reset (security reason)"), + gui_chat_prefix[GUI_CHAT_PREFIX_ERROR]); + return WEECHAT_RC_ERROR; } - if (internal_code) - free (internal_code); return WEECHAT_RC_OK; } - /* bind new key */ - gui_keyboard_verbose = 1; - ptr_key = gui_keyboard_bind (NULL, argv[1], argv_eol[2]); - gui_keyboard_verbose = 0; - if (!ptr_key) + /* add missing keys */ + if (string_strcasecmp (argv[1], "missing") == 0) { + old_keys_count = gui_keys_count; + gui_keyboard_verbose = 1; + gui_keyboard_default_bindings (); + gui_keyboard_verbose = 0; + keys_added = (gui_keys_count > old_keys_count) ? + gui_keys_count - old_keys_count : 0; gui_chat_printf (NULL, - _("%sError: unable to bind key \"%s\""), - gui_chat_prefix[GUI_CHAT_PREFIX_ERROR], - argv[1]); - return WEECHAT_RC_ERROR; + NG_("%d new key added", "%d new keys added", keys_added), + keys_added); + return WEECHAT_RC_OK; } return WEECHAT_RC_OK; @@ -3658,10 +3662,17 @@ command_init () " /bar scroll nicklist #weechat y-100%\n" " scroll to end of nicklist on current buffer:\n" " /bar scroll nicklist * ye"), - "add|default|del|set|hide|show|toggle|scroll|list|listfull|" - "listitems %r name|hidden|priority|conditions|position|" - "filling_top_bottom|filling_left_right|size|size_max|" - "color_fg|color_delim|color_bg|separator|items", + "add %(bars_names) root|window bottom|top|left|right" + " || default" + " || del %(bars_names)|-all" + " || set %(bars_names) %(bars_options)" + " || hide %(bars_names)" + " || show %(bars_names)" + " || toggle %(bars_names)" + " || scroll %(bars_names) %(buffers_plugins_names)|*" + " || list" + " || listfull" + " || listitems", &command_bar, NULL); hook_command (NULL, "buffer", N_("manage buffers"), @@ -3686,7 +3697,15 @@ command_init () " close buffer: /buffer close\n" " jump to #weechat: /buffer #weechat\n" " jump to next buffer: /buffer +1"), - "clear|move|close|list|notify|localvar|set|%b %b", + "clear -all|%(buffers_numbers)" + " || move %(buffers_numbers)" + " || close" + " || list" + " || notify" + " || localvar" + " || set" + " || %(buffers_names)" + " || %(buffers_numbers)", &command_buffer, NULL); hook_command (NULL, "command", N_("launch explicit WeeChat or plugin command"), @@ -3695,7 +3714,7 @@ command_init () "command)\n" "command: command to execute (a '/' is automatically " "added if not found at beginning of command)"), - "%p|" PLUGIN_CORE " %P", + "%(plugins_names)|" PLUGIN_CORE " %(plugins_commands)", &command_command, NULL); hook_command (NULL, "debug", N_("control debug for core/plugins"), @@ -3709,7 +3728,7 @@ command_init () "windows: display windows tree\n" " text: send \"debug\" signal with \"text\" as " "argument"), - "%p|core|list|dump|buffer|windows", + "%(plugins_names)|core|list|dump|buffer|windows", &command_debug, NULL); hook_command (NULL, "filter", N_("filter messages in buffers, to hide/show them according " @@ -3745,14 +3764,19 @@ command_init () " filter lines containing \"weechat sucks\" on IRC " "channel #weechat:\n" " /filter add sucks irc.freenode.#weechat * weechat sucks"), - "list|enable|disable|toggle|add|rename|del %F %B", + "list" + " || enable %(filters_names)" + " || disable %(filters_names)" + " || toggle %(filters_names)" + " || add %(filters_names) %(buffers_plugins_names)|*" + " || del %(filters_names)|-all", &command_filter, NULL); hook_command (NULL, "help", N_("display help about commands and options"), N_("[command | option]"), N_("command: a command name\n" " option: an option name (use /set to see list)"), - "%h|%o", + "%(commands)|%(config_options)", &command_help, NULL); hook_command (NULL, "history", N_("show buffer command history"), @@ -3791,14 +3815,18 @@ command_init () &command_input, NULL); hook_command (NULL, "key", N_("bind/unbind keys"), - N_("[key [command [args]]] | [unbind key] | [reset -yes] | " - "[missing]"), - N_(" key: display or bind this key to a command\n" - " unbind: unbind a key\n" - " reset: restore bindings to the default values and " + N_("[bind key [command [args]]] | [unbind key] | " + "[reset -yes] | [missing]"), + N_(" bind: bind a command to a key or display command " + "bound to key\n" + " unbind: remove a key binding\n" + " reset: restore bindings to the default values and " "delete ALL personal bindings (use carefully!)\n" - " missing: add missing keys (using default bindings)"), - "unbind|reset|missing", + "missing: add missing keys (using default bindings)"), + "bind %(keys_codes) %(commands)" + " || unbind %(key_codes)" + " || reset" + " || missing", &command_key, NULL); hook_command (NULL, "layout", N_("save/apply/reset layout for buffers and windows"), @@ -3824,7 +3852,12 @@ command_init () "all plugins, then autoload plugins)\n" " unload: unload one or all plugins\n\n" "Without argument, this command lists loaded plugins."), - "list|listfull|load|autoload|reload|unload %f|%p", + "list %(plugins_names)" + " || listfull %(plugins_names)" + " || load %(filename)" + " || autoload" + " || reload %(plugins_names)" + " || unload %(plugins_names)", &command_plugin, NULL); hook_command (NULL, "proxy", N_("manage proxies"), @@ -3854,7 +3887,10 @@ command_init () " /proxy add myproxy socks5 sample.host.org 3128 myuser mypass\n" " delete a proxy:\n" " /proxy del myproxy"), - "add|del|set|list %y name|type|ipv6|address|port|username|password", + "add %(proxies_names) http|socks4|socks5" + " || del %(proxies_names)" + " || set %(proxies_names) %(proxies_options)" + " || list ", &command_proxy, NULL); hook_command (NULL, "quit", N_("quit WeeChat"), @@ -3867,7 +3903,7 @@ command_init () N_("file: configuration file to reload\n\n" "Without argument, all files (WeeChat and plugins) are " "reloaded."), - "%c|%*", + "%(config_files)|%*", &command_reload, NULL); hook_command (NULL, "save", N_("save configuration files to disk"), @@ -3875,7 +3911,7 @@ command_init () N_("file: configuration file to save\n\n" "Without argument, all files (WeeChat and plugins) are " "saved."), - "%c|%*", + "%(config_files)|%*", &command_save, NULL); hook_command (NULL, "set", N_("set config options"), @@ -3890,7 +3926,7 @@ command_init () "For all types, you can use null to remove " "option value (undefined value). This works only " "for some special plugin variables."), - "%o %v", + "%(config_options) %(config_option_values)", &command_set, NULL); hook_command (NULL, "unset", N_("unset/reset config options"), @@ -3899,7 +3935,7 @@ command_init () "to mass-reset options, use carefully!)\n\n" "According to option, it's reset (for standard options) " "or removed (for optional settings, like server values)."), - "%o", + "%(config_options)", &command_unset, NULL); hook_command (NULL, "upgrade", N_("upgrade WeeChat without disconnecting from servers"), @@ -3909,7 +3945,7 @@ command_init () "This command run again a WeeChat binary, so it should " "have been compiled or installed with a package manager " "before running this command."), - "%f", + "%(filename)", &command_upgrade, NULL); hook_command (NULL, "uptime", N_("show WeeChat uptime"), @@ -3967,10 +4003,11 @@ command_init () " scroll 2 lines up: /window scroll -2\n" " scroll 2 days up: /window scroll -2d\n" " scroll to beginning of current day: /window scroll -d"), - "list|-1|+1|up|down|left|right|splith|splitv|resize|merge|" - "page_up|page_down|refresh|scroll_up|scroll|scroll_down|" - "scroll_top|scroll_bottom|scroll_previous_highlight|" - "scroll_next_highlight|zoom all", + "list|-1|+1|up|down|left|right|splith|splitv|resize|page_up|" + "page_down|refresh|scroll_up|scroll|scroll_down|scroll_top|" + "scroll_bottom|scroll_previous_highlight|" + "scroll_next_highlight|zoom" + " || merge all", &command_window, NULL); } diff --git a/src/core/wee-config.c b/src/core/wee-config.c index 5841516f0..94ccb915b 100644 --- a/src/core/wee-config.c +++ b/src/core/wee-config.c @@ -1606,7 +1606,7 @@ config_weechat_init_options () "default_template", "string", N_("default completion template (please see documentation for template " "codes and values)"), - NULL, 0, 0, "%n|%(irc_channels)", NULL, 0, + NULL, 0, 0, "%(nicks)|%(irc_channels)", NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL); config_completion_nick_add_space = config_file_new_option ( weechat_config_file, ptr_section, diff --git a/src/core/wee-hook.c b/src/core/wee-hook.c index f5e880488..c6e41d97f 100644 --- a/src/core/wee-hook.c +++ b/src/core/wee-hook.c @@ -35,9 +35,11 @@ #include "weechat.h" #include "wee-hook.h" #include "wee-infolist.h" +#include "wee-list.h" #include "wee-log.h" #include "wee-network.h" #include "wee-string.h" +#include "wee-utf8.h" #include "wee-util.h" #include "../gui/gui-buffer.h" #include "../gui/gui-chat.h" @@ -322,6 +324,164 @@ hook_search_command (struct t_weechat_plugin *plugin, const char *command) } /* + * hook_command_build_completion: build variables/arrays that will be used for + * completion of commands arguments + */ + +void +hook_command_build_completion (struct t_hook_command *hook_command) +{ + int i, j, k, length, num_items; + struct t_weelist *list; + char *pos_completion, *pos_double_pipe, *pos_start, *pos_end; + char **items, *last_space, *ptr_template; + + /* split templates using "||" as separator */ + hook_command->cplt_num_templates = 1; + pos_completion = hook_command->completion; + while ((pos_double_pipe = strstr (pos_completion, "||")) != NULL) + { + hook_command->cplt_num_templates++; + pos_completion = pos_double_pipe + 2; + } + hook_command->cplt_templates = malloc (hook_command->cplt_num_templates * + sizeof (*hook_command->cplt_templates)); + for (i = 0; i < hook_command->cplt_num_templates; i++) + { + hook_command->cplt_templates[i] = NULL; + } + pos_completion = hook_command->completion; + i = 0; + while (pos_completion) + { + pos_double_pipe = strstr (pos_completion, "||"); + if (!pos_double_pipe) + pos_double_pipe = pos_completion + strlen (pos_completion); + pos_start = pos_completion; + pos_end = pos_double_pipe - 1; + if (pos_end < pos_start) + { + hook_command->cplt_templates[i] = strdup (""); + } + else + { + while (pos_start[0] == ' ') + { + pos_start++; + } + pos_end = pos_double_pipe - 1; + while ((pos_end > pos_start) && (pos_end[0] == ' ')) + { + pos_end--; + } + hook_command->cplt_templates[i] = string_strndup (pos_start, + pos_end - pos_start + 1); + } + i++; + if (!pos_double_pipe[0]) + pos_completion = NULL; + else + pos_completion = pos_double_pipe + 2; + } + + /* for each template, split/count args */ + hook_command->cplt_templates_static = malloc (hook_command->cplt_num_templates * + sizeof (*hook_command->cplt_templates_static)); + hook_command->cplt_template_num_args = malloc (hook_command->cplt_num_templates * + sizeof (*hook_command->cplt_template_num_args)); + hook_command->cplt_template_args = malloc (hook_command->cplt_num_templates * + sizeof (*hook_command->cplt_template_args)); + hook_command->cplt_template_num_args_concat = 0; + for (i = 0; i < hook_command->cplt_num_templates; i++) + { + /* build static part of template: it's first argument(s) which does not + contain "%" or "|" */ + last_space = NULL; + ptr_template = hook_command->cplt_templates[i]; + while (ptr_template && ptr_template[0]) + { + if (ptr_template[0] == ' ') + last_space = ptr_template; + else if ((ptr_template[0] == '%') || (ptr_template[0] == '|')) + break; + ptr_template = utf8_next_char (ptr_template); + } + if (last_space) + { + last_space--; + while (last_space > hook_command->cplt_templates[i]) + { + if (last_space[0] != ' ') + break; + } + if (last_space < hook_command->cplt_templates[i]) + last_space = NULL; + else + last_space++; + } + if (last_space) + hook_command->cplt_templates_static[i] = string_strndup (hook_command->cplt_templates[i], + last_space - hook_command->cplt_templates[i]); + else + hook_command->cplt_templates_static[i] = strdup (hook_command->cplt_templates[i]); + + /* build arguments for each template */ + hook_command->cplt_template_args[i] = string_explode (hook_command->cplt_templates[i], + " ", 0, 0, + &(hook_command->cplt_template_num_args[i])); + if (hook_command->cplt_template_num_args[i] > hook_command->cplt_template_num_args_concat) + hook_command->cplt_template_num_args_concat = hook_command->cplt_template_num_args[i]; + } + + /* build strings with concatentaion of items from different templates + for each argument: these strings will be used when completing argument + if we can't find which template to use (for example for first argument) + */ + hook_command->cplt_template_args_concat = malloc (hook_command->cplt_template_num_args_concat * + sizeof (*hook_command->cplt_template_args_concat)); + list = weelist_new (); + for (i = 0; i < hook_command->cplt_template_num_args_concat; i++) + { + /* first compute length */ + length = 1; + for (j = 0; j < hook_command->cplt_num_templates; j++) + { + if (i < hook_command->cplt_template_num_args[j]) + length += strlen (hook_command->cplt_template_args[j][i]) + 1; + } + /* alloc memory */ + hook_command->cplt_template_args_concat[i] = malloc (length); + if (hook_command->cplt_template_args_concat[i]) + { + /* concatene items with "|" as separator */ + weelist_remove_all (list); + hook_command->cplt_template_args_concat[i][0] = '\0'; + for (j = 0; j < hook_command->cplt_num_templates; j++) + { + if (i < hook_command->cplt_template_num_args[j]) + { + items = string_explode (hook_command->cplt_template_args[j][i], + "|", 0, 0, &num_items); + for (k = 0; k < num_items; k++) + { + if (!weelist_search (list, items[k])) + { + if (hook_command->cplt_template_args_concat[i][0]) + strcat (hook_command->cplt_template_args_concat[i], "|"); + strcat (hook_command->cplt_template_args_concat[i], + items[k]); + weelist_add (list, items[k], WEECHAT_LIST_POS_END, + NULL); + } + } + string_free_exploded (items); + } + } + } + } +} + +/* * hook_command: hook a command */ @@ -374,6 +534,16 @@ hook_command (struct t_weechat_plugin *plugin, const char *command, new_hook_command->completion = (completion) ? strdup (completion) : strdup (""); + /* build completion variables for command */ + new_hook_command->cplt_num_templates = 0; + new_hook_command->cplt_templates = NULL; + new_hook_command->cplt_templates_static = NULL; + new_hook_command->cplt_template_num_args = NULL; + new_hook_command->cplt_template_args = NULL; + new_hook_command->cplt_template_num_args_concat = 0; + new_hook_command->cplt_template_args_concat = NULL; + hook_command_build_completion (new_hook_command); + hook_add_to_list (new_hook); return new_hook; @@ -1593,6 +1763,7 @@ hook_config_exec (const char *option, const char *value) struct t_hook * hook_completion (struct t_weechat_plugin *plugin, const char *completion_item, + const char *description, t_hook_callback_completion *callback, void *callback_data) { struct t_hook *new_hook; @@ -1617,6 +1788,8 @@ hook_completion (struct t_weechat_plugin *plugin, const char *completion_item, new_hook->hook_data = new_hook_completion; new_hook_completion->callback = callback; new_hook_completion->completion_item = strdup (completion_item); + new_hook_completion->description = + (description) ? strdup (description) : strdup (""); hook_add_to_list (new_hook); @@ -1950,6 +2123,8 @@ hook_infolist_get (struct t_weechat_plugin *plugin, const char *infolist_name, void unhook (struct t_hook *hook) { + int i; + /* invalid hook? */ if (!hook_valid (hook)) return; @@ -1982,6 +2157,20 @@ unhook (struct t_hook *hook) free (HOOK_COMMAND(hook, args_description)); if (HOOK_COMMAND(hook, completion)) free (HOOK_COMMAND(hook, completion)); + if (HOOK_COMMAND(hook, cplt_templates)) + { + for (i = 0; i < HOOK_COMMAND(hook, cplt_num_templates); i++) + { + if (HOOK_COMMAND(hook, cplt_templates)[i]) + free (HOOK_COMMAND(hook, cplt_templates)[i]); + if (HOOK_COMMAND(hook, cplt_templates_static)[i]) + free (HOOK_COMMAND(hook, cplt_templates_static)[i]); + string_free_exploded (HOOK_COMMAND(hook, cplt_template_args)[i]); + } + free (HOOK_COMMAND(hook, cplt_templates)); + } + if (HOOK_COMMAND(hook, cplt_template_num_args)) + free (HOOK_COMMAND(hook, cplt_template_num_args)); break; case HOOK_TYPE_COMMAND_RUN: if (HOOK_COMMAND_RUN(hook, command)) @@ -2048,6 +2237,8 @@ unhook (struct t_hook *hook) case HOOK_TYPE_COMPLETION: if (HOOK_COMPLETION(hook, completion_item)) free (HOOK_COMPLETION(hook, completion_item)); + if (HOOK_COMPLETION(hook, description)) + free (HOOK_COMPLETION(hook, description)); break; case HOOK_TYPE_MODIFIER: if (HOOK_MODIFIER(hook, modifier)) @@ -2343,6 +2534,13 @@ hook_add_to_infolist_type (struct t_infolist *infolist, return 0; if (!infolist_new_var_string (ptr_item, "completion_item", HOOK_COMPLETION(ptr_hook, completion_item))) return 0; + if (!infolist_new_var_string (ptr_item, "description", HOOK_COMPLETION(ptr_hook, description))) + return 0; + if (!infolist_new_var_string (ptr_item, "description_nls", + (HOOK_COMPLETION(ptr_hook, description) + && HOOK_COMPLETION(ptr_hook, description)[0]) ? + _(HOOK_COMPLETION(ptr_hook, description)) : "")) + return 0; } break; case HOOK_TYPE_MODIFIER: @@ -2429,7 +2627,7 @@ hook_add_to_infolist (struct t_infolist *infolist, void hook_print_log () { - int type; + int type, i, j; struct t_hook *ptr_hook; struct tm *local_time; char text_time[1024]; @@ -2441,164 +2639,186 @@ hook_print_log () { log_printf (""); log_printf ("[hook (addr:0x%lx)]", ptr_hook); - log_printf (" plugin . . . . . . . . : 0x%lx ('%s')", + log_printf (" plugin. . . . . . . . . : 0x%lx ('%s')", ptr_hook->plugin, plugin_get_name (ptr_hook->plugin)); - log_printf (" deleted. . . . . . . . : %d", ptr_hook->deleted); - log_printf (" running. . . . . . . . : %d", ptr_hook->running); - log_printf (" type . . . . . . . . . : %d (%s)", + log_printf (" deleted . . . . . . . . : %d", ptr_hook->deleted); + log_printf (" running . . . . . . . . : %d", ptr_hook->running); + log_printf (" type. . . . . . . . . . : %d (%s)", ptr_hook->type, hook_type_string[ptr_hook->type]); - log_printf (" callback_data. . . . . : 0x%lx", ptr_hook->callback_data); + log_printf (" callback_data . . . . . : 0x%lx", ptr_hook->callback_data); switch (ptr_hook->type) { case HOOK_TYPE_COMMAND: if (!ptr_hook->deleted) { log_printf (" command data:"); - log_printf (" callback . . . . . . : 0x%lx", HOOK_COMMAND(ptr_hook, callback)); - log_printf (" command. . . . . . . : '%s'", HOOK_COMMAND(ptr_hook, command)); - log_printf (" description. . . . . : '%s'", HOOK_COMMAND(ptr_hook, description)); - log_printf (" args . . . . . . . . : '%s'", HOOK_COMMAND(ptr_hook, args)); - log_printf (" args_description . . : '%s'", HOOK_COMMAND(ptr_hook, args_description)); - log_printf (" completion . . . . . : '%s'", HOOK_COMMAND(ptr_hook, completion)); + log_printf (" callback. . . . . . . : 0x%lx", HOOK_COMMAND(ptr_hook, callback)); + log_printf (" command . . . . . . . : '%s'", HOOK_COMMAND(ptr_hook, command)); + log_printf (" description . . . . . : '%s'", HOOK_COMMAND(ptr_hook, description)); + log_printf (" args. . . . . . . . . : '%s'", HOOK_COMMAND(ptr_hook, args)); + log_printf (" args_description. . . : '%s'", HOOK_COMMAND(ptr_hook, args_description)); + log_printf (" completion. . . . . . : '%s'", HOOK_COMMAND(ptr_hook, completion)); + log_printf (" cplt_num_templates. . : %d", HOOK_COMMAND(ptr_hook, cplt_num_templates)); + for (i = 0; i < HOOK_COMMAND(ptr_hook, cplt_num_templates); i++) + { + log_printf (" cplt_templates[%04d] . . . : '%s'", + i, HOOK_COMMAND(ptr_hook, cplt_templates)[i]); + log_printf (" cplt_templates_static[%04d]: '%s'", + i, HOOK_COMMAND(ptr_hook, cplt_templates_static)[i]); + log_printf (" num_args. . . . . . : %d", + HOOK_COMMAND(ptr_hook, cplt_template_num_args)[i]); + for (j = 0; j < HOOK_COMMAND(ptr_hook, cplt_template_num_args)[i]; j++) + { + log_printf (" args[%04d]. . . . . : '%s'", + j, HOOK_COMMAND(ptr_hook, cplt_template_args)[i][j]); + } + } + log_printf (" num_args_concat . . . : %d", HOOK_COMMAND(ptr_hook, cplt_template_num_args_concat)); + for (i = 0; i < HOOK_COMMAND(ptr_hook, cplt_template_num_args_concat); i++) + { + log_printf (" args_concat[%04d] . . : '%s'", + i, HOOK_COMMAND(ptr_hook, cplt_template_args_concat)[i]); + } } break; case HOOK_TYPE_COMMAND_RUN: if (!ptr_hook->deleted) { log_printf (" command_run data:"); - log_printf (" callback . . . . . . : 0x%lx", HOOK_COMMAND_RUN(ptr_hook, callback)); - log_printf (" command. . . . . . . : '%s'", HOOK_COMMAND_RUN(ptr_hook, command)); + log_printf (" callback. . . . . . . : 0x%lx", HOOK_COMMAND_RUN(ptr_hook, callback)); + log_printf (" command . . . . . . . : '%s'", HOOK_COMMAND_RUN(ptr_hook, command)); } break; case HOOK_TYPE_TIMER: if (!ptr_hook->deleted) { log_printf (" timer data:"); - log_printf (" callback . . . . . . : 0x%lx", HOOK_TIMER(ptr_hook, callback)); - log_printf (" interval . . . . . . : %ld", HOOK_TIMER(ptr_hook, interval)); - log_printf (" align_second . . . . : %d", HOOK_TIMER(ptr_hook, align_second)); - log_printf (" remaining_calls. . . : %d", HOOK_TIMER(ptr_hook, remaining_calls)); + log_printf (" callback. . . . . . . : 0x%lx", HOOK_TIMER(ptr_hook, callback)); + log_printf (" interval. . . . . . . : %ld", HOOK_TIMER(ptr_hook, interval)); + log_printf (" align_second. . . . . : %d", HOOK_TIMER(ptr_hook, align_second)); + log_printf (" remaining_calls . . . : %d", HOOK_TIMER(ptr_hook, remaining_calls)); local_time = localtime (&HOOK_TIMER(ptr_hook, last_exec).tv_sec); strftime (text_time, sizeof (text_time), "%d/%m/%Y %H:%M:%S", local_time); - log_printf (" last_exec.tv_sec . . : %ld (%s)", + log_printf (" last_exec.tv_sec. . . : %ld (%s)", HOOK_TIMER(ptr_hook, last_exec.tv_sec), text_time); - log_printf (" last_exec.tv_usec. . : %ld", HOOK_TIMER(ptr_hook, last_exec.tv_usec)); + log_printf (" last_exec.tv_usec . . : %ld", HOOK_TIMER(ptr_hook, last_exec.tv_usec)); local_time = localtime (&HOOK_TIMER(ptr_hook, next_exec).tv_sec); strftime (text_time, sizeof (text_time), "%d/%m/%Y %H:%M:%S", local_time); - log_printf (" next_exec.tv_sec . . : %ld (%s)", + log_printf (" next_exec.tv_sec. . . : %ld (%s)", HOOK_TIMER(ptr_hook, next_exec.tv_sec), text_time); - log_printf (" next_exec.tv_usec. . : %ld", HOOK_TIMER(ptr_hook, next_exec.tv_usec)); + log_printf (" next_exec.tv_usec . . : %ld", HOOK_TIMER(ptr_hook, next_exec.tv_usec)); } break; case HOOK_TYPE_FD: if (!ptr_hook->deleted) { log_printf (" fd data:"); - log_printf (" callback . . . . . . : 0x%lx", HOOK_FD(ptr_hook, callback)); - log_printf (" fd . . . . . . . . . : %d", HOOK_FD(ptr_hook, fd)); - log_printf (" flags. . . . . . . . : %d", HOOK_FD(ptr_hook, flags)); + log_printf (" callback. . . . . . . : 0x%lx", HOOK_FD(ptr_hook, callback)); + log_printf (" fd. . . . . . . . . . : %d", HOOK_FD(ptr_hook, fd)); + log_printf (" flags . . . . . . . . : %d", HOOK_FD(ptr_hook, flags)); } break; case HOOK_TYPE_PROCESS: if (!ptr_hook->deleted) { log_printf (" process data:"); - log_printf (" callback . . . . . . : 0x%lx", HOOK_PROCESS(ptr_hook, callback)); - log_printf (" command. . . . . . . : '%s'", HOOK_PROCESS(ptr_hook, command)); - log_printf (" timeout. . . . . . . : %d", HOOK_PROCESS(ptr_hook, timeout)); - log_printf (" child_stdout_read. . : %d", HOOK_PROCESS(ptr_hook, child_stdout_read)); - log_printf (" child_stdout_write . : %d", HOOK_PROCESS(ptr_hook, child_stdout_write)); - log_printf (" child_stderr_read. . : %d", HOOK_PROCESS(ptr_hook, child_stderr_read)); - log_printf (" child_stderr_write . : %d", HOOK_PROCESS(ptr_hook, child_stderr_write)); - log_printf (" child_pid. . . . . . : %d", HOOK_PROCESS(ptr_hook, child_pid)); - log_printf (" hook_fd_stdout . . . : 0x%lx", HOOK_PROCESS(ptr_hook, hook_fd_stdout)); - log_printf (" hook_fd_stderr . . . : 0x%lx", HOOK_PROCESS(ptr_hook, hook_fd_stderr)); - log_printf (" hook_timer . . . . . : 0x%lx", HOOK_PROCESS(ptr_hook, hook_timer)); + log_printf (" callback. . . . . . . : 0x%lx", HOOK_PROCESS(ptr_hook, callback)); + log_printf (" command . . . . . . . : '%s'", HOOK_PROCESS(ptr_hook, command)); + log_printf (" timeout . . . . . . . : %d", HOOK_PROCESS(ptr_hook, timeout)); + log_printf (" child_stdout_read . . : %d", HOOK_PROCESS(ptr_hook, child_stdout_read)); + log_printf (" child_stdout_write. . : %d", HOOK_PROCESS(ptr_hook, child_stdout_write)); + log_printf (" child_stderr_read . . : %d", HOOK_PROCESS(ptr_hook, child_stderr_read)); + log_printf (" child_stderr_write. . : %d", HOOK_PROCESS(ptr_hook, child_stderr_write)); + log_printf (" child_pid . . . . . . : %d", HOOK_PROCESS(ptr_hook, child_pid)); + log_printf (" hook_fd_stdout. . . . : 0x%lx", HOOK_PROCESS(ptr_hook, hook_fd_stdout)); + log_printf (" hook_fd_stderr. . . . : 0x%lx", HOOK_PROCESS(ptr_hook, hook_fd_stderr)); + log_printf (" hook_timer. . . . . . : 0x%lx", HOOK_PROCESS(ptr_hook, hook_timer)); } break; case HOOK_TYPE_CONNECT: if (!ptr_hook->deleted) { log_printf (" connect data:"); - log_printf (" callback . . . . . . : 0x%lx", HOOK_CONNECT(ptr_hook, callback)); - log_printf (" address. . . . . . . : '%s'", HOOK_CONNECT(ptr_hook, address)); - log_printf (" port . . . . . . . . : %d", HOOK_CONNECT(ptr_hook, port)); - log_printf (" sock . . . . . . . . : %d", HOOK_CONNECT(ptr_hook, sock)); - log_printf (" ipv6 . . . . . . . . : %d", HOOK_CONNECT(ptr_hook, ipv6)); + log_printf (" callback. . . . . . . : 0x%lx", HOOK_CONNECT(ptr_hook, callback)); + log_printf (" address . . . . . . . : '%s'", HOOK_CONNECT(ptr_hook, address)); + log_printf (" port. . . . . . . . . : %d", HOOK_CONNECT(ptr_hook, port)); + log_printf (" sock. . . . . . . . . : %d", HOOK_CONNECT(ptr_hook, sock)); + log_printf (" ipv6. . . . . . . . . : %d", HOOK_CONNECT(ptr_hook, ipv6)); #ifdef HAVE_GNUTLS - log_printf (" gnutls_sess. . . . . : 0x%lx", HOOK_CONNECT(ptr_hook, gnutls_sess)); + log_printf (" gnutls_sess . . . . . : 0x%lx", HOOK_CONNECT(ptr_hook, gnutls_sess)); #endif - log_printf (" local_hostname . . . : '%s'", HOOK_CONNECT(ptr_hook, local_hostname)); - log_printf (" child_read . . . . . : %d", HOOK_CONNECT(ptr_hook, child_read)); - log_printf (" child_write. . . . . : %d", HOOK_CONNECT(ptr_hook, child_write)); - log_printf (" child_pid. . . . . . : %d", HOOK_CONNECT(ptr_hook, child_pid)); - log_printf (" hook_fd. . . . . . . : 0x%lx", HOOK_CONNECT(ptr_hook, hook_fd)); + log_printf (" local_hostname. . . . : '%s'", HOOK_CONNECT(ptr_hook, local_hostname)); + log_printf (" child_read. . . . . . : %d", HOOK_CONNECT(ptr_hook, child_read)); + log_printf (" child_write . . . . . : %d", HOOK_CONNECT(ptr_hook, child_write)); + log_printf (" child_pid . . . . . . : %d", HOOK_CONNECT(ptr_hook, child_pid)); + log_printf (" hook_fd . . . . . . . : 0x%lx", HOOK_CONNECT(ptr_hook, hook_fd)); } break; case HOOK_TYPE_PRINT: if (!ptr_hook->deleted) { log_printf (" print data:"); - log_printf (" callback . . . . . . : 0x%lx", HOOK_PRINT(ptr_hook, callback)); - log_printf (" buffer . . . . . . . : 0x%lx", HOOK_PRINT(ptr_hook, buffer)); - log_printf (" tags_count . . . . . : %d", HOOK_PRINT(ptr_hook, tags_count)); - log_printf (" tags_array . . . . . : 0x%lx", HOOK_PRINT(ptr_hook, tags_array)); - log_printf (" message. . . . . . . : '%s'", HOOK_PRINT(ptr_hook, message)); - log_printf (" strip_colors . . . . : %d", HOOK_PRINT(ptr_hook, strip_colors)); + log_printf (" callback. . . . . . . : 0x%lx", HOOK_PRINT(ptr_hook, callback)); + log_printf (" buffer. . . . . . . . : 0x%lx", HOOK_PRINT(ptr_hook, buffer)); + log_printf (" tags_count. . . . . . : %d", HOOK_PRINT(ptr_hook, tags_count)); + log_printf (" tags_array. . . . . . : 0x%lx", HOOK_PRINT(ptr_hook, tags_array)); + log_printf (" message . . . . . . . : '%s'", HOOK_PRINT(ptr_hook, message)); + log_printf (" strip_colors. . . . . : %d", HOOK_PRINT(ptr_hook, strip_colors)); } break; case HOOK_TYPE_SIGNAL: if (!ptr_hook->deleted) { log_printf (" signal data:"); - log_printf (" callback . . . . . . : 0x%lx", HOOK_SIGNAL(ptr_hook, callback)); - log_printf (" signal . . . . . . . : '%s'", HOOK_SIGNAL(ptr_hook, signal)); + log_printf (" callback. . . . . . . : 0x%lx", HOOK_SIGNAL(ptr_hook, callback)); + log_printf (" signal. . . . . . . . : '%s'", HOOK_SIGNAL(ptr_hook, signal)); } break; case HOOK_TYPE_CONFIG: if (!ptr_hook->deleted) { log_printf (" config data:"); - log_printf (" callback . . . . . . : 0x%lx", HOOK_CONFIG(ptr_hook, callback)); - log_printf (" option . . . . . . . : '%s'", HOOK_CONFIG(ptr_hook, option)); + log_printf (" callback. . . . . . . : 0x%lx", HOOK_CONFIG(ptr_hook, callback)); + log_printf (" option. . . . . . . . : '%s'", HOOK_CONFIG(ptr_hook, option)); } break; case HOOK_TYPE_COMPLETION: if (!ptr_hook->deleted) { log_printf (" completion data:"); - log_printf (" callback . . . . . . : 0x%lx", HOOK_COMPLETION(ptr_hook, callback)); - log_printf (" completion_item. . . : '%s'", HOOK_COMPLETION(ptr_hook, completion_item)); + log_printf (" callback. . . . . . . : 0x%lx", HOOK_COMPLETION(ptr_hook, callback)); + log_printf (" completion_item . . . : '%s'", HOOK_COMPLETION(ptr_hook, completion_item)); + log_printf (" description . . . . . : '%s'", HOOK_COMPLETION(ptr_hook, description)); } break; case HOOK_TYPE_MODIFIER: if (!ptr_hook->deleted) { log_printf (" modifier data:"); - log_printf (" callback . . . . . . : 0x%lx", HOOK_MODIFIER(ptr_hook, callback)); - log_printf (" modifier . . . . . . : '%s'", HOOK_MODIFIER(ptr_hook, modifier)); + log_printf (" callback. . . . . . . : 0x%lx", HOOK_MODIFIER(ptr_hook, callback)); + log_printf (" modifier. . . . . . . : '%s'", HOOK_MODIFIER(ptr_hook, modifier)); } break; case HOOK_TYPE_INFO: if (!ptr_hook->deleted) { log_printf (" info data:"); - log_printf (" callback . . . . . . : 0x%lx", HOOK_INFO(ptr_hook, callback)); - log_printf (" info_name. . . . . . : '%s'", HOOK_INFO(ptr_hook, info_name)); - log_printf (" description. . . . . : '%s'", HOOK_INFO(ptr_hook, description)); + log_printf (" callback. . . . . . . : 0x%lx", HOOK_INFO(ptr_hook, callback)); + log_printf (" info_name . . . . . . : '%s'", HOOK_INFO(ptr_hook, info_name)); + log_printf (" description . . . . . : '%s'", HOOK_INFO(ptr_hook, description)); } break; case HOOK_TYPE_INFOLIST: if (!ptr_hook->deleted) { log_printf (" infolist data:"); - log_printf (" callback . . . . . . : 0x%lx", HOOK_INFOLIST(ptr_hook, callback)); - log_printf (" infolist_name. . . . : '%s'", HOOK_INFOLIST(ptr_hook, infolist_name)); - log_printf (" description. . . . . : '%s'", HOOK_INFOLIST(ptr_hook, description)); + log_printf (" callback. . . . . . . : 0x%lx", HOOK_INFOLIST(ptr_hook, callback)); + log_printf (" infolist_name . . . . : '%s'", HOOK_INFOLIST(ptr_hook, infolist_name)); + log_printf (" description . . . . . : '%s'", HOOK_INFOLIST(ptr_hook, description)); } break; case HOOK_NUM_TYPES: @@ -2606,8 +2826,8 @@ hook_print_log () it is never used as type */ break; } - log_printf (" prev_hook. . . . . . . : 0x%lx", ptr_hook->prev_hook); - log_printf (" next_hook. . . . . . . : 0x%lx", ptr_hook->next_hook); + log_printf (" prev_hook . . . . . . . : 0x%lx", ptr_hook->prev_hook); + log_printf (" next_hook . . . . . . . : 0x%lx", ptr_hook->next_hook); } } } diff --git a/src/core/wee-hook.h b/src/core/wee-hook.h index fb6aa0010..2827d3c31 100644 --- a/src/core/wee-hook.h +++ b/src/core/wee-hook.h @@ -97,12 +97,26 @@ typedef int (t_hook_callback_command)(void *data, struct t_gui_buffer *buffer, struct t_hook_command { - t_hook_callback_command *callback; /* command callback */ - char *command; /* name of command (without '/') */ - char *description; /* (for /help) short cmd description */ - char *args; /* (for /help) command arguments */ - char *args_description; /* (for /help) args long description */ - char *completion; /* template for completion */ + t_hook_callback_command *callback; /* command callback */ + char *command; /* name of command (without '/') */ + char *description; /* (for /help) short cmd description*/ + char *args; /* (for /help) command arguments */ + char *args_description; /* (for /help) args long description*/ + char *completion; /* template for completion */ + + /* templates */ + int cplt_num_templates; /* number of templates for compl. */ + char **cplt_templates; /* completion templates */ + char **cplt_templates_static; /* static part of template (at */ + /* beginning */ + + /* arguments for each template */ + int *cplt_template_num_args; /* number of arguments for template */ + char ***cplt_template_args; /* arguments for each template */ + + /* concatenation of arg N for each template */ + int cplt_template_num_args_concat; /* number of concatened arguments */ + char **cplt_template_args_concat; /* concatened arguments */ }; /* hook command run */ @@ -241,6 +255,7 @@ struct t_hook_completion { t_hook_callback_completion *callback; /* completion callback */ char *completion_item; /* name of completion */ + char *description; /* description */ }; /* hook modifier */ @@ -355,6 +370,7 @@ extern struct t_hook *hook_config (struct t_weechat_plugin *plugin, extern void hook_config_exec (const char *option, const char *value); extern struct t_hook *hook_completion (struct t_weechat_plugin *plugin, const char *completion_item, + const char *description, t_hook_callback_completion *callback, void *callback_data); extern void hook_completion_list_add (struct t_gui_completion *completion, diff --git a/src/core/wee-proxy.h b/src/core/wee-proxy.h index b4fde0b44..b7b521f73 100644 --- a/src/core/wee-proxy.h +++ b/src/core/wee-proxy.h @@ -52,6 +52,7 @@ struct t_proxy /* variables */ +extern char *proxy_option_string[]; extern char *proxy_type_string[]; extern struct t_proxy *weechat_proxies; extern struct t_proxy *last_weechat_proxy; diff --git a/src/core/weechat.c b/src/core/weechat.c index 236f5c3db..d32e0c53e 100644 --- a/src/core/weechat.c +++ b/src/core/weechat.c @@ -64,6 +64,7 @@ #include "wee-util.h" #include "../gui/gui-chat.h" #include "../gui/gui-color.h" +#include "../gui/gui-completion.h" #include "../gui/gui-layout.h" #include "../gui/gui-main.h" #include "../gui/gui-keyboard.h" @@ -388,6 +389,7 @@ main (int argc, char *argv[]) gui_main_pre_init (&argc, &argv); /* pre-initiliaze interface */ weechat_init_vars (); /* initialize some variables */ command_init (); /* initialize WeeChat commands */ + gui_completion_init (); /* add core completion hooks */ gui_keyboard_init (); /* init keyboard */ if (!config_weechat_init ()) /* init options with default values */ exit (EXIT_FAILURE); diff --git a/src/gui/gui-bar.h b/src/gui/gui-bar.h index 5b9484912..2a8f79694 100644 --- a/src/gui/gui-bar.h +++ b/src/gui/gui-bar.h @@ -98,6 +98,7 @@ struct t_gui_bar /* variables */ +extern char *gui_bar_option_string[]; extern char *gui_bar_type_string[]; extern char *gui_bar_position_string[]; extern char *gui_bar_filling_string[]; diff --git a/src/gui/gui-buffer.c b/src/gui/gui-buffer.c index 142d99abb..9a9858e56 100644 --- a/src/gui/gui-buffer.c +++ b/src/gui/gui-buffer.c @@ -346,7 +346,7 @@ gui_buffer_new (struct t_weechat_plugin *plugin, if (new_completion) { new_buffer->completion = new_completion; - gui_completion_init (new_completion, new_buffer); + gui_completion_buffer_init (new_completion, new_buffer); } /* init history */ diff --git a/src/gui/gui-completion.c b/src/gui/gui-completion.c index 482c55fd2..50e4b5328 100644 --- a/src/gui/gui-completion.c +++ b/src/gui/gui-completion.c @@ -16,7 +16,7 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -/* gui-completion.c: completes words according to context */ +/* gui-completion.c: word completion according to context */ #ifdef HAVE_CONFIG_H @@ -54,17 +54,17 @@ struct t_gui_completion_partial *last_gui_completion_partial = NULL; /* - * gui_completion_init: init completion + * gui_completion_buffer_init: init completion for a buffer */ void -gui_completion_init (struct t_gui_completion *completion, - struct t_gui_buffer *buffer) +gui_completion_buffer_init (struct t_gui_completion *completion, + struct t_gui_buffer *buffer) { completion->buffer = buffer; completion->context = GUI_COMPLETION_NULL; completion->base_command = NULL; - completion->base_command_arg = 0; + completion->base_command_arg_index = 0; completion->base_word = NULL; completion->base_word_pos = 0; completion->position = -1; @@ -334,49 +334,134 @@ gui_completion_list_add (struct t_gui_completion *completion, const char *word, } /* - * gui_completion_list_add_bars_names: add bars names to completion list + * gui_completion_list_add_bars_names_cb: add bars names to completion list */ -void -gui_completion_list_add_bars_names (struct t_gui_completion *completion) +int +gui_completion_list_add_bars_names_cb (void *data, + const char *completion_item, + struct t_gui_buffer *buffer, + struct t_gui_completion *completion) { struct t_gui_bar *ptr_bar; - + + /* make C compiler happy */ + (void) data; + (void) completion_item; + (void) buffer; + for (ptr_bar = gui_bars; ptr_bar; ptr_bar = ptr_bar->next_bar) { gui_completion_list_add (completion, ptr_bar->name, 0, WEECHAT_LIST_POS_SORT); } + + return WEECHAT_RC_OK; } /* - * gui_completion_list_add_buffers_names: add buffers names to completion list + * gui_completion_list_add_bars_options: add bars options to completion list */ -void -gui_completion_list_add_buffers_names (struct t_gui_completion *completion) +int +gui_completion_list_add_bars_options_cb (void *data, + const char *completion_item, + struct t_gui_buffer *buffer, + struct t_gui_completion *completion) { - struct t_gui_buffer *ptr_buffer; + int i; + + /* make C compiler happy */ + (void) data; + (void) completion_item; + (void) buffer; + + for (i = 0; i < GUI_BAR_NUM_OPTIONS; i++) + { + gui_completion_list_add (completion, gui_bar_option_string[i], + 0, WEECHAT_LIST_POS_SORT); + } + + return WEECHAT_RC_OK; +} +/* + * gui_completion_list_add_buffers_names_cb: add buffers names to completion + * list + */ + +int +gui_completion_list_add_buffers_names_cb (void *data, + const char *completion_item, + struct t_gui_buffer *buffer, + struct t_gui_completion *completion) +{ + struct t_gui_buffer *ptr_buffer; + + /* make C compiler happy */ + (void) data; + (void) completion_item; + (void) buffer; + for (ptr_buffer = gui_buffers; ptr_buffer; ptr_buffer = ptr_buffer->next_buffer) { gui_completion_list_add (completion, ptr_buffer->name, 0, WEECHAT_LIST_POS_SORT); } + + return WEECHAT_RC_OK; } /* - * gui_completion_list_add_plugins_buffers_names: add plugins + buffers names - * to completion list + * gui_completion_list_add_buffers_numbers_cb: add buffers numbers to + * completion list */ -void -gui_completion_list_add_plugins_buffers_names (struct t_gui_completion *completion) +int +gui_completion_list_add_buffers_numbers_cb (void *data, + const char *completion_item, + struct t_gui_buffer *buffer, + struct t_gui_completion *completion) +{ + struct t_gui_buffer *ptr_buffer; + char str_number[32]; + + /* make C compiler happy */ + (void) data; + (void) completion_item; + (void) buffer; + + for (ptr_buffer = gui_buffers; ptr_buffer; + ptr_buffer = ptr_buffer->next_buffer) + { + snprintf (str_number, sizeof (str_number), "%d", ptr_buffer->number); + gui_completion_list_add (completion, str_number, + 0, WEECHAT_LIST_POS_END); + } + + return WEECHAT_RC_OK; +} + +/* + * gui_completion_list_add_buffers_plugins_names_cb: add plugins + buffers names + * to completion list + */ + +int +gui_completion_list_add_buffers_plugins_names_cb (void *data, + const char *completion_item, + struct t_gui_buffer *buffer, + struct t_gui_completion *completion) { struct t_gui_buffer *ptr_buffer; char name[512]; + /* make C compiler happy */ + (void) data; + (void) completion_item; + (void) buffer; + for (ptr_buffer = gui_buffers; ptr_buffer; ptr_buffer = ptr_buffer->next_buffer) { @@ -386,45 +471,65 @@ gui_completion_list_add_plugins_buffers_names (struct t_gui_completion *completi gui_completion_list_add (completion, name, 0, WEECHAT_LIST_POS_SORT); } + + return WEECHAT_RC_OK; } /* - * gui_completion_list_add_config_files: add config files to completion list + * gui_completion_list_add_config_files_cb: add config files to completion list */ -void -gui_completion_list_add_config_files (struct t_gui_completion *completion) +int +gui_completion_list_add_config_files_cb (void *data, + const char *completion_item, + struct t_gui_buffer *buffer, + struct t_gui_completion *completion) { struct t_config_file *ptr_config_file; - + + /* make C compiler happy */ + (void) data; + (void) completion_item; + (void) buffer; + for (ptr_config_file = config_files; ptr_config_file; ptr_config_file = ptr_config_file->next_config) { gui_completion_list_add (completion, ptr_config_file->name, 0, WEECHAT_LIST_POS_SORT); } + + return WEECHAT_RC_OK; } /* * gui_completion_list_add_filename: add filename to completion list */ -void -gui_completion_list_add_filename (struct t_gui_completion *completion) +int +gui_completion_list_add_filename_cb (void *data, + const char *completion_item, + struct t_gui_buffer *buffer, + struct t_gui_completion *completion) { char *path_d, *path_b, *p, *d_name; char *real_prefix, *prefix; - char *buffer; - int buffer_len; + char *buf; + int buf_len; DIR *dp; struct dirent *entry; struct stat statbuf; char home[3] = { '~', DIR_SEPARATOR_CHAR, '\0' }; - buffer_len = PATH_MAX; - buffer = malloc (buffer_len); - if (!buffer) - return; + /* make C compiler happy */ + (void) data; + (void) completion_item; + (void) buffer; + + buf_len = PATH_MAX; + buf = malloc (buf_len); + if (!buf) + return WEECHAT_RC_OK; completion->add_space = 0; @@ -445,22 +550,22 @@ gui_completion_list_add_filename (struct t_gui_completion *completion) prefix = strdup (DIR_SEPARATOR); } - snprintf (buffer, buffer_len, "%s", completion->base_word + strlen (prefix)); - p = strrchr (buffer, DIR_SEPARATOR_CHAR); + snprintf (buf, buf_len, "%s", completion->base_word + strlen (prefix)); + p = strrchr (buf, DIR_SEPARATOR_CHAR); if (p) { *p = '\0'; - path_d = strdup (buffer); + path_d = strdup (buf); p++; path_b = strdup (p); } else { path_d = strdup (""); - path_b = strdup (buffer); + path_b = strdup (buf); } - sprintf (buffer, "%s%s%s", real_prefix, DIR_SEPARATOR, path_d); - d_name = strdup (buffer); + sprintf (buf, "%s%s%s", real_prefix, DIR_SEPARATOR, path_d); + d_name = strdup (buf); dp = opendir (d_name); if (dp != NULL) { @@ -471,12 +576,12 @@ gui_completion_list_add_filename (struct t_gui_completion *completion) if (strcmp (entry->d_name, ".") == 0 || strcmp (entry->d_name, "..") == 0) continue; - snprintf(buffer, buffer_len, "%s%s%s", + snprintf(buf, buf_len, "%s%s%s", d_name, DIR_SEPARATOR, entry->d_name); - if (stat(buffer, &statbuf) == -1) + if (stat(buf, &statbuf) == -1) continue; - snprintf(buffer, buffer_len, "%s%s%s%s%s%s", + snprintf(buf, buf_len, "%s%s%s%s%s%s", prefix, ((strcmp(prefix, "") == 0) || strchr(prefix, DIR_SEPARATOR_CHAR)) ? "" : DIR_SEPARATOR, @@ -485,7 +590,7 @@ gui_completion_list_add_filename (struct t_gui_completion *completion) entry->d_name, S_ISDIR(statbuf.st_mode) ? DIR_SEPARATOR : ""); - gui_completion_list_add (completion, buffer, + gui_completion_list_add (completion, buf, 0, WEECHAT_LIST_POS_SORT); } } @@ -497,35 +602,55 @@ gui_completion_list_add_filename (struct t_gui_completion *completion) free (real_prefix); free (path_d); free (path_b); - free (buffer); + free (buf); + + return WEECHAT_RC_OK; } /* - * gui_completion_list_add_filters: add filters to completion list + * gui_completion_list_add_filters_cb: add filters to completion list */ -void -gui_completion_list_add_filters (struct t_gui_completion *completion) +int +gui_completion_list_add_filters_cb (void *data, + const char *completion_item, + struct t_gui_buffer *buffer, + struct t_gui_completion *completion) { struct t_gui_filter *ptr_filter; + /* make C compiler happy */ + (void) data; + (void) completion_item; + (void) buffer; + for (ptr_filter = gui_filters; ptr_filter; ptr_filter = ptr_filter->next_filter) { gui_completion_list_add (completion, ptr_filter->name, 0, WEECHAT_LIST_POS_SORT); } + + return WEECHAT_RC_OK; } /* - * gui_completion_list_add_command_hooks: add command hooks to completion list + * gui_completion_list_add_commands_cb: add command hooks to completion list */ -void -gui_completion_list_add_command_hooks (struct t_gui_completion *completion) +int +gui_completion_list_add_commands_cb (void *data, + const char *completion_item, + struct t_gui_buffer *buffer, + struct t_gui_completion *completion) { struct t_hook *ptr_hook; + /* make C compiler happy */ + (void) data; + (void) completion_item; + (void) buffer; + for (ptr_hook = weechat_hooks[HOOK_TYPE_COMMAND]; ptr_hook; ptr_hook = ptr_hook->next_hook) { @@ -536,17 +661,27 @@ gui_completion_list_add_command_hooks (struct t_gui_completion *completion) HOOK_COMMAND(ptr_hook, command), 0, WEECHAT_LIST_POS_SORT); } + + return WEECHAT_RC_OK; } /* - * gui_completion_list_add_info_hooks: add info hooks to completion list + * gui_completion_list_add_infos_cb: add info hooks to completion list */ -void -gui_completion_list_add_info_hooks (struct t_gui_completion *completion) +int +gui_completion_list_add_infos_cb (void *data, + const char *completion_item, + struct t_gui_buffer *buffer, + struct t_gui_completion *completion) { struct t_hook *ptr_hook; + /* make C compiler happy */ + (void) data; + (void) completion_item; + (void) buffer; + for (ptr_hook = weechat_hooks[HOOK_TYPE_INFO]; ptr_hook; ptr_hook = ptr_hook->next_hook) { @@ -557,17 +692,27 @@ gui_completion_list_add_info_hooks (struct t_gui_completion *completion) HOOK_INFO(ptr_hook, info_name), 0, WEECHAT_LIST_POS_SORT); } + + return WEECHAT_RC_OK; } /* - * gui_completion_list_add_infolist_hooks: add infolist hooks to completion list + * gui_completion_list_add_infolists_cb: add infolist hooks to completion list */ -void -gui_completion_list_add_infolist_hooks (struct t_gui_completion *completion) +int +gui_completion_list_add_infolists_cb (void *data, + const char *completion_item, + struct t_gui_buffer *buffer, + struct t_gui_completion *completion) { struct t_hook *ptr_hook; + /* make C compiler happy */ + (void) data; + (void) completion_item; + (void) buffer; + for (ptr_hook = weechat_hooks[HOOK_TYPE_INFOLIST]; ptr_hook; ptr_hook = ptr_hook->next_hook) { @@ -578,19 +723,29 @@ gui_completion_list_add_infolist_hooks (struct t_gui_completion *completion) HOOK_INFOLIST(ptr_hook, infolist_name), 0, WEECHAT_LIST_POS_SORT); } + + return WEECHAT_RC_OK; } /* - * gui_completion_list_add_nicks: add nicks to completion list + * gui_completion_list_add_nicks_cb: add nicks to completion list */ -void -gui_completion_list_add_nicks (struct t_gui_completion *completion) +int +gui_completion_list_add_nicks_cb (void *data, + const char *completion_item, + struct t_gui_buffer *buffer, + struct t_gui_completion *completion) { struct t_gui_nick_group *ptr_group; struct t_gui_nick *ptr_nick; int count_before; + /* make C compiler happy */ + (void) data; + (void) completion_item; + (void) buffer; + count_before = weelist_size (completion->completion_list); hook_completion_exec (completion->buffer->plugin, "nick", @@ -616,14 +771,20 @@ gui_completion_list_add_nicks (struct t_gui_completion *completion) &ptr_group, &ptr_nick); } } + + return WEECHAT_RC_OK; } /* - * gui_completion_list_add_option: add config option to completion list + * gui_completion_list_add_config_options_cb: add config option to completion + * list */ -void -gui_completion_list_add_option (struct t_gui_completion *completion) +int +gui_completion_list_add_config_options_cb (void *data, + const char *completion_item, + struct t_gui_buffer *buffer, + struct t_gui_completion *completion) { struct t_config_file *ptr_config; struct t_config_section *ptr_section; @@ -631,6 +792,11 @@ gui_completion_list_add_option (struct t_gui_completion *completion) int length; char *option_full_name; + /* make C compiler happy */ + (void) data; + (void) completion_item; + (void) buffer; + for (ptr_config = config_files; ptr_config; ptr_config = ptr_config->next_config) { @@ -657,38 +823,58 @@ gui_completion_list_add_option (struct t_gui_completion *completion) } } } + + return WEECHAT_RC_OK; } /* - * gui_completion_list_add_plugin: add plugin name to completion list + * gui_completion_list_add_plugins_cb: add plugin name to completion list */ -void -gui_completion_list_add_plugin (struct t_gui_completion *completion) +int +gui_completion_list_add_plugins_cb (void *data, + const char *completion_item, + struct t_gui_buffer *buffer, + struct t_gui_completion *completion) { struct t_weechat_plugin *ptr_plugin; + /* make C compiler happy */ + (void) data; + (void) completion_item; + (void) buffer; + for (ptr_plugin = weechat_plugins; ptr_plugin; ptr_plugin = ptr_plugin->next_plugin) { gui_completion_list_add (completion, ptr_plugin->name, 0, WEECHAT_LIST_POS_SORT); } + + return WEECHAT_RC_OK; } /* - * gui_completion_list_add_plugin_commands: add plugin commands to completion - * list (plugin name is previous - * argument) + * gui_completion_list_add_plugins_commands_cb: add plugin commands to completion + * list (plugin name is previous + * argument) */ -void -gui_completion_list_add_plugin_commands (struct t_gui_completion *completion) +int +gui_completion_list_add_plugins_commands_cb (void *data, + const char *completion_item, + struct t_gui_buffer *buffer, + struct t_gui_completion *completion) { char *pos_space, *plugin_name; struct t_weechat_plugin *ptr_plugin; struct t_hook *ptr_hook; + /* make C compiler happy */ + (void) data; + (void) completion_item; + (void) buffer; + if (completion->args) { pos_space = strchr (completion->args, ' '); @@ -707,7 +893,7 @@ gui_completion_list_add_plugin_commands (struct t_gui_completion *completion) plugin list */ ptr_plugin = plugin_search (plugin_name); if (!ptr_plugin) - return; + return WEECHAT_RC_OK; } for (ptr_hook = weechat_hooks[HOOK_TYPE_COMMAND]; ptr_hook; ptr_hook = ptr_hook->next_hook) @@ -725,14 +911,20 @@ gui_completion_list_add_plugin_commands (struct t_gui_completion *completion) free (plugin_name); } } + + return WEECHAT_RC_OK; } /* - * gui_completion_list_add_option_value: add option value to completion list + * gui_completion_list_add_config_option_values_cb: add option value to + * completion list */ -void -gui_completion_list_add_option_value (struct t_gui_completion *completion) +int +gui_completion_list_add_config_option_values_cb (void *data, + const char *completion_item, + struct t_gui_buffer *buffer, + struct t_gui_completion *completion) { char *pos_space, *option_full_name, *pos_section, *pos_option; char *file, *section, *value_string; @@ -742,6 +934,11 @@ gui_completion_list_add_option_value (struct t_gui_completion *completion) struct t_config_section *ptr_section, *section_found; struct t_config_option *option_found; + /* make C compiler happy */ + (void) data; + (void) completion_item; + (void) buffer; + if (completion->args) { pos_space = strchr (completion->args, ' '); @@ -943,17 +1140,28 @@ gui_completion_list_add_option_value (struct t_gui_completion *completion) free (section); } } + + return WEECHAT_RC_OK; } /* - * gui_completion_list_add_weechat_cmd: add WeeChat commands to completion list + * gui_completion_list_add_weechat_commands_cb: add WeeChat commands to + * completion list */ -void -gui_completion_list_add_weechat_cmd (struct t_gui_completion *completion) +int +gui_completion_list_add_weechat_commands_cb (void *data, + const char *completion_item, + struct t_gui_buffer *buffer, + struct t_gui_completion *completion) { struct t_hook *ptr_hook; + /* make C compiler happy */ + (void) data; + (void) completion_item; + (void) buffer; + for (ptr_hook = weechat_hooks[HOOK_TYPE_COMMAND]; ptr_hook; ptr_hook = ptr_hook->next_hook) { @@ -967,23 +1175,94 @@ gui_completion_list_add_weechat_cmd (struct t_gui_completion *completion) 0, WEECHAT_LIST_POS_SORT); } } + + return WEECHAT_RC_OK; } /* - * gui_completion_list_add_proxies_names: add proxies names to completion list + * gui_completion_list_add_proxies_names_cb: add proxies names to completion + * list */ -void -gui_completion_list_add_proxies_names (struct t_gui_completion *completion) +int +gui_completion_list_add_proxies_names_cb (void *data, + const char *completion_item, + struct t_gui_buffer *buffer, + struct t_gui_completion *completion) { struct t_proxy *ptr_proxy; + /* make C compiler happy */ + (void) data; + (void) completion_item; + (void) buffer; + for (ptr_proxy = weechat_proxies; ptr_proxy; ptr_proxy = ptr_proxy->next_proxy) { gui_completion_list_add (completion, ptr_proxy->name, 0, WEECHAT_LIST_POS_SORT); } + + return WEECHAT_RC_OK; +} + +/* + * gui_completion_list_add_proxies_options: add proxies options to completion + * list + */ + +int +gui_completion_list_add_proxies_options_cb (void *data, + const char *completion_item, + struct t_gui_buffer *buffer, + struct t_gui_completion *completion) +{ + int i; + + /* make C compiler happy */ + (void) data; + (void) completion_item; + (void) buffer; + + for (i = 0; i < PROXY_NUM_OPTIONS; i++) + { + gui_completion_list_add (completion, proxy_option_string[i], + 0, WEECHAT_LIST_POS_SORT); + } + + return WEECHAT_RC_OK; +} + +/* + * gui_completion_list_add_keys_codes_cb: add keys to completion list + */ + +int +gui_completion_list_add_keys_codes_cb (void *data, + const char *completion_item, + struct t_gui_buffer *buffer, + struct t_gui_completion *completion) +{ + struct t_gui_key *ptr_key; + char *expanded_name; + + /* make C compiler happy */ + (void) data; + (void) completion_item; + (void) buffer; + + for (ptr_key = gui_keys; ptr_key; ptr_key = ptr_key->next_key) + { + expanded_name = gui_keyboard_get_expanded_name (ptr_key->key); + gui_completion_list_add (completion, + (expanded_name) ? expanded_name : ptr_key->key, + 0, WEECHAT_LIST_POS_SORT); + if (expanded_name) + free (expanded_name); + } + + return WEECHAT_RC_OK; } /* @@ -1045,54 +1324,6 @@ gui_completion_build_list_template (struct t_gui_completion *completion, break; case '*': /* repeat last completion (do nothing there) */ break; - case 'b': /* buffers names */ - gui_completion_list_add_buffers_names (completion); - break; - case 'B': /* plugin + "." + buffer name */ - gui_completion_list_add_plugins_buffers_names (completion); - break; - case 'c': /* config files */ - gui_completion_list_add_config_files (completion); - break; - case 'f': /* filename */ - gui_completion_list_add_filename (completion); - break; - case 'F': /* filters */ - gui_completion_list_add_filters (completion); - break; - case 'h': /* command hooks */ - gui_completion_list_add_command_hooks (completion); - break; - case 'i': /* infos hooked */ - gui_completion_list_add_info_hooks (completion); - break; - case 'I': /* infolists hooked */ - gui_completion_list_add_infolist_hooks (completion); - break; - case 'n': /* nick */ - gui_completion_list_add_nicks (completion); - break; - case 'o': /* config option */ - gui_completion_list_add_option (completion); - break; - case 'p': /* plugin name */ - gui_completion_list_add_plugin (completion); - break; - case 'P': /* plugin commands */ - gui_completion_list_add_plugin_commands (completion); - break; - case 'r': /* bar names */ - gui_completion_list_add_bars_names (completion); - break; - case 'v': /* value of config option */ - gui_completion_list_add_option_value (completion); - break; - case 'w': /* WeeChat commands */ - gui_completion_list_add_weechat_cmd (completion); - break; - case 'y': /* proxy names */ - gui_completion_list_add_proxies_names (completion); - break; case '(': /* custom completion by a plugin */ pos++; pos_end = strchr (pos, ')'); @@ -1128,16 +1359,77 @@ gui_completion_build_list_template (struct t_gui_completion *completion, } /* - * gui_completion_build_list: build data list according to command and argument # + * gui_completion_get_matching_template: get template matching arguments for + * command + */ + +int +gui_completion_get_matching_template (struct t_gui_completion *completion, + struct t_hook *hook_command) +{ + int i, length; + + /* without at least one argument, we can't find matching template! */ + if (completion->base_command_arg_index <= 1) + return -1; + + for (i = 0; i < HOOK_COMMAND(hook_command, cplt_num_templates); i++) + { + length = strlen (HOOK_COMMAND(hook_command, cplt_templates_static)[i]); + if ((strncmp (HOOK_COMMAND(hook_command, cplt_templates_static)[i], + completion->args, length) == 0) + && (completion->args[length] == ' ')) + { + return i; + } + } + + return -1; +} + +/* + * gui_completion_get_template_for_args: get template according to user + * arguments for command + */ + +char * +gui_completion_get_template_for_args (struct t_gui_completion *completion, + struct t_hook *hook_command) +{ + int matching_template; + + /* if only one template available, then use it */ + if (HOOK_COMMAND(hook_command, cplt_num_templates) == 1) + return strdup (HOOK_COMMAND(hook_command, cplt_templates)[0]); + + /* search which template is matching arguments from user */ + matching_template = gui_completion_get_matching_template (completion, + hook_command); + if (matching_template >= 0) + { + return strdup (HOOK_COMMAND(hook_command, cplt_templates[matching_template])); + } + else + { + if (HOOK_COMMAND(hook_command, cplt_template_num_args_concat) >= completion->base_command_arg_index) + return strdup (HOOK_COMMAND(hook_command, cplt_template_args_concat[completion->base_command_arg_index - 1])); + else + return strdup (""); + } +} + +/* + * gui_completion_build_list: build data list according to command and + * argument index */ void gui_completion_build_list (struct t_gui_completion *completion) { struct t_hook *ptr_hook; - char *pos_template, *pos_space; + char *template, *pos_template, *pos_space; int repeat_last, i, length; - + repeat_last = 0; ptr_hook = gui_completion_search_command (completion); @@ -1148,30 +1440,36 @@ gui_completion_build_list (struct t_gui_completion *completion) return; } - length = strlen (HOOK_COMMAND(ptr_hook, completion)); + template = gui_completion_get_template_for_args (completion, ptr_hook); + if (!template) + return; + + length = strlen (template); if (length >= 2) { - if (strcmp (HOOK_COMMAND(ptr_hook, completion) + length - 2, - "%*") == 0) + if (strcmp (template + length - 2, "%*") == 0) repeat_last = 1; } i = 1; - pos_template = HOOK_COMMAND(ptr_hook, completion); + pos_template = template; while (pos_template && pos_template[0]) { pos_space = strchr (pos_template, ' '); - if (i == completion->base_command_arg) + if (i == completion->base_command_arg_index) { gui_completion_build_list_template (completion, pos_template, ptr_hook->plugin); + free (template); return; } if (pos_space) { pos_template = pos_space; while (pos_template[0] == ' ') + { pos_template++; + } } else pos_template = NULL; @@ -1186,6 +1484,7 @@ gui_completion_build_list (struct t_gui_completion *completion) completion), ptr_hook->plugin); } + free (template); } /* @@ -1200,7 +1499,7 @@ gui_completion_find_context (struct t_gui_completion *completion, /* look for context */ gui_completion_free_data (completion); - gui_completion_init (completion, completion->buffer); + gui_completion_buffer_init (completion, completion->buffer); command = ((data[0] == '/') && (data[1] != '/')) ? 1 : 0; command_arg = 0; i = 0; @@ -1222,12 +1521,12 @@ gui_completion_find_context (struct t_gui_completion *completion, if (command_arg > 0) { completion->context = GUI_COMPLETION_COMMAND_ARG; - completion->base_command_arg = command_arg; + completion->base_command_arg_index = command_arg; } else { completion->context = GUI_COMPLETION_COMMAND; - completion->base_command_arg = 0; + completion->base_command_arg_index = 0; } } else @@ -1637,7 +1936,7 @@ gui_completion_auto (struct t_gui_completion *completion) || (completion->base_word[0] == '~')) { if (!completion->completion_list->items) - gui_completion_list_add_filename (completion); + gui_completion_list_add_filename_cb (NULL, NULL, NULL, completion); gui_completion_complete (completion); return; } @@ -1731,7 +2030,7 @@ gui_completion_print_log (struct t_gui_completion *completion) log_printf (" buffer. . . . . . . . . : 0x%lx", completion->buffer); log_printf (" context . . . . . . . . : %d", completion->context); log_printf (" base_command. . . . . . : '%s'", completion->base_command); - log_printf (" base_command_arg. . . . : %d", completion->base_command_arg); + log_printf (" base_command_arg_index. : %d", completion->base_command_arg_index); log_printf (" base_word . . . . . . . : '%s'", completion->base_word); log_printf (" base_word_pos . . . . . : %d", completion->base_word_pos); log_printf (" position. . . . . . . . : %d", completion->position); @@ -1752,3 +2051,72 @@ gui_completion_print_log (struct t_gui_completion *completion) "completion list element"); } } + +/* + * gui_completion_init: add hooks for completions done by WeeChat core + */ + +void +gui_completion_init () +{ + hook_completion (NULL, "buffers_names", /* it was %b */ + N_("names of buffers"), + &gui_completion_list_add_buffers_names_cb, NULL); + hook_completion (NULL, "buffers_numbers", + N_("numbers of buffers"), + &gui_completion_list_add_buffers_numbers_cb, NULL); + hook_completion (NULL, "buffers_plugins_names", /* it was %B */ + N_("names of buffers (including plugins names)"), + &gui_completion_list_add_buffers_plugins_names_cb, NULL); + hook_completion (NULL, "config_files", /* it was %c */ + N_("configuration files"), + &gui_completion_list_add_config_files_cb, NULL); + hook_completion (NULL, "filename", /* it was %f */ + N_("filename"), + &gui_completion_list_add_filename_cb, NULL); + hook_completion (NULL, "filters_names", /* it was %F */ + N_("names of filters"), + &gui_completion_list_add_filters_cb, NULL); + hook_completion (NULL, "commands", /* it was %h */ + N_("commands (weechat and plugins)"), + &gui_completion_list_add_commands_cb, NULL); + hook_completion (NULL, "infos", /* it was %i */ + N_("names of infos hooked"), + &gui_completion_list_add_infos_cb, NULL); + hook_completion (NULL, "infolists", /* it was %I */ + N_("names of infolists hooked"), + &gui_completion_list_add_infolists_cb, NULL); + hook_completion (NULL, "nicks", /* it was %n */ + N_("nicks in nicklist of current buffer"), + &gui_completion_list_add_nicks_cb, NULL); + hook_completion (NULL, "config_options", /* it was %o */ + N_("configuration options"), + &gui_completion_list_add_config_options_cb, NULL); + hook_completion (NULL, "plugins_names", /* it was %p */ + N_("names of plugins"), + &gui_completion_list_add_plugins_cb, NULL); + hook_completion (NULL, "plugins_commands", /* it was %P */ + N_("commands defined by plugins"), + &gui_completion_list_add_plugins_commands_cb, NULL); + hook_completion (NULL, "bars_names", /* it was %r */ + N_("names of bars"), + &gui_completion_list_add_bars_names_cb, NULL); + hook_completion (NULL, "config_option_values", /* it was %v */ + N_("values for a configuration option"), + &gui_completion_list_add_config_option_values_cb, NULL); + hook_completion (NULL, "weechat_commands", /* it was %w */ + N_("weechat commands"), + &gui_completion_list_add_weechat_commands_cb, NULL); + hook_completion (NULL, "proxies_names", /* it was %y */ + N_("names of proxies"), + &gui_completion_list_add_proxies_names_cb, NULL); + hook_completion (NULL, "proxies_options", + N_("options for proxies"), + &gui_completion_list_add_proxies_options_cb, NULL); + hook_completion (NULL, "bars_options", + N_("options for bars"), + &gui_completion_list_add_bars_options_cb, NULL); + hook_completion (NULL, "keys_codes", + N_("key codes"), + &gui_completion_list_add_keys_codes_cb, NULL); +} diff --git a/src/gui/gui-completion.h b/src/gui/gui-completion.h index 072ecbde3..b5b43654d 100644 --- a/src/gui/gui-completion.h +++ b/src/gui/gui-completion.h @@ -31,7 +31,7 @@ struct t_gui_completion struct t_gui_buffer *buffer; /* buffer where completion was asked */ int context; /* context: null, nick, command, cmd arg */ char *base_command; /* cmd with arg to complete (can be NULL) */ - int base_command_arg; /* # arg to complete (if context=cmd arg) */ + int base_command_arg_index; /* # arg to complete (if context=cmd arg) */ char *base_word; /* word to complete (when Tab was pressed) */ int base_word_pos; /* beggining of base word */ int position; /* position where Tab was pressed */ @@ -63,8 +63,8 @@ extern struct t_gui_completion_partial *gui_completion_partial_list; /* completion functions */ -extern void gui_completion_init (struct t_gui_completion *completion, - struct t_gui_buffer *buffer); +extern void gui_completion_buffer_init (struct t_gui_completion *completion, + struct t_gui_buffer *buffer); extern void gui_completion_free (struct t_gui_completion *completion); extern void gui_completion_stop (struct t_gui_completion *completion, int remove_partial_completion_list); @@ -75,5 +75,6 @@ extern void gui_completion_search (struct t_gui_completion *completion, int direction, const char *data, int size, int pos); extern void gui_completion_print_log (struct t_gui_completion *completion); +extern void gui_completion_init (); #endif /* gui-completion.h */ diff --git a/src/plugins/alias/alias.c b/src/plugins/alias/alias.c index 4c2d0e4c5..53e724fcd 100644 --- a/src/plugins/alias/alias.c +++ b/src/plugins/alias/alias.c @@ -953,7 +953,7 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[]) "by user, and $* is replaced by all arguments.\n" "Variables $nick, $channel and $server are " "replaced by current nick/channel/server."), - "%(alias) %h", + "%(alias) %(commands)", &alias_command_cb, NULL); weechat_hook_command ("unalias", N_("remove an alias"), @@ -962,7 +962,8 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[]) "%(alias)", &unalias_command_cb, NULL); - weechat_hook_completion ("alias", &alias_completion_cb, NULL); + weechat_hook_completion ("alias", N_("list of alias"), + &alias_completion_cb, NULL); alias_info_init (); diff --git a/src/plugins/aspell/weechat-aspell.c b/src/plugins/aspell/weechat-aspell.c index 74724edec..98095f38a 100644 --- a/src/plugins/aspell/weechat-aspell.c +++ b/src/plugins/aspell/weechat-aspell.c @@ -909,6 +909,31 @@ weechat_aspell_command_cb (void *data, struct t_gui_buffer *buffer, return WEECHAT_RC_ERROR; } +/* + * weechat_aspell_completion_langs_cb: completion with aspell langs + */ + +int +weechat_aspell_completion_langs_cb (void *data, const char *completion_item, + struct t_gui_buffer *buffer, + struct t_gui_completion *completion) +{ + int i; + + /* make C compiler happy */ + (void) data; + (void) completion_item; + (void) buffer; + + for (i = 0; langs_avail[i].code; i++) + { + weechat_hook_completion_list_add (completion, langs_avail[i].code, + 0, WEECHAT_LIST_POS_SORT); + } + + return WEECHAT_RC_OK; +} + /* * weechat_plugin_init : init aspell plugin */ @@ -941,8 +966,14 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[]) "\n" "Input line beginning with a '/' is not checked, " "except for some commands."), - "dictlist|enable|disable|addword", + "dictlist" + " || enable %(aspell_langs)" + " || disable" + " || addword", &weechat_aspell_command_cb, NULL); + weechat_hook_completion ("aspell_langs", + N_("list of supported langs for aspell"), + &weechat_aspell_completion_langs_cb, NULL); /* callback for buffer_switch */ weechat_hook_signal ("buffer_switch", diff --git a/src/plugins/demo/demo.c b/src/plugins/demo/demo.c index 5158c1dde..112394c79 100644 --- a/src/plugins/demo/demo.c +++ b/src/plugins/demo/demo.c @@ -416,7 +416,7 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[]) "arguments: optional arguments for info\n\n" "Without argument, this command displays list " "of available infos"), - "%i", + "%(infos)", &demo_info_command_cb, NULL); weechat_hook_command ("demo_infolist", @@ -426,7 +426,7 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[]) "arguments: optional arguments for infolist\n\n" "Without argument, this command displays list " "of available infolists"), - "%I", + "%(infolists)", &demo_infolist_command_cb, NULL); weechat_hook_signal ("*", &demo_signal_cb, NULL); diff --git a/src/plugins/irc/irc-command.c b/src/plugins/irc/irc-command.c index 76f0b552c..dae2904a3 100644 --- a/src/plugins/irc/irc-command.c +++ b/src/plugins/irc/irc-command.c @@ -3773,7 +3773,9 @@ irc_command_init () "is 6667)\n" " ipv6: use IPv6 protocol\n" " ssl: use SSL protocol"), - "%(irc_servers)|-all|-nojoin|%*", &irc_command_connect, NULL); + "-all -nojoin" + " || %(irc_servers)|%*", + &irc_command_connect, NULL); weechat_hook_command ("ctcp", N_("send a CTCP message (Client-To-Client Protocol)"), N_("receiver type [arguments]"), @@ -3781,7 +3783,7 @@ irc_command_init () " type: CTCP type (examples: \"version\", " "\"ping\", ..)\n" "arguments: arguments for CTCP"), - "%(irc_channel)|%n action|ping|version", + "%(irc_channel)|%(nicks) action|ping|version", &irc_command_ctcp, NULL); weechat_hook_command ("cycle", N_("leave and rejoin a channel"), @@ -3796,25 +3798,26 @@ irc_command_init () N_(" action: 'send' (file) or 'chat'\n" "nickname: nickname to send file or chat\n" " file: filename (on local host)"), - "chat|send %n %f", + "chat %(nicks)" + " || send %(nicks) %(filename)", &irc_command_dcc, NULL); weechat_hook_command ("dehalfop", N_("remove half channel operator status from " "nickname(s)"), N_("[nickname [nickname]]"), "", - NULL, &irc_command_dehalfop, NULL); + "%(nicks)", &irc_command_dehalfop, NULL); weechat_hook_command ("deop", N_("remove channel operator status from " "nickname(s)"), N_("[nickname [nickname]]"), "", - NULL, &irc_command_deop, NULL); + "%(nicks)|%*", &irc_command_deop, NULL); weechat_hook_command ("devoice", N_("remove voice from nickname(s)"), N_("[nickname [nickname]]"), "", - NULL, &irc_command_devoice, NULL); + "%(nicks)|%*", &irc_command_devoice, NULL); weechat_hook_command ("die", N_("shutdown the server"), "", @@ -3825,13 +3828,15 @@ irc_command_init () N_("[-all | servername [servername ...]]"), N_(" -all: disconnect from all servers\n" "servername: server name to disconnect"), - "%(irc_servers)|-all", &irc_command_disconnect, NULL); + "-all" + " || %(irc_servers)|%*", + &irc_command_disconnect, NULL); weechat_hook_command ("halfop", N_("give half channel operator status to " "nickname(s)"), N_("[nickname [nickname]]"), "", - NULL, &irc_command_halfop, NULL); + "%(nicks)", &irc_command_halfop, NULL); weechat_hook_command ("ignore", N_("ignore nicks/hosts from servers or channels"), N_("[list] | [add [re:]nick/host [server [channel]]] | " @@ -3856,8 +3861,10 @@ irc_command_init () " /ignore add toto@domain.com freenode\n" " ignore host \"toto*@*.domain.com\" on freenode/#weechat:\n" " /ignore add toto*@*.domain.com freenode #weechat"), - "list|add|del %(irc_channel_nicks_hosts) " - "%(irc_servers) %(irc_channels) ", &irc_command_ignore, NULL); + "list" + " || add %(irc_channel_nicks_hosts) %(irc_servers) %(irc_channels) %-" + " || del -all|%(irc_ignores_numbers) %-", + &irc_command_ignore, NULL); weechat_hook_command ("info", N_("get information describing the server"), N_("[target]"), @@ -3868,12 +3875,12 @@ irc_command_init () N_("nickname channel"), N_("nickname: nick to invite\n" " channel: channel to invite"), - "%n %(irc_channel)", &irc_command_invite, NULL); + "%(nicks) %(irc_channel)", &irc_command_invite, NULL); weechat_hook_command ("ison", N_("check if a nickname is currently on IRC"), N_("nickname [nickname ...]"), N_("nickname: nickname"), - NULL, &irc_command_ison, NULL); + "%(nicks)|%*", &irc_command_ison, NULL); weechat_hook_command ("join", N_("join a channel"), N_("channel[,channel] [key[,key]]"), @@ -3886,7 +3893,7 @@ irc_command_init () N_(" channel: channel where user is\n" "nickname: nickname to kick\n" " comment: comment for kick"), - "%n %-", &irc_command_kick, NULL); + "%(nicks) %-", &irc_command_kick, NULL); weechat_hook_command ("kickban", N_("kicks and bans a nick from a channel"), N_("[channel] nickname [comment]"), @@ -3899,7 +3906,7 @@ irc_command_init () N_("nickname comment"), N_("nickname: nickname\n" " comment: comment for kill"), - "%n %-", &irc_command_kill, NULL); + "%(nicks) %-", &irc_command_kill, NULL); weechat_hook_command ("links", N_("list all servernames which are known by the " "server answering the query"), @@ -3969,31 +3976,35 @@ irc_command_init () "receiver: nick or channel (may be mask, '*' = " "current channel)\n" " text: text to send"), - NULL, &irc_command_msg, NULL); + "-server %(irc_servers)" + " || %(nicks) %-", + &irc_command_msg, NULL); weechat_hook_command ("names", N_("list nicknames on channels"), N_("[channel[,channel]]"), N_("channel: channel name"), - "%(irc_channels)|%*", &irc_command_names, NULL); + "%(irc_channels)", &irc_command_names, NULL); weechat_hook_command ("nick", N_("change current nickname"), N_("[-all] nickname"), N_(" -all: set new nickname for all connected " "servers\n" "nickname: new nickname"), - "-all", &irc_command_nick, NULL); + "-all %(irc_server_nick)" + " || %(irc_server_nick)", + &irc_command_nick, NULL); weechat_hook_command ("notice", N_("send notice message to user"), N_("[-server server] nickname text"), N_(" server: send to this server (internal name)\n" "nickname: user to send notice to\n" " text: text to send"), - "%n %-", &irc_command_notice, NULL); + "%(nicks) %-", &irc_command_notice, NULL); weechat_hook_command ("op", N_("give channel operator status to nickname(s)"), N_("nickname [nickname]"), "", - NULL, &irc_command_op, NULL); + "%(nicks)|%*", &irc_command_op, NULL); weechat_hook_command ("oper", N_("get operator privileges"), N_("user password"), @@ -4026,7 +4037,7 @@ irc_command_init () N_(" server: send to this server (internal name)\n" "nickname: nickname for private conversation\n" " text: text to send"), - "%n %-", &irc_command_query, NULL); + "%(nicks) %-", &irc_command_query, NULL); weechat_hook_command ("quote", N_("send raw data to server without parsing"), N_("[-server server] data"), @@ -4041,7 +4052,9 @@ irc_command_init () "servername: server name to reconnect\n" " -nojoin: do not join any channel (even if " "autojoin is enabled on server)"), - "%(irc_servers)|-all|-nojoin|%*", &irc_command_reconnect, NULL); + "-all -nojoin" + " || %(irc_servers)|-nojoin|%*", + &irc_command_reconnect, NULL); weechat_hook_command ("rehash", N_("tell the server to reload its config file"), "", @@ -4171,7 +4184,7 @@ irc_command_init () N_("return a list of information about nicknames"), N_("nickname [nickname ...]"), N_("nickname: nickname"), - "%n", &irc_command_userhost, NULL); + "%(nicks)", &irc_command_userhost, NULL); weechat_hook_command ("users", N_("list of users logged into the server"), N_("[target]"), @@ -4183,12 +4196,12 @@ irc_command_init () N_("[server | nickname]"), N_(" server: server name\n" "nickname: nickname"), - "%n", &irc_command_version, NULL); + "%(nicks)", &irc_command_version, NULL); weechat_hook_command ("voice", N_("give voice to nickname(s)"), N_("[nickname [nickname]]"), "", - NULL, &irc_command_voice, NULL); + "%(nicks)|%*", &irc_command_voice, NULL); weechat_hook_command ("wallops", N_("send a message to all currently connected users " "who have set the 'w' user mode for themselves"), diff --git a/src/plugins/irc/irc-completion.c b/src/plugins/irc/irc-completion.c index 0de87a2ca..49e30beea 100644 --- a/src/plugins/irc/irc-completion.c +++ b/src/plugins/irc/irc-completion.c @@ -29,6 +29,7 @@ #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" @@ -425,6 +426,35 @@ irc_completion_msg_part_cb (void *data, const char *completion_item, } /* + * irc_completion_ignores_numbers_cb: callback for completion with ignores + * numbers + */ + +int +irc_completion_ignores_numbers_cb (void *data, const char *completion_item, + struct t_gui_buffer *buffer, + struct t_gui_completion *completion) +{ + struct t_irc_ignore *ptr_ignore; + char str_number[32]; + + /* make C compiler happy */ + (void) data; + (void) completion_item; + (void) buffer; + + for (ptr_ignore = irc_ignore_list; ptr_ignore; + ptr_ignore = ptr_ignore->next_ignore) + { + snprintf (str_number, sizeof (str_number), "%d", ptr_ignore->number); + weechat_hook_completion_list_add (completion, str_number, + 0, WEECHAT_LIST_POS_END); + } + + return WEECHAT_RC_OK; +} + +/* * irc_completion_init: init completion for IRC plugin */ @@ -432,23 +462,36 @@ void irc_completion_init () { weechat_hook_completion ("irc_server", + N_("current IRC server"), &irc_completion_server_cb, NULL); weechat_hook_completion ("irc_server_nick", + N_("nick on current IRC server"), &irc_completion_server_nick_cb, NULL); weechat_hook_completion ("irc_server_nicks", + N_("nicks on all channels of current IRC server"), &irc_completion_server_nicks_cb, NULL); weechat_hook_completion ("irc_servers", + N_("IRC servers (internal names)"), &irc_completion_servers_cb, NULL); weechat_hook_completion ("irc_channel", + N_("current IRC channel"), &irc_completion_channel_cb, NULL); weechat_hook_completion ("nick", + N_("nicks of current IRC channel"), &irc_completion_channel_nicks_cb, NULL); weechat_hook_completion ("irc_channel_nicks_hosts", + N_("nicks and hostnames of current IRC channel"), &irc_completion_channel_nicks_hosts_cb, NULL); weechat_hook_completion ("irc_channel_topic", + N_("topic of current IRC channel"), &irc_completion_channel_topic_cb, NULL); weechat_hook_completion ("irc_channels", + N_("IRC channels (on all servers)"), &irc_completion_channels_cb, NULL); weechat_hook_completion ("irc_msg_part", + N_("default part message for IRC channel"), &irc_completion_msg_part_cb, NULL); + weechat_hook_completion ("irc_ignores_numbers", + N_("numbers for defined ignores"), + &irc_completion_ignores_numbers_cb, NULL); } diff --git a/src/plugins/irc/irc-protocol.h b/src/plugins/irc/irc-protocol.h index 3e3c68eaa..cfaa5a23c 100644 --- a/src/plugins/irc/irc-protocol.h +++ b/src/plugins/irc/irc-protocol.h @@ -59,7 +59,7 @@ struct t_irc_server; -typedef int (t_irc_recv_func)(struct t_irc_server *server, const char *comand, +typedef int (t_irc_recv_func)(struct t_irc_server *server, const char *command, int argc, char **argv, char **argv_eol); struct t_irc_protocol_msg diff --git a/src/plugins/jabber/jabber-command.c b/src/plugins/jabber/jabber-command.c index 8937cb6bd..67bdb2cb2 100644 --- a/src/plugins/jabber/jabber-command.c +++ b/src/plugins/jabber/jabber-command.c @@ -819,7 +819,7 @@ jabber_command_init () N_("buddy [text]"), N_("buddy: buddy name for chat\n" " text: text to send"), - "%n %-", &jabber_command_jchat, NULL); + "%(nicks) %-", &jabber_command_jchat, NULL); weechat_hook_command ("jconnect", N_("connect to Jabber server(s)"), N_("[-all [-nojoin] | servername [servername ...] " diff --git a/src/plugins/jabber/jabber-completion.c b/src/plugins/jabber/jabber-completion.c index 5df9044e4..68e1a9ca7 100644 --- a/src/plugins/jabber/jabber-completion.c +++ b/src/plugins/jabber/jabber-completion.c @@ -435,24 +435,24 @@ jabber_completion_msg_part_cb (void *data, const char *completion_item, void jabber_completion_init () { - weechat_hook_completion ("jabber_server", + weechat_hook_completion ("jabber_server", "", &jabber_completion_server_cb, NULL); - weechat_hook_completion ("jabber_server_local_name", + weechat_hook_completion ("jabber_server_local_name", "", &jabber_completion_server_local_name_cb, NULL); - weechat_hook_completion ("jabber_server_buddies", + weechat_hook_completion ("jabber_server_buddies", "", &jabber_completion_server_buddies_cb, NULL); - weechat_hook_completion ("jabber_servers", + weechat_hook_completion ("jabber_servers", "", &jabber_completion_servers_cb, NULL); - weechat_hook_completion ("jabber_muc", + weechat_hook_completion ("jabber_muc", "", &jabber_completion_muc_cb, NULL); - weechat_hook_completion ("buddy", + weechat_hook_completion ("buddy", "", &jabber_completion_muc_buddies_cb, NULL); - weechat_hook_completion ("jabber_muc_buddies_hosts", + weechat_hook_completion ("jabber_muc_buddies_hosts", "", &jabber_completion_muc_buddies_hosts_cb, NULL); - weechat_hook_completion ("jabber_muc_topic", + weechat_hook_completion ("jabber_muc_topic", "", &jabber_completion_muc_topic_cb, NULL); - weechat_hook_completion ("jabber_mucs", + weechat_hook_completion ("jabber_mucs", "", &jabber_completion_mucs_cb, NULL); - weechat_hook_completion ("jabber_msg_part", + weechat_hook_completion ("jabber_msg_part", "", &jabber_completion_msg_part_cb, NULL); } diff --git a/src/plugins/logger/logger.c b/src/plugins/logger/logger.c index 48360cc75..1e03cb35f 100644 --- a/src/plugins/logger/logger.c +++ b/src/plugins/logger/logger.c @@ -1003,7 +1003,9 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[]) " 3: server message\n" " 4: join/part/quit\n" " 9: all other messages"), - "list|set|disable", + "list" + " || set 1|2|3|4|5|6|7|8|9" + " || disable", &logger_command_cb, NULL); logger_start_buffer_all (); diff --git a/src/plugins/scripts/lua/weechat-lua-api.c b/src/plugins/scripts/lua/weechat-lua-api.c index e2d510acf..957d249b1 100644 --- a/src/plugins/scripts/lua/weechat-lua-api.c +++ b/src/plugins/scripts/lua/weechat-lua-api.c @@ -3930,7 +3930,7 @@ weechat_lua_api_hook_completion_cb (void *data, const char *completion_item, static int weechat_lua_api_hook_completion (lua_State *L) { - const char *completion, *function; + const char *completion, *description, *function; char *result; int n; @@ -3944,22 +3944,25 @@ weechat_lua_api_hook_completion (lua_State *L) } completion = NULL; + description = NULL; function = NULL; n = lua_gettop (lua_current_interpreter); - if (n < 2) + if (n < 3) { WEECHAT_SCRIPT_MSG_WRONG_ARGUMENTS("hook_completion"); LUA_RETURN_EMPTY; } - completion = lua_tostring (lua_current_interpreter, -2); + completion = lua_tostring (lua_current_interpreter, -3); + description = lua_tostring (lua_current_interpreter, -2); function = lua_tostring (lua_current_interpreter, -1); result = script_ptr2str (script_api_hook_completion (weechat_lua_plugin, lua_current_script, completion, + description, &weechat_lua_api_hook_completion_cb, function)); diff --git a/src/plugins/scripts/perl/weechat-perl-api.c b/src/plugins/scripts/perl/weechat-perl-api.c index 6b9db3e23..38c035031 100644 --- a/src/plugins/scripts/perl/weechat-perl-api.c +++ b/src/plugins/scripts/perl/weechat-perl-api.c @@ -3317,7 +3317,7 @@ weechat_perl_api_hook_completion_cb (void *data, const char *completion_item, static XS (XS_weechat_api_hook_completion) { - char *result, *completion, *function; + char *result, *completion, *description, *function; dXSARGS; /* make C compiler happy */ @@ -3329,17 +3329,19 @@ static XS (XS_weechat_api_hook_completion) PERL_RETURN_EMPTY; } - if (items < 2) + if (items < 3) { WEECHAT_SCRIPT_MSG_WRONG_ARGUMENTS("hook_completion"); PERL_RETURN_EMPTY; } completion = SvPV (ST (0), PL_na); - function = SvPV (ST (1), PL_na); + description = SvPV (ST (1), PL_na); + function = SvPV (ST (2), PL_na); result = script_ptr2str (script_api_hook_completion (weechat_perl_plugin, perl_current_script, completion, + description, &weechat_perl_api_hook_completion_cb, function)); diff --git a/src/plugins/scripts/python/weechat-python-api.c b/src/plugins/scripts/python/weechat-python-api.c index d66291586..e9c43ae02 100644 --- a/src/plugins/scripts/python/weechat-python-api.c +++ b/src/plugins/scripts/python/weechat-python-api.c @@ -3527,7 +3527,7 @@ weechat_python_api_hook_completion_cb (void *data, const char *completion_item, static PyObject * weechat_python_api_hook_completion (PyObject *self, PyObject *args) { - char *completion, *function, *result; + char *completion, *description, *function, *result; PyObject *object; /* make C compiler happy */ @@ -3540,9 +3540,10 @@ weechat_python_api_hook_completion (PyObject *self, PyObject *args) } completion = NULL; + description = NULL; function = NULL; - if (!PyArg_ParseTuple (args, "ss", &completion, &function)) + if (!PyArg_ParseTuple (args, "sss", &completion, &description, &function)) { WEECHAT_SCRIPT_MSG_WRONG_ARGUMENTS("hook_completion"); PYTHON_RETURN_EMPTY; @@ -3551,6 +3552,7 @@ weechat_python_api_hook_completion (PyObject *self, PyObject *args) result = script_ptr2str(script_api_hook_completion (weechat_python_plugin, python_current_script, completion, + description, &weechat_python_api_hook_completion_cb, function)); diff --git a/src/plugins/scripts/ruby/weechat-ruby-api.c b/src/plugins/scripts/ruby/weechat-ruby-api.c index 99e46bf46..d3ba648c7 100644 --- a/src/plugins/scripts/ruby/weechat-ruby-api.c +++ b/src/plugins/scripts/ruby/weechat-ruby-api.c @@ -4020,9 +4020,9 @@ weechat_ruby_api_hook_completion_cb (void *data, const char *completion_item, static VALUE weechat_ruby_api_hook_completion (VALUE class, VALUE completion, - VALUE function) + VALUE description, VALUE function) { - char *c_completion, *c_function, *result; + char *c_completion, *c_description, *c_function, *result; VALUE return_value; /* make C compiler happy */ @@ -4035,23 +4035,27 @@ weechat_ruby_api_hook_completion (VALUE class, VALUE completion, } c_completion = NULL; + c_description = NULL; c_function = NULL; - if (NIL_P (completion) || NIL_P (function)) + if (NIL_P (completion) || NIL_P (description) || NIL_P (function)) { WEECHAT_SCRIPT_MSG_WRONG_ARGUMENTS("hook_completion"); RUBY_RETURN_EMPTY; } Check_Type (completion, T_STRING); + Check_Type (description, T_STRING); Check_Type (function, T_STRING); c_completion = STR2CSTR (completion); + c_description = STR2CSTR (description); c_function = STR2CSTR (function); result = script_ptr2str (script_api_hook_completion (weechat_ruby_plugin, ruby_current_script, c_completion, + c_description, &weechat_ruby_api_hook_completion_cb, c_function)); @@ -6657,7 +6661,7 @@ weechat_ruby_api_init (VALUE ruby_mWeechat) rb_define_module_function (ruby_mWeechat, "hook_signal", &weechat_ruby_api_hook_signal, 2); rb_define_module_function (ruby_mWeechat, "hook_signal_send", &weechat_ruby_api_hook_signal_send, 3); rb_define_module_function (ruby_mWeechat, "hook_config", &weechat_ruby_api_hook_config, 2); - rb_define_module_function (ruby_mWeechat, "hook_completion", &weechat_ruby_api_hook_completion, 2); + rb_define_module_function (ruby_mWeechat, "hook_completion", &weechat_ruby_api_hook_completion, 3); rb_define_module_function (ruby_mWeechat, "hook_completion_list_add", &weechat_ruby_api_hook_completion_list_add, 4); rb_define_module_function (ruby_mWeechat, "hook_modifier", &weechat_ruby_api_hook_modifier, 2); rb_define_module_function (ruby_mWeechat, "hook_modifier_exec", &weechat_ruby_api_hook_modifier_exec, 3); diff --git a/src/plugins/scripts/script-api.c b/src/plugins/scripts/script-api.c index 99266a04f..2aa4db899 100644 --- a/src/plugins/scripts/script-api.c +++ b/src/plugins/scripts/script-api.c @@ -26,6 +26,7 @@ #include "../weechat-plugin.h" #include "script.h" +#include "script-api.h" #include "script-callback.h" @@ -1076,6 +1077,7 @@ struct t_hook * script_api_hook_completion (struct t_weechat_plugin *weechat_plugin, struct t_plugin_script *script, const char *completion, + const char *description, int (*callback)(void *data, const char *completion_item, struct t_gui_buffer *buffer, @@ -1089,7 +1091,8 @@ script_api_hook_completion (struct t_weechat_plugin *weechat_plugin, if (!new_script_callback) return NULL; - new_hook = weechat_hook_completion (completion, callback, new_script_callback); + new_hook = weechat_hook_completion (completion, description, + callback, new_script_callback); if (!new_hook) { script_callback_free_data (new_script_callback); diff --git a/src/plugins/scripts/script-api.h b/src/plugins/scripts/script-api.h index 6f6959a62..e769bc583 100644 --- a/src/plugins/scripts/script-api.h +++ b/src/plugins/scripts/script-api.h @@ -196,6 +196,7 @@ extern struct t_hook *script_api_hook_config (struct t_weechat_plugin *weechat_p extern struct t_hook *script_api_hook_completion (struct t_weechat_plugin *weechat_plugin, struct t_plugin_script *script, const char *completion, + const char *description, int (*callback)(void *data, const char *completion_item, struct t_gui_buffer *buffer, diff --git a/src/plugins/scripts/script.c b/src/plugins/scripts/script.c index e609afdca..eac4dd996 100644 --- a/src/plugins/scripts/script.c +++ b/src/plugins/scripts/script.c @@ -105,7 +105,7 @@ script_init (struct t_weechat_plugin *weechat_plugin, void *signal_data), void (*callback_load_file)(void *data, const char *filename)) { - char *string, *completion = "list|listfull|load|autoload|reload|unload %f"; + char *string, *completion = "list|listfull|load|autoload|reload|unload %(filename)"; char infolist_description[512], signal_name[128]; int length; @@ -162,7 +162,8 @@ script_init (struct t_weechat_plugin *weechat_plugin, if (string) { snprintf (string, length, "%s_script", weechat_plugin->name); - weechat_hook_completion (string, callback_completion, NULL); + weechat_hook_completion (string, N_("list of scripts"), + callback_completion, NULL); snprintf (infolist_description, sizeof (infolist_description), /* TRANSLATORS: %s is language (for example "perl") */ _("list of %s scripts"), weechat_plugin->name); diff --git a/src/plugins/scripts/tcl/weechat-tcl-api.c b/src/plugins/scripts/tcl/weechat-tcl-api.c index fc59def73..60d47398e 100644 --- a/src/plugins/scripts/tcl/weechat-tcl-api.c +++ b/src/plugins/scripts/tcl/weechat-tcl-api.c @@ -3765,7 +3765,7 @@ weechat_tcl_api_hook_completion (ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { Tcl_Obj *objp; - char *result, *completion, *function; + char *result, *completion, *description, *function; int i; /* make C compiler happy */ @@ -3777,17 +3777,19 @@ weechat_tcl_api_hook_completion (ClientData clientData, Tcl_Interp *interp, TCL_RETURN_EMPTY; } - if (objc < 3) + if (objc < 4) { WEECHAT_SCRIPT_MSG_WRONG_ARGUMENTS("hook_completion"); TCL_RETURN_EMPTY; } completion = Tcl_GetStringFromObj (objv[1], &i); - function = Tcl_GetStringFromObj (objv[2], &i); + description = Tcl_GetStringFromObj (objv[2], &i); + function = Tcl_GetStringFromObj (objv[3], &i); result = script_ptr2str (script_api_hook_completion (weechat_tcl_plugin, tcl_current_script, completion, + description, &weechat_tcl_api_hook_completion_cb, function)); diff --git a/src/plugins/weechat-plugin.h b/src/plugins/weechat-plugin.h index fa246f757..c2a1129b4 100644 --- a/src/plugins/weechat-plugin.h +++ b/src/plugins/weechat-plugin.h @@ -429,6 +429,7 @@ struct t_weechat_plugin void *callback_data); struct t_hook *(*hook_completion) (struct t_weechat_plugin *plugin, const char *completion_item, + const char *description, int (*callback)(void *data, const char *completion_item, struct t_gui_buffer *buffer, @@ -972,9 +973,10 @@ extern int weechat_plugin_end (struct t_weechat_plugin *plugin); #define weechat_hook_config(__option, __callback, __data) \ weechat_plugin->hook_config(weechat_plugin, __option, __callback, \ __data) -#define weechat_hook_completion(__completion, __callback, __data) \ +#define weechat_hook_completion(__completion, __description, \ + __callback, __data) \ weechat_plugin->hook_completion(weechat_plugin, __completion, \ - __callback, __data) + __description, __callback, __data) #define weechat_hook_completion_list_add(__completion, __word, \ __nick_completion, __where) \ weechat_plugin->hook_completion_list_add(__completion, __word, \ diff --git a/src/plugins/xfer/xfer-completion.c b/src/plugins/xfer/xfer-completion.c index d0f36b3ca..639fe13dd 100644 --- a/src/plugins/xfer/xfer-completion.c +++ b/src/plugins/xfer/xfer-completion.c @@ -69,5 +69,6 @@ void xfer_completion_init () { weechat_hook_completion ("nick", + N_("nicks of DCC chat"), &xfer_completion_nick_cb, NULL); } |