about summary refs log tree commit diff stats
path: root/src/command/command.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/command/command.c')
-rw-r--r--src/command/command.c124
1 files changed, 67 insertions, 57 deletions
diff --git a/src/command/command.c b/src/command/command.c
index 367d3c29..972b849f 100644
--- a/src/command/command.c
+++ b/src/command/command.c
@@ -278,12 +278,12 @@ static struct cmd_t command_defs[] =
             "/roster hide [offline|resource|presence|status|empty|count|priority]",
             "/roster by group|presence|none",
             "/roster order name|presence",
-            "/roster char header <char>|none",
-            "/roster char contact <char>|none",
-            "/roster char resource <char>|none",
-            "/roster indent contact <indent>",
-            "/roster indent resource <indent>",
-            "/roster indent presence <indent>",
+            "/roster header char <char>|none",
+            "/roster presence indent <indent>",
+            "/roster contact char <char>|none",
+            "/roster contact indent <indent>",
+            "/roster resource char <char>|none",
+            "/roster resource indent <indent>",
             "/roster resource join on|off",
             "/roster size <percent>",
             "/roster wrap on|off",
@@ -318,16 +318,16 @@ static struct cmd_t command_defs[] =
             { "by none",                    "No grouping in the roster panel." },
             { "order name",                 "Order roster items by name only." },
             { "order presence",             "Order roster items by presence, and then by name." },
-            { "char header <char>",         "Prefix roster headers with specificed character." },
-            { "char header none",           "Remove roster header character prefix." },
-            { "char contact <char>",        "Prefix roster contacts with specificed character." },
-            { "char contact none",          "Remove roster contact character prefix." },
-            { "char resource <char>",       "Prefix roster resources with specificed character." },
-            { "char resource none",         "Remove roster resource character prefix." },
-            { "indent contact <indent>",    "Indent contact line by <indent> spaces (0 to 10)." },
-            { "indent resource <indent>",   "Indent resource line by <indent> spaces (0 to 10)." },
-            { "indent presence <indent>",   "Indent presence line by <indent> spaces (-1 to 10), a value of -1 will show presence on the previous line." },
+            { "header char <char>",         "Prefix roster headers with specificed character." },
+            { "header char none",           "Remove roster header character prefix." },
+            { "contact char <char>",        "Prefix roster contacts with specificed character." },
+            { "contact char none",          "Remove roster contact character prefix." },
+            { "contact indent <indent>",    "Indent contact line by <indent> spaces (0 to 10)." },
+            { "resource char <char>",       "Prefix roster resources with specificed character." },
+            { "resource char none",         "Remove roster resource character prefix." },
+            { "resource indent <indent>",   "Indent resource line by <indent> spaces (0 to 10)." },
             { "resource join on|off",       "Join resource with previous line when only one available resource." },
+            { "presence indent <indent>",   "Indent presence line by <indent> spaces (-1 to 10), a value of -1 will show presence on the previous line." },
             { "size <precent>",             "Percentage of the screen taken up by the roster (1-99)." },
             { "wrap on|off",                "Enabled or disanle line wrapping in roster panel." },
             { "add <jid> [<nick>]",         "Add a new item to the roster." },
@@ -1795,13 +1795,14 @@ static Autocomplete disco_ac;
 static Autocomplete close_ac;
 static Autocomplete wins_ac;
 static Autocomplete roster_ac;
-static Autocomplete roster_resource_ac;
-static Autocomplete roster_char_ac;
-static Autocomplete roster_char_none_ac;
-static Autocomplete roster_indent_ac;
-static Autocomplete roster_option_ac;
+static Autocomplete roster_show_ac;
 static Autocomplete roster_by_ac;
 static Autocomplete roster_order_ac;
+static Autocomplete roster_header_ac;
+static Autocomplete roster_contact_ac;
+static Autocomplete roster_resource_ac;
+static Autocomplete roster_presence_ac;
+static Autocomplete roster_char_ac;
 static Autocomplete roster_remove_all_ac;
 static Autocomplete group_ac;
 static Autocomplete bookmark_ac;
@@ -2047,35 +2048,38 @@ cmd_init(void)
     autocomplete_add(roster_ac, "by");
     autocomplete_add(roster_ac, "order");
     autocomplete_add(roster_ac, "size");
-    autocomplete_add(roster_ac, "char");
-    autocomplete_add(roster_ac, "indent");
     autocomplete_add(roster_ac, "wrap");
+    autocomplete_add(roster_ac, "header");
+    autocomplete_add(roster_ac, "contact");
     autocomplete_add(roster_ac, "resource");
+    autocomplete_add(roster_ac, "presence");
+
+    roster_header_ac = autocomplete_new();
+    autocomplete_add(roster_header_ac, "char");
+
+    roster_contact_ac = autocomplete_new();
+    autocomplete_add(roster_contact_ac, "char");
+    autocomplete_add(roster_contact_ac, "indent");
 
     roster_resource_ac = autocomplete_new();
+    autocomplete_add(roster_resource_ac, "char");
+    autocomplete_add(roster_resource_ac, "indent");
     autocomplete_add(roster_resource_ac, "join");
 
+    roster_presence_ac = autocomplete_new();
+    autocomplete_add(roster_presence_ac, "indent");
+
     roster_char_ac = autocomplete_new();
