Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Yao Qi <yao@codesourcery.com>
To: Pedro Alves <palves@redhat.com>
Cc: <gdb-patches@sourceware.org>
Subject: Re: [PATCH] Add completer to commands 'target {core/tfile/exec}'
Date: Fri, 29 Mar 2013 16:42:00 -0000	[thread overview]
Message-ID: <5155B1A9.3030503@codesourcery.com> (raw)
In-Reply-To: <51545E43.1020703@redhat.com>

On 03/28/2013 11:14 PM, Pedro Alves wrote:
>> 	(add_target_with_completer): ... it.  New.  Call set_cmd_completer if
>> >	parameter completer is not NULL.
> s/it./this./.  "New." looks stale here.  Did you mean "New parameter"?
> 

"New" is not needed here.  Removed.  Patch below is committed.  Thanks
for the review.

-- 
Yao (齐尧)

gdb:

2013-03-29  Yao Qi  <yao@codesourcery.com>

	* corelow.c: Include "completer.h".
	(_initialize_corelow): Call add_target_with_completer with
	argument 'filename_completer'.
	* tracepoint.c: Likewise.
	* exec.c (_initialize_exec): Likewise.
	* target.c (add_target): Rename to ...
	(add_target_with_completer): ... this.  Call set_cmd_completer
	if parameter completer is not NULL.
	(add_target): New.
	* target.h: Include "command.h".
	(add_target_with_completer): Declare it.

gdb/testsuite:

2013-03-29  Yao Qi  <yao@codesourcery.com>

	* gdb.base/completion.exp: Test completion of commands
	"target core", "target tfile" and "target exec".
	* gdb.trace/tfile.exp: Test completion of command
	"target tfile".
---
 gdb/corelow.c                         |    3 ++-
 gdb/exec.c                            |    2 +-
 gdb/target.c                          |   22 +++++++++++++++++++---
 gdb/target.h                          |    4 ++++
 gdb/testsuite/gdb.base/completion.exp |    7 +++++++
 gdb/testsuite/gdb.trace/tfile.exp     |    5 +++++
 gdb/tracepoint.c                      |    3 ++-
 7 files changed, 40 insertions(+), 6 deletions(-)

diff --git a/gdb/corelow.c b/gdb/corelow.c
index 77bab82..fa48941 100644
--- a/gdb/corelow.c
+++ b/gdb/corelow.c
@@ -46,6 +46,7 @@
 #include "progspace.h"
 #include "objfiles.h"
 #include "gdb_bfd.h"
+#include "completer.h"
 
 #ifndef O_LARGEFILE
 #define O_LARGEFILE 0
@@ -977,5 +978,5 @@ _initialize_corelow (void)
 {
   init_core_ops ();
 
-  add_target (&core_ops);
+  add_target_with_completer (&core_ops, filename_completer);
 }
diff --git a/gdb/exec.c b/gdb/exec.c
index f550194..3386b60 100644
--- a/gdb/exec.c
+++ b/gdb/exec.c
@@ -943,7 +943,7 @@ Show writing into executable and core files."), NULL,
 			   show_write_files,
 			   &setlist, &showlist);
 
-  add_target (&exec_ops);
+  add_target_with_completer (&exec_ops, filename_completer);
 }
 
 static char *
diff --git a/gdb/target.c b/gdb/target.c
index 9193c97..24cc79d 100644
--- a/gdb/target.c
+++ b/gdb/target.c
@@ -384,11 +384,16 @@ target_has_execution_current (void)
   return target_has_execution_1 (inferior_ptid);
 }
 
-/* Add a possible target architecture to the list.  */
+/* Add possible target architecture T to the list and add a new
+   command 'target T->to_shortname'.  Set COMPLETER as the command's
+   completer if not NULL.  */
 
 void
