summaryrefslogtreecommitdiffstats
path: root/src/core/wee-command.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/wee-command.c')
-rw-r--r--src/core/wee-command.c113
1 files changed, 107 insertions, 6 deletions
diff --git a/src/core/wee-command.c b/src/core/wee-command.c
index 7c8ffcf07..27c65d8d7 100644
--- a/src/core/wee-command.c
+++ b/src/core/wee-command.c
@@ -4714,6 +4714,82 @@ command_plugin_list (const char *name, int full)
}
/*
+ * Lists loaded plugins in input.
+ *
+ * Sends input to buffer if send_to_buffer == 1.
+ * String is translated if translated == 1 (otherwise it's English).
+ */
+
+void
+command_plugin_list_input (struct t_gui_buffer *buffer,
+ int send_to_buffer, int translated)
+{
+ struct t_weechat_plugin *ptr_plugin;
+ struct t_weelist *list;
+ struct t_weelist_item *ptr_item;
+ int length;
+ char **buf, str_pos[16];
+
+ buf = string_dyn_alloc (256);
+ if (!buf)
+ return;
+
+ list = weelist_new ();
+ if (!list)
+ {
+ string_dyn_free (buf, 1);
+ return;
+ }
+
+ for (ptr_plugin = weechat_plugins; ptr_plugin;
+ ptr_plugin = ptr_plugin->next_plugin)
+ {
+ weelist_add (list, ptr_plugin->name, WEECHAT_LIST_POS_SORT, NULL);
+ }
+
+ for (ptr_item = list->items; ptr_item;
+ ptr_item = ptr_item->next_item)
+ {
+ if (*buf[0])
+ {
+ string_dyn_concat (buf, ", ", -1);
+ }
+ else
+ {
+ string_dyn_concat (
+ buf,
+ (translated) ? _("Plugins loaded:") : "Plugins loaded:",
+ -1);
+ string_dyn_concat (buf, " ", -1);
+ }
+ string_dyn_concat (buf, ptr_item->data, -1);
+ }
+
+ if (!*buf[0])
+ {
+ string_dyn_concat (
+ buf,
+ (translated) ? _("No plugins loaded") : "No plugins loaded",
+ -1);
+ }
+
+ if (send_to_buffer)
+ {
+ (void) input_data (buffer, *buf, NULL);
+ }
+ else
+ {
+ gui_buffer_set (buffer, "input", *buf);
+ length = strlen (*buf);
+ snprintf (str_pos, sizeof (str_pos), "%d", length);
+ gui_buffer_set (buffer, "input_pos", str_pos);
+ }
+
+ weelist_free (list);
+ string_dyn_free (buf, 1);
+}
+
+/*
* Callback for command "/plugin": lists/loads/unloads WeeChat plugins.
*/
@@ -4736,7 +4812,23 @@ COMMAND_CALLBACK(plugin)
if (string_strcasecmp (argv[1], "list") == 0)
{
- command_plugin_list ((argc > 2) ? argv[2] : NULL, 0);
+ if (argc > 2)
+ {
+ if (string_strcasecmp (argv[2], "-i") == 0)
+ command_plugin_list_input (buffer, 0, 0);
+ else if (string_strcasecmp (argv[2], "-il") == 0)
+ command_plugin_list_input (buffer, 0, 1);
+ else if (string_strcasecmp (argv[2], "-o") == 0)
+ command_plugin_list_input (buffer, 1, 0);
+ else if (string_strcasecmp (argv[2], "-ol") == 0)
+ command_plugin_list_input (buffer, 1, 1);
+ else
+ command_plugin_list (argv[2], 0);
+ }
+ else
+ {
+ command_plugin_list (NULL, 0);
+ }
return WEECHAT_RC_OK;
}
@@ -8035,24 +8127,33 @@ command_init ()
hook_command (
NULL, "plugin",
N_("list/load/unload plugins"),
- N_("list|listfull [<name>]"
+ N_("list [-o|-ol|-i|-il|<name>]"
+ " || listfull [<name>]"
" || load <filename> [<arguments>]"
" || autoload [<arguments>]"
" || reload [<name>|* [<arguments>]]"
" || unload [<name>]"),
N_(" list: list loaded plugins\n"
+ " -o: send list of loaded plugins to buffer "
+ "(string in English)\n"
+ " -ol: send list of loaded plugins to buffer "
+ "(translated string)\n"
+ " -i: copy list of loaded plugins in command line (for "
+ "sending to buffer) (string in English)\n"
+ " -il: copy list of loaded plugins in command line (for "
+ "sending to buffer) (translated string)\n"
+ " name: a plugin name\n"
" listfull: list loaded plugins (verbose)\n"
" load: load a plugin\n"
+ " filename: plugin (file) to load\n"
+ "arguments: arguments given to plugin on load\n"
" autoload: autoload plugins in system or user directory\n"
" reload: reload a plugin (if no name given, unload all plugins, "
"then autoload plugins)\n"
" unload: unload a plugin (if no name given, unload all plugins)\n"
- " filename: plugin (file) to load\n"
- " name: a plugin name\n"
- "arguments: arguments given to plugin on load\n"
"\n"
"Without argument, this command lists loaded plugins."),
- "list %(plugins_names)"
+ "list %(plugins_names)|-i|-il|-o|-ol"
" || listfull %(plugins_names)"
" || load %(plugins_installed)"
" || autoload"