about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2016-03-15 22:32:44 +0000
committerJames Booth <boothj5@gmail.com>2016-03-15 22:32:44 +0000
commit1075f07ff5924d2c40414f47bc665a2acc664730 (patch)
treef4ef0f6e4351cc7699f7c60ad13de73ad22107e6 /src
parent06523f94744ea1cb86d92318eb5e7e8702b82c8a (diff)
downloadprofani-tty-1075f07ff5924d2c40414f47bc665a2acc664730.tar.gz
Parse plugin args with freetext parser
Also allow adding to plugin autocompleters
Diffstat (limited to 'src')
-rw-r--r--src/plugins/autocompleters.c19
-rw-r--r--src/plugins/callbacks.c2
2 files changed, 15 insertions, 6 deletions
diff --git a/src/plugins/autocompleters.c b/src/plugins/autocompleters.c
index 483af7ca..9acbf755 100644
--- a/src/plugins/autocompleters.c
+++ b/src/plugins/autocompleters.c
@@ -49,12 +49,21 @@ autocompleters_init(void)
 void
 autocompleters_add(const char *key, char **items)
 {
-    Autocomplete new_ac = autocomplete_new();
-    int i = 0;
-    for (i = 0; i < g_strv_length(items); i++) {
-        autocomplete_add(new_ac, items[i]);
+    if (g_hash_table_contains(autocompleters, key)) {
+        Autocomplete existing_ac = g_hash_table_lookup(autocompleters, key);
+
+        int i = 0;
+        for (i = 0; i < g_strv_length(items); i++) {
+            autocomplete_add(existing_ac, items[i]);
+        }
+    } else {
+        Autocomplete new_ac = autocomplete_new();
+        int i = 0;
+        for (i = 0; i < g_strv_length(items); i++) {
+            autocomplete_add(new_ac, items[i]);
+        }
+        g_hash_table_insert(autocompleters, strdup(key), new_ac);
     }
-    g_hash_table_insert(autocompleters, strdup(key), new_ac);
 }
 
 char *
diff --git a/src/plugins/callbacks.c b/src/plugins/callbacks.c
index 6f796259..92673395 100644
--- a/src/plugins/callbacks.c
+++ b/src/plugins/callbacks.c
@@ -108,7 +108,7 @@ plugins_run_command(const char * const input)
         PluginCommand *command = p_command->data;
         if (g_strcmp0(split[0], command->command_name) == 0) {
             gboolean result;
-            gchar **args = parse_args(input, command->min_args, command->max_args, &result);
+            gchar **args = parse_args_with_freetext(input, command->min_args, command->max_args, &result);
             if (result == FALSE) {
                 ui_invalid_command_usage(command->command_name, NULL);
                 g_strfreev(split);