[PATCH v5 3/8] GDB: Add `NUMBER' completion to `set' integer commands

Andrew Burgess aburgess@redhat.com
Fri Jun 24 15:08:16 GMT 2022


"Maciej W. Rozycki" <macro@embecosm.com> writes:

> 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.

I like this change, but I think we should add some documentation in
`@node Completion` that describes this new behaviour. We should probably
add a NEWS entry too.

Thanks,
Andrew



> ---
> No change from v4.
>
> New change in v4.
> ---
>  gdb/cli/cli-decode.c                |    2 ++
>  gdb/testsuite/gdb.base/settings.exp |    8 +++++++-
>  2 files changed, 9 insertions(+), 1 deletion(-)
>
> gdb-integer-complete-number.diff
> Index: src/gdb/cli/cli-decode.c
> ===================================================================
> --- src.orig/gdb/cli/cli-decode.c
> +++ src/gdb/cli/cli-decode.c
> @@ -989,6 +989,8 @@ integer_unlimited_completer (struct cmd_
>        NULL,
>      };
>  
> +  if (*text == '\0')
> +    tracker.add_completion (make_unique_xstrdup ("NUMBER"));
>    complete_on_enum (tracker, keywords, text, word);
>  }
>  
> Index: src/gdb/testsuite/gdb.base/settings.exp
> ===================================================================
> --- src.orig/gdb/testsuite/gdb.base/settings.exp
> +++ src/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"
>      }
>  



More information about the Gdb-patches mailing list