-    autocomplete_add(roster_char_ac, "header");
-    autocomplete_add(roster_char_ac, "contact");
-    autocomplete_add(roster_char_ac, "resource");
-
-    roster_char_none_ac = autocomplete_new();
-    autocomplete_add(roster_char_none_ac, "none");
-
-    roster_indent_ac = autocomplete_new();
-    autocomplete_add(roster_indent_ac, "contact");
-    autocomplete_add(roster_indent_ac, "resource");
-    autocomplete_add(roster_indent_ac, "presence");
-
-    roster_option_ac = autocomplete_new();
-    autocomplete_add(roster_option_ac, "offline");
-    autocomplete_add(roster_option_ac, "resource");
-    autocomplete_add(roster_option_ac, "presence");
-    autocomplete_add(roster_option_ac, "status");
-    autocomplete_add(roster_option_ac, "empty");
-    autocomplete_add(roster_option_ac, "count");
-    autocomplete_add(roster_option_ac, "priority");
+    autocomplete_add(roster_char_ac, "none");
+
+    roster_show_ac = autocomplete_new();
+    autocomplete_add(roster_show_ac, "offline");
+    autocomplete_add(roster_show_ac, "resource");
+    autocomplete_add(roster_show_ac, "presence");
+    autocomplete_add(roster_show_ac, "status");
+    autocomplete_add(roster_show_ac, "empty");
+    autocomplete_add(roster_show_ac, "count");
+    autocomplete_add(roster_show_ac, "priority");
 
     roster_by_ac = autocomplete_new();
     autocomplete_add(roster_by_ac, "group");
@@ -2338,11 +2342,12 @@ cmd_uninit(void)
     autocomplete_free(close_ac);
     autocomplete_free(wins_ac);
     autocomplete_free(roster_ac);
+    autocomplete_free(roster_header_ac);
+    autocomplete_free(roster_contact_ac);
     autocomplete_free(roster_resource_ac);
+    autocomplete_free(roster_presence_ac);
     autocomplete_free(roster_char_ac);
-    autocomplete_free(roster_char_none_ac);
-    autocomplete_free(roster_indent_ac);
-    autocomplete_free(roster_option_ac);
+    autocomplete_free(roster_show_ac);
     autocomplete_free(roster_by_ac);
     autocomplete_free(roster_order_ac);
     autocomplete_free(roster_remove_all_ac);
@@ -2529,11 +2534,12 @@ cmd_reset_autocomplete(ProfWin *window)
     autocomplete_reset(close_ac);
     autocomplete_reset(wins_ac);
     autocomplete_reset(roster_ac);
+    autocomplete_reset(roster_header_ac);
+    autocomplete_reset(roster_contact_ac);
     autocomplete_reset(roster_resource_ac);
+    autocomplete_reset(roster_presence_ac);
     autocomplete_reset(roster_char_ac);
-    autocomplete_reset(roster_char_none_ac);
-    autocomplete_reset(roster_indent_ac);
-    autocomplete_reset(roster_option_ac);
+    autocomplete_reset(roster_show_ac);
     autocomplete_reset(roster_by_ac);
     autocomplete_reset(roster_order_ac);
     autocomplete_reset(roster_remove_all_ac);
@@ -2921,19 +2927,19 @@ static char*
 _roster_autocomplete(ProfWin *window, const char *const input)
 {
     char *result = NULL;
-    result = autocomplete_param_with_func(input, "/roster resource join", prefs_autocomplete_boolean_choice);
+    result = autocomplete_param_with_ac(input, "/roster header char", roster_char_ac, TRUE);
     if (result) {
         return result;
     }
-    result = autocomplete_param_with_ac(input, "/roster char header", roster_char_none_ac, TRUE);
+    result = autocomplete_param_with_ac(input, "/roster contact char", roster_char_ac, TRUE);
     if (result) {
         return result;
     }
-    result = autocomplete_param_with_ac(input, "/roster char contact", roster_char_none_ac, TRUE);
+    result = autocomplete_param_with_ac(input, "/roster resource char", roster_char_ac, TRUE);
     if (result) {
         return result;
     }
-    result = autocomplete_param_with_ac(input, "/roster char resource", roster_char_none_ac, TRUE);
+    result = autocomplete_param_with_func(input, "/roster resource join", prefs_autocomplete_boolean_choice);
     if (result) {
         return result;
     }
@@ -2953,11 +2959,11 @@ _roster_autocomplete(ProfWin *window, const char *const input)
     if (result) {
         return result;
     }
-    result = autocomplete_param_with_ac(input, "/roster show", roster_option_ac, TRUE);
+    result = autocomplete_param_with_ac(input, "/roster show", roster_show_ac, TRUE);
     if (result) {
         return result;
     }
-    result = autocomplete_param_with_ac(input, "/roster hide", roster_option_ac, TRUE);
+    result = autocomplete_param_with_ac(input, "/roster hide", roster_show_ac, TRUE);
     if (result) {
         return result;
     }
@@ -2969,15 +2975,15 @@ _roster_autocomplete(ProfWin *window, const char *const input)
     if (result) {
         return result;
     }
-    result = autocomplete_param_with_ac(input, "/roster char", roster_char_ac, TRUE);
+    result = autocomplete_param_with_func(input, "/roster wrap", prefs_autocomplete_boolean_choice);
     if (result) {
         return result;
     }
-    result = autocomplete_param_with_ac(input, "/roster indent", roster_indent_ac, TRUE);
+    result = autocomplete_param_with_ac(input, "/roster header", roster_header_ac, TRUE);
     if (result) {
         return result;
     }
-    result = autocomplete_param_with_func(input, "/roster wrap", prefs_autocomplete_boolean_choice);
+    result = autocomplete_param_with_ac(input, "/roster contact", roster_contact_ac, TRUE);
     if (result) {
         return result;
     }
@@ -2985,6 +2991,10 @@ _roster_autocomplete(ProfWin *window, const char *const input)
     if (result) {
         return result;
     }
+    result = autocomplete_param_with_ac(input, "/roster presence", roster_presence_ac, TRUE);
+    if (result) {
+        return result;
+    }
     result = autocomplete_param_with_ac(input, "/roster", roster_ac, TRUE);
     if (result) {
         return result;