Remove "show" command completers, "set" command completers for string commands
authorPedro Alves <palves@redhat.com>
Wed, 12 Jun 2019 23:06:52 +0000 (00:06 +0100)
committerPedro Alves <palves@redhat.com>
Wed, 12 Jun 2019 23:10:03 +0000 (00:10 +0100)
The default command completer is symbol_completer, but it makes no
sense for a "show" command to complete on symbols, or anything else,
really.

I wonder whether we should instead make the default be no completer.
That seems like a much larger/complicated audit/change, so I'd like to
move forward with this version, as it'll be covered by tests.  I
noticed this because a following patch will add a new
gdb.base/settings.exp testcase that exercises all sorts of details of
settings commands, including completing the show commands, using new
representative "maint test-settings <type or settings command>"
commands.

Also remove the completer for var_string and var_string_noescape
commands.  No point in completing symbols when GDB is expecting a
string.

gdb/ChangeLog:
2019-06-13  Pedro Alves  <palves@redhat.com>

* cli/cli-decode.c (add_setshow_cmd_full): Remove "show"
completer.
(add_setshow_string_cmd, add_setshow_string_noescape_cmd): Remove
"set" completers.

gdb/ChangeLog
gdb/cli/cli-decode.c

index c254e36ec37f6718e72d710304adcfadc3673936..f1354dec9b1749c96cb5a3bdf254bcd7a87310d0 100644 (file)
@@ -1,3 +1,10 @@
+2019-06-13  Pedro Alves  <palves@redhat.com>
+
+       * cli/cli-decode.c (add_setshow_cmd_full): Remove "show"
+       completer.
+       (add_setshow_string_cmd, add_setshow_string_noescape_cmd): Remove
+       "set" completers.
+
 2019-06-13  Pedro Alves  <palves@redhat.com>
 
        * cli/cli-setshow.c (do_set_command) <var_enum>: Detect junk
index e59e0c70409235ac6a1d00ad186c491c1b7bfb7b..30f79b5259df5d15569eeb1d971970551d15ec0f 100644 (file)
@@ -509,6 +509,9 @@ add_setshow_cmd_full (const char *name,
                              full_show_doc, show_list);
   show->doc_allocated = 1;
   show->show_value_func = show_func;
+  /* Disable the default symbol completer.  Doesn't make much sense
+     for the "show" command to complete on anything.  */
+  set_cmd_completer (show, nullptr);
 
   if (set_result != NULL)
     *set_result = set;
@@ -633,11 +636,16 @@ add_setshow_string_cmd (const char *name, enum command_class theclass,
                        struct cmd_list_element **set_list,
                        struct cmd_list_element **show_list)
 {
+  cmd_list_element *set_cmd;
+
   add_setshow_cmd_full (name, theclass, var_string, var,
                        set_doc, show_doc, help_doc,
                        set_func, show_func,
                        set_list, show_list,
-                       NULL, NULL);
+                       &set_cmd, NULL);
+
+  /* Disable the default symbol completer.  */
+  set_cmd_completer (set_cmd, nullptr);
 }
 
 /* Add element named NAME to both the set and show command LISTs (the
@@ -659,6 +667,10 @@ add_setshow_string_noescape_cmd (const char *name, enum command_class theclass,
                        set_func, show_func,
                        set_list, show_list,
                        &set_cmd, NULL);
+
+  /* Disable the default symbol completer.  */
+  set_cmd_completer (set_cmd, nullptr);
+
   return set_cmd;
 }