aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaciej W. Rozycki <macro@embecosm.com>2022-06-30 19:57:34 +0100
committerMaciej W. Rozycki <macro@embecosm.com>2022-06-30 19:57:34 +0100
commit89555e4ec2195b7b10203befa23ff5e62fba406d (patch)
tree2c7b5303e39d5f76fe5e3f6e1548958d4e9cb448
parent0b1505c82dc5bb593608bb72c1db0496088f2d25 (diff)
downloadbinutils-89555e4ec2195b7b10203befa23ff5e62fba406d.zip
binutils-89555e4ec2195b7b10203befa23ff5e62fba406d.tar.gz
binutils-89555e4ec2195b7b10203befa23ff5e62fba406d.tar.bz2
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.
-rw-r--r--gdb/NEWS12
-rw-r--r--gdb/cli/cli-decode.c2
-rw-r--r--gdb/doc/gdb.texinfo15
-rw-r--r--gdb/testsuite/gdb.base/settings.exp8
4 files changed, 36 insertions, 1 deletions
diff --git a/gdb/NEWS b/gdb/NEWS
index 5576c35..c4f4a02 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -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
diff --git a/gdb/cli/cli-decode.c b/gdb/cli/cli-decode.c
index a152834..fde554c 100644
--- a/gdb/cli/cli-decode.c
+++ b/gdb/cli/cli-decode.c
@@ -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);
}
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index 39c49f2..f7b02c2 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -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
diff --git a/gdb/testsuite/gdb.base/settings.exp b/gdb/testsuite/gdb.base/settings.exp
index dafc5e4..890a2be 100644
--- a/gdb/testsuite/gdb.base/settings.exp
+++ b/gdb/testsuite/gdb.base/settings.exp
@@ -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"
}