-add_target (struct target_ops *t)
+add_target_with_completer (struct target_ops *t,
+			   completer_ftype *completer)
 {
+  struct cmd_list_element *c;
+
   /* Provide default values for all "must have" methods.  */
   if (t->to_xfer_partial == NULL)
     t->to_xfer_partial = default_xfer_partial;
@@ -431,7 +436,18 @@ Remaining arguments are interpreted by the target protocol.  For more\n\
 information on the arguments for a particular protocol, type\n\
 `help target ' followed by the protocol name."),
 		    &targetlist, "target ", 0, &cmdlist);
-  add_cmd (t->to_shortname, no_class, t->to_open, t->to_doc, &targetlist);
+  c = add_cmd (t->to_shortname, no_class, t->to_open, t->to_doc,
+	       &targetlist);
+  if (completer != NULL)
+    set_cmd_completer (c, completer);
+}
+
+/* Add a possible target architecture to the list.  */
+
+void
+add_target (struct target_ops *t)
+{
+  add_target_with_completer (t, NULL);
 }
 
 /* See target.h.  */
diff --git a/gdb/target.h b/gdb/target.h
index ee3fbff..4f8520c 100644
--- a/gdb/target.h
+++ b/gdb/target.h
@@ -63,6 +63,7 @@ struct expression;
 #include "vec.h"
 #include "gdb_signals.h"
 #include "btrace.h"
+#include "command.h"
 
 enum strata
   {
@@ -1841,6 +1842,9 @@ int target_verify_memory (const gdb_byte *data,
 
 extern void add_target (struct target_ops *);
 
+extern void add_target_with_completer (struct target_ops *t,
+				       completer_ftype *completer);
+
 /* Adds a command ALIAS for target T and marks it deprecated.  This is useful
    for maintaining backwards compatibility when renaming targets.  */
 
diff --git a/gdb/testsuite/gdb.base/completion.exp b/gdb/testsuite/gdb.base/completion.exp
index cddc548..7b664bf 100644
--- a/gdb/testsuite/gdb.base/completion.exp
+++ b/gdb/testsuite/gdb.base/completion.exp
@@ -713,6 +713,13 @@ gdb_test "complete set gnutarget aut" "set gnutarget auto"
 
 gdb_test "complete set cp-abi aut" "set cp-abi auto"
 
+# Test that completion of commands 'target FOO' works well.
+
+foreach target_name { "core" "tfile" "exec" } {
+    gdb_test "complete target ${target_name} ./gdb.base/completion" \
+	"target ${target_name} ./gdb.base/completion\\.exp.*"
+}
+
 # Restore globals modified in this test...
 set timeout $oldtimeout1
 
diff --git a/gdb/testsuite/gdb.trace/tfile.exp b/gdb/testsuite/gdb.trace/tfile.exp
index e8a778d..3b720cc 100644
--- a/gdb/testsuite/gdb.trace/tfile.exp
+++ b/gdb/testsuite/gdb.trace/tfile.exp
@@ -128,3 +128,8 @@ gdb_test \
 gdb_test "interpreter-exec mi \"-trace-status\"" \
     "\\^done,supported=\"file\",trace-file=\".*basic.tf\",running=\"0\",stop-reason=\"request\",frames=\"${decimal}\",frames-created=\"${decimal}\",buffer-size=\"${decimal}\",buffer-free=\"${decimal}\",disconnected=\".*\",circular=\".*\",user-name=\"\",notes=\"\",start-time=\".*\",stop-time=\".*\"" \
     "-trace-status"
+
+# Test completion works well.
+
+gdb_test "target tfile basic\t" "Assuming tracepoint.*" \
+    "complete-command 'target tfile'"
diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c
index d42138b..1044606 100644
--- a/gdb/tracepoint.c
+++ b/gdb/tracepoint.c
@@ -53,6 +53,7 @@
 #include "cli/cli-utils.h"
 #include "probe.h"
 #include "ctf.h"
+#include "completer.h"
 
 /* readline include files */
 #include "readline/readline.h"
@@ -5846,5 +5847,5 @@ Show the notes string to use for future tstop commands"), NULL,
 
   init_tfile_ops ();
 
-  add_target (&tfile_ops);
+  add_target_with_completer (&tfile_ops, filename_completer);
 }
-- 
1.7.7.6


  reply	other threads:[~2013-03-29 15:23 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-28 15:14 Yao Qi
2013-03-28 18:50 ` Pedro Alves
2013-03-29 16:42   ` Yao Qi [this message]
2013-04-03 13:44     ` Doug Evans
2013-04-03 15:53       ` Yao Qi
2013-04-03 17:09         ` Yao Qi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5155B1A9.3030503@codesourcery.com \
    --to=yao@codesourcery.com \
    --cc=gdb-patches@sourceware.org \
    --cc=palves@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox