* cp-abi.c (cp_abi_completer): New function.
authorTom Tromey <tromey@redhat.com>
Thu, 17 Jan 2013 16:27:35 +0000 (16:27 +0000)
committerTom Tromey <tromey@redhat.com>
Thu, 17 Jan 2013 16:27:35 +0000 (16:27 +0000)
(_initialize_cp_abi): Set completer for "set cp-abi".
gdb/testsuite
* gdb.base/completion.exp: Add "set cp-abi" completion test.

gdb/ChangeLog
gdb/cp-abi.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.base/completion.exp

index a094aea0d86ce2ffe476c7cb11b5b175b7f3999a..a98621c3fb728b248c886dfa36edd31f6baef213 100644 (file)
@@ -1,3 +1,8 @@
+2013-01-17  Tom Tromey  <tromey@redhat.com>
+
+       * cp-abi.c (cp_abi_completer): New function.
+       (_initialize_cp_abi): Set completer for "set cp-abi".
+
 2013-01-17  Tom Tromey  <tromey@redhat.com>
 
        * mem-break.c: Remove obsolete comment.
index f2a96deda64765a228e122181ef46401641ed7d0..f1fa9011e669e7fe2187165a5310a739d9311d32 100644 (file)
@@ -314,6 +314,27 @@ set_cp_abi_cmd (char *args, int from_tty)
     error (_("Could not find \"%s\" in ABI list"), args);
 }
 
+/* A completion function for "set cp-abi".  */
+
+static VEC (char_ptr) *
+cp_abi_completer (struct cmd_list_element *ignore,
+                 char *text, char *word)
+{
+  static const char **cp_abi_names;
+
+  if (cp_abi_names == NULL)
+    {
+      int i;
+
+      cp_abi_names = XNEWVEC (const char *, num_cp_abis + 1);
+      for (i = 0; i < num_cp_abis; ++i)
+       cp_abi_names[i] = cp_abis[i]->shortname;
+      cp_abis[i] = NULL;
+    }
+
+  return complete_on_enum (cp_abi_names, text, word);
+}
+
 /* Show the currently selected C++ ABI.  */
 
 static void
@@ -334,13 +355,16 @@ extern initialize_file_ftype _initialize_cp_abi; /* -Wmissing-prototypes */
 void
 _initialize_cp_abi (void)
 {
+  struct cmd_list_element *c;
+
   register_cp_abi (&auto_cp_abi);
   switch_to_cp_abi ("auto");
 
-  add_cmd ("cp-abi", class_obscure, set_cp_abi_cmd, _("\
+  c = add_cmd ("cp-abi", class_obscure, set_cp_abi_cmd, _("\
 Set the ABI used for inspecting C++ objects.\n\
 \"set cp-abi\" with no arguments will list the available ABIs."),
-          &setlist);
+              &setlist);
+  set_cmd_completer (c, cp_abi_completer);
 
   add_cmd ("cp-abi", class_obscure, show_cp_abi_cmd,
           _("Show the ABI used for inspecting C++ objects."),
index 7f5f0a41036ceea18624203f50101fb1fcd2d871..7fb73a5be263f8110aaf2e555c5c4327807fd3d3 100644 (file)
@@ -1,3 +1,7 @@
+2013-01-17  Tom Tromey  <tromey@redhat.com>
+
+       * gdb.base/completion.exp: Add "set cp-abi" completion test.
+
 2013-01-17  Pedro Alves  <palves@redhat.com>
 
        Merge dg-extract-results.sh from upstream (svn 195224).
index 8163a861a077a61169f5403c36ff7a1419f69eb6..fc90a20207e7994e3a1a382881397c6d5bfe27c5 100644 (file)
@@ -710,6 +710,9 @@ gdb_test "complete ptype union some_" "ptype union some_union"
 
 gdb_test "complete set gnutarget aut" "set gnutarget auto"
 
+
+gdb_test "complete set cp-abi aut" "set cp-abi auto"
+
 # Restore globals modified in this test...
 set timeout $oldtimeout1