diff options
author | Tom Tromey <tromey@redhat.com> | 2008-06-09 19:25:15 +0000 |
---|---|---|
committer | Tom Tromey <tromey@redhat.com> | 2008-06-09 19:25:15 +0000 |
commit | c5b661547bd2c9efffef7e10628b4256f90fdcfa (patch) | |
tree | b995bfafd6539d33996936023a5276f381d2d933 /gdb/completer.c | |
parent | aef6d892c3efece15f011cf33a57031ee40f0525 (diff) | |
download | gdb-c5b661547bd2c9efffef7e10628b4256f90fdcfa.tar.gz |
gdb
* completer.c (complete_line): Don't special-case
expression_completer.
(expression_completer): Only pass last word to
location_completer.
* c-exp.y (yylex): Check 'token', not 'operator'.
gdb/testsuite
* gdb.base/completion.exp: New tests for field name completion
with spaces, and field name completion with '->'.
Diffstat (limited to 'gdb/completer.c')
-rw-r--r-- | gdb/completer.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/gdb/completer.c b/gdb/completer.c index 163a9dcfc83..62f0b694fa3 100644 --- a/gdb/completer.c +++ b/gdb/completer.c @@ -387,7 +387,7 @@ char ** expression_completer (char *text, char *word) { struct type *type; - char *fieldname; + char *fieldname, *p; /* Perform a tentative parse of the expression, to see whether a field completion is required. */ @@ -418,8 +418,15 @@ expression_completer (char *text, char *word) } } + /* Commands which complete on locations want to see the entire + argument. */ + for (p = word; + p > text && p[-1] != ' ' && p[-1] != '\t'; + p--) + ; + /* Not ideal but it is what we used to do before... */ - return location_completer (text, word); + return location_completer (p, word); } /* Complete on command names. Used by "help". */ @@ -604,8 +611,7 @@ complete_line (const char *text, char *line_buffer, int point) rl_completer_word_break_characters = gdb_completer_file_name_break_characters; } - else if (c->completer == location_completer - || c->completer == expression_completer) + else if (c->completer == location_completer) { /* Commands which complete on locations want to see the entire argument. */ @@ -673,8 +679,7 @@ complete_line (const char *text, char *line_buffer, int point) rl_completer_word_break_characters = gdb_completer_file_name_break_characters; } - else if (c->completer == location_completer - || c->completer == expression_completer) + else if (c->completer == location_completer) { for (p = word; p > tmp_command |