GDB: Add NUMBER' completion to set' integer commands

Fix a completion consistency issue with `set' commands accepting integer
values and the special `unlimited' keyword:

(gdb) complete print -elements
print -elements NUMBER
print -elements unlimited
(gdb)

vs:

(gdb) complete set print elements
set print elements unlimited
(gdb)

(there is a space entered at the end of both commands, not shown here)
which also means if you strike <Tab> with `set print elements ' input,
it will, annoyingly, complete to `set print elements unlimited' right
away rather than showing a choice between `NUMBER' and `unlimited'.

Add `NUMBER' then as an available completion for such `set' commands:

(gdb) complete set print elements
set print elements NUMBER
set print elements unlimited
(gdb)

Adjust the testsuite accordingly.  Also document the feature in the
Completion section of the manual in addition to the Command Options
section already there.
This commit is contained in:
Maciej W. Rozycki 2022-06-30 19:57:34 +01:00
parent 0b1505c82d
commit 89555e4ec2
4 changed files with 36 additions and 1 deletions

View File

@ -27,6 +27,18 @@
emit to indicate where a breakpoint should be placed to break in a function
past its prologue.
* Completion now also offers "NUMBER" for "set" commands that accept
a numeric argument and the "unlimited" keyword. For example:
(gdb) set width <TAB>
NUMBER unlimited
and consequently:
(gdb) complete set width
set width NUMBER
set width unlimited
* New commands
maintenance set ignore-prologue-end-flag on|off

View File

@ -989,6 +989,8 @@ integer_unlimited_completer (struct cmd_list_element *ignore,
NULL,
};
if (*text == '\0')
tracker.add_completion (make_unique_xstrdup ("NUMBER"));
complete_on_enum (tracker, keywords, text, word);
}

View File

@ -1960,6 +1960,21 @@ After displaying the available possibilities, @value{GDBN} copies your
partial input (@samp{b make_} in the example) so you can finish the
command.
If the command you are trying to complete expects either a keyword or a
number to follow, then @samp{NUMBER} will be shown among the available
completions, for example:
@smallexample
(@value{GDBP}) print -elements @key{TAB}@key{TAB}
NUMBER unlimited
(@value{GDBP}) print -elements@tie{}
@end smallexample
@noindent
Here, the option expects a number (e.g., @code{100}), not literal
@code{NUMBER}. Such metasyntactical arguments are always presented in
uppercase.
If you just want to see the list of alternatives in the first place, you
can press @kbd{M-?} rather than pressing @key{TAB} twice. @kbd{M-?}
means @kbd{@key{META} ?}. You can type this either by holding down a

View File

@ -215,8 +215,14 @@ proc test-integer {variant} {
test_gdb_complete_none \
"$set_cmd "
} else {
test_gdb_complete_multiple "$set_cmd " "" "" {
"NUMBER"
"unlimited"
}
test_gdb_complete_none \
"$set_cmd 1"
test_gdb_complete_unique \
"$set_cmd " \
"$set_cmd u" \
"$set_cmd unlimited"
}