diff options
author | Tom Tromey <tromey@redhat.com> | 2008-07-11 15:07:52 +0000 |
---|---|---|
committer | Tom Tromey <tromey@redhat.com> | 2008-07-11 15:07:52 +0000 |
commit | 14032a66f195a775441d5c9ec66fe36a8e54d635 (patch) | |
tree | e97929c0437bf37c7663348ce2bb621420d4b4cb | |
parent | 65fc9b77211c67d97824de129cfa0945be80ded0 (diff) | |
download | gdb-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/ChangeLog | 7 | ||||
-rw-r--r-- | gdb/completer.c | 41 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/completion.exp | 17 |
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 { |