summaryrefslogtreecommitdiff
path: root/src/gui
diff options
context:
space:
mode:
authorSebastien Helleu <flashcode@flashtux.org>2008-04-18 15:39:24 +0200
committerSebastien Helleu <flashcode@flashtux.org>2008-04-18 15:39:24 +0200
commit1486429cf1dff6f45536bf07de35caf3d060672f (patch)
tree622dd800d615778fa59629295ce2ace2d4df724a /src/gui
parent22c619040bb2ec783199490264bb167b8e425e53 (diff)
downloadweechat-1486429cf1dff6f45536bf07de35caf3d060672f.zip
Replaced /builtin command by /command, and can now be used to launch commands with same name from different plugins
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/gui-action.c2
-rw-r--r--src/gui/gui-completion.c54
-rw-r--r--src/gui/gui-keyboard.c2
3 files changed, 56 insertions, 2 deletions
diff --git a/src/gui/gui-action.c b/src/gui/gui-action.c
index b4eb9ff89..f2190bdc5 100644
--- a/src/gui/gui-action.c
+++ b/src/gui/gui-action.c
@@ -128,7 +128,7 @@ gui_action_return (char *args)
gui_current_window->buffer->ptr_history = NULL;
gui_input_optimize_size (gui_current_window->buffer);
gui_input_draw (gui_current_window->buffer, 0);
- input_data (gui_current_window->buffer, command, 0);
+ input_data (gui_current_window->buffer, command);
free (command);
}
}
diff --git a/src/gui/gui-completion.c b/src/gui/gui-completion.c
index 00290b7c6..eed13390a 100644
--- a/src/gui/gui-completion.c
+++ b/src/gui/gui-completion.c
@@ -581,6 +581,57 @@ gui_completion_list_add_plugin (struct t_gui_completion *completion)
}
/*
+ * gui_completion_list_add_plugin_commands: add plugin commands to completion
+ * list (plugin name is previous
+ * argument)
+ */
+
+void
+gui_completion_list_add_plugin_commands (struct t_gui_completion *completion)
+{
+ char *pos_space, *plugin_name;
+ struct t_weechat_plugin *ptr_plugin;
+ struct t_hook *ptr_hook;
+
+ if (completion->args)
+ {
+ pos_space = strchr (completion->args, ' ');
+ if (pos_space)
+ plugin_name = string_strndup (completion->args,
+ pos_space - completion->args);
+ else
+ plugin_name = strdup (completion->args);
+
+ if (plugin_name)
+ {
+ ptr_plugin = NULL;
+ if (string_strcasecmp (plugin_name, "weechat") != 0)
+ {
+ /* plugin name is different from "weechat", then search it in
+ plugin list */
+ ptr_plugin = plugin_search (plugin_name);
+ if (!ptr_plugin)
+ return;
+ }
+ for (ptr_hook = weechat_hooks[HOOK_TYPE_COMMAND]; ptr_hook;
+ ptr_hook = ptr_hook->next_hook)
+ {
+ if (!ptr_hook->deleted
+ && (ptr_hook->plugin == ptr_plugin)
+ && HOOK_COMMAND(ptr_hook, command)
+ && HOOK_COMMAND(ptr_hook, command)[0])
+ {
+ gui_completion_list_add (completion,
+ HOOK_COMMAND(ptr_hook, command),
+ 0, WEECHAT_LIST_POS_SORT);
+ }
+ }
+ free (plugin_name);
+ }
+ }
+}
+
+/*
* gui_completion_list_add_option_value: add option value to completion list
*/
@@ -817,6 +868,9 @@ gui_completion_build_list_template (struct t_gui_completion *completion,
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;
diff --git a/src/gui/gui-keyboard.c b/src/gui/gui-keyboard.c
index a10a11416..12a33c33f 100644
--- a/src/gui/gui-keyboard.c
+++ b/src/gui/gui-keyboard.c
@@ -641,7 +641,7 @@ gui_keyboard_pressed (char *key_str)
for (ptr_cmd = commands; *ptr_cmd; ptr_cmd++)
{
input_data (gui_current_window->buffer,
- *ptr_cmd, 0);
+ *ptr_cmd);
}
string_free_splitted_command (commands);
}