aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2008-07-11 15:07:52 +0000
committerTom Tromey <tromey@redhat.com>2008-07-11 15:07:52 +0000
commit14032a66f195a775441d5c9ec66fe36a8e54d635 (patch)
treee97929c0437bf37c7663348ce2bb621420d4b4cb
parent65fc9b77211c67d97824de129cfa0945be80ded0 (diff)
downloadgdb-14032a66f195a775441d5c9ec66fe36a8e54d635.zip
gdb-14032a66f195a775441d5c9ec66fe36a8e54d635.tar.gz
gdb-14032a66f195a775441d5c9ec66fe36a8e54d635.tar.bz2
gdb
* completer.c (complete_line_internal): New function, from complete_line. Add 'for_help' parameter. (complete_line): Use it. (command_completer): Move later. Rewrite. gdb/testsuite * gdb.base/completion.exp: Add 'help' completion test.
-rw-r--r--gdb/ChangeLog7
-rw-r--r--gdb/completer.c41
-rw-r--r--gdb/testsuite/ChangeLog4
-rw-r--r--gdb/testsuite/gdb.base/completion.exp17
4 files changed, 57 insertions, 12 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 7c9c3ed..e5c54e6 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,10 @@
+2008-07-11 Tom Tromey <tromey@redhat.com>
+
+ * completer.c (complete_line_internal): New function, from
+ complete_line. Add 'for_help' parameter.
+ (complete_line): Use it.
+ (command_completer): Move later. Rewrite.
+
2008-07-11 Pedro Alves <pedro@codesourcery.com>
* thread.c (thread_apply_command): Move making the cleanup out of
diff --git a/gdb/completer.c b/gdb/completer.c
index 62f0b69..e7ee817 100644
--- a/gdb/completer.c
+++ b/gdb/completer.c
@@ -429,14 +429,6 @@ expression_completer (char *text, char *word)
return location_completer (p, word);
}
-/* Complete on command names. Used by "help". */
-char **
-command_completer (char *text, char *word)
-{
- return complete_on_cmdlist (cmdlist, text, word);
-}
-
-
/* Here are some useful test cases for completion. FIXME: These should
be put in the test suite. They should be tested with both M-? and TAB.
@@ -467,10 +459,16 @@ command_completer (char *text, char *word)
LINE_BUFFER is available to be looked at; it contains the entire text
of the line. POINT is the offset in that line of the cursor. You
- should pretend that the line ends at POINT. */
-
-char **
-complete_line (const char *text, char *line_buffer, int point)
+ should pretend that the line ends at POINT.
+
+ FOR_HELP is true when completing a 'help' command. In this case,
+ once sub-command completions are exhausted, we simply return NULL.
+ When FOR_HELP is false, we will call a sub-command's completion
+ function. */
+
+static char **
+complete_line_internal (const char *text, char *line_buffer, int point,
+ int for_help)
{
char **list = NULL;
char *tmp_command, *p;
@@ -583,6 +581,8 @@ complete_line (const char *text, char *line_buffer, int point)
rl_completer_word_break_characters =
gdb_completer_command_word_break_characters;
}
+ else if (for_help)
+ list = NULL;
else if (c->enums)
{
list = complete_on_enum (c->enums, p, word);
@@ -650,6 +650,8 @@ complete_line (const char *text, char *line_buffer, int point)
gdb_completer_command_word_break_characters;
}
}
+ else if (for_help)
+ list = NULL;
else
{
/* There is non-whitespace beyond the command. */
@@ -695,6 +697,21 @@ complete_line (const char *text, char *line_buffer, int point)
return list;
}
+/* Like complete_line_internal, but always passes 0 for FOR_HELP. */
+
+char **
+complete_line (const char *text, char *line_buffer, int point)
+{
+ return complete_line_internal (text, line_buffer, point, 0);
+}
+
+/* Complete on command names. Used by "help". */
+char **
+command_completer (char *text, char *word)
+{
+ return complete_line_internal (word, text, strlen (text), 1);
+}
+
/* Generate completions one by one for the completer. Each time we are
called return another potential completion to the caller.
line_completion just completes on commands or passes the buck to the
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 8510e3f..16d4665 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2008-07-11 Tom Tromey <tromey@redhat.com>
+
+ * gdb.base/completion.exp: Add 'help' completion test.
+
2008-07-10 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.base/randomize.exp: Remove dependency on tcl-8.4+.
diff --git a/gdb/testsuite/gdb.base/completion.exp b/gdb/testsuite/gdb.base/completion.exp
index f4ab1b1..4100db3 100644
--- a/gdb/testsuite/gdb.base/completion.exp
+++ b/gdb/testsuite/gdb.base/completion.exp
@@ -364,6 +364,23 @@ gdb_expect {
}
+send_gdb "help info wat\t"
+gdb_expect {
+ -re "^help info watchpoints $"\
+ { send_gdb "\n"
+ gdb_expect {
+ -re "Synonym for .*\r\n.*$gdb_prompt $"\
+ { pass "complete help info wat" }
+ -re ".*$gdb_prompt $" { fail "complete help info wat"}
+ timeout {fail "(timeout) complete help info wat"}
+ }
+ }
+ -re "^help info wat\\\x07$" { fail "complete (2) help info wat" }
+ -re ".*$gdb_prompt $" { fail "complete (3) help info wat" }
+ timeout { fail "(timeout) complete (3) help info wat" }
+ }
+
+
send_gdb "p \"break1\t"
sleep 1
gdb_expect {