From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1256) id 7EB5A385C306; Thu, 30 Jun 2022 18:58:19 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 7EB5A385C306 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Maciej W. Rozycki To: gdb-cvs@sourceware.org Subject: [binutils-gdb] GDB: Add `NUMBER' completion to `set' integer commands X-Act-Checkin: binutils-gdb X-Git-Author: Maciej W. Rozycki X-Git-Refname: refs/heads/master X-Git-Oldrev: 0b1505c82dc5bb593608bb72c1db0496088f2d25 X-Git-Newrev: 89555e4ec2195b7b10203befa23ff5e62fba406d Message-Id: <20220630185819.7EB5A385C306@sourceware.org> Date: Thu, 30 Jun 2022 18:58:19 +0000 (GMT) X-BeenThere: gdb-cvs@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 30 Jun 2022 18:58:19 -0000 https://sourceware.org/git/gitweb.cgi?p=3Dbinutils-gdb.git;h=3D89555e4ec219= 5b7b10203befa23ff5e62fba406d commit 89555e4ec2195b7b10203befa23ff5e62fba406d Author: Maciej W. Rozycki Date: Thu Jun 30 19:57:34 2022 +0100 GDB: Add `NUMBER' completion to `set' integer commands =20 Fix a completion consistency issue with `set' commands accepting integer values and the special `unlimited' keyword: =20 (gdb) complete print -elements print -elements NUMBER print -elements unlimited (gdb) =20 vs: =20 (gdb) complete set print elements set print elements unlimited (gdb) =20 (there is a space entered at the end of both commands, not shown here) which also means if you strike 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'. =20 Add `NUMBER' then as an available completion for such `set' commands: =20 (gdb) complete set print elements set print elements NUMBER set print elements unlimited (gdb) =20 Adjust the testsuite accordingly. Also document the feature in the Completion section of the manual in addition to the Command Options section already there. Diff: --- gdb/NEWS | 12 ++++++++++++ gdb/cli/cli-decode.c | 2 ++ gdb/doc/gdb.texinfo | 15 +++++++++++++++ gdb/testsuite/gdb.base/settings.exp | 8 +++++++- 4 files changed, 36 insertions(+), 1 deletion(-) diff --git a/gdb/NEWS b/gdb/NEWS index 5576c355b7a..c4f4a02a7c0 100644 --- a/gdb/NEWS +++ b/gdb/NEWS @@ -27,6 +27,18 @@ emit to indicate where a breakpoint should be placed to break in a funct= ion past its prologue. =20 +* Completion now also offers "NUMBER" for "set" commands that accept + a numeric argument and the "unlimited" keyword. For example: + + (gdb) set width + NUMBER unlimited + + and consequently: + + (gdb) complete set width + set width NUMBER + set width unlimited + * New commands =20 maintenance set ignore-prologue-end-flag on|off diff --git a/gdb/cli/cli-decode.c b/gdb/cli/cli-decode.c index a15283421fe..fde554c7e6c 100644 --- a/gdb/cli/cli-decode.c +++ b/gdb/cli/cli-decode.c @@ -989,6 +989,8 @@ integer_unlimited_completer (struct cmd_list_element *i= gnore, NULL, }; =20 + if (*text =3D=3D '\0') + tracker.add_completion (make_unique_xstrdup ("NUMBER")); complete_on_enum (tracker, keywords, text, word); } =20 diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo index 39c49f29edd..f7b02c262b8 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. =20 +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/s= ettings.exp index dafc5e4d8fd..890a2befc59 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" }