This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [RFA 1/2] Add completion for COMMAND in 'thread apply all|ID... COMMAND'
On Thu, 2019-04-25 at 07:30 -0600, Tom Tromey wrote:
> > > > > > "Philippe" == Philippe Waroquiers <philippe.waroquiers@skynet.be> writes:
>
> Philippe> This patch adds logic to complete the COMMAND part of the
> Philippe> 'thread apply all|ID...' command.
>
> Thanks for the patch. I think this is a good idea.
>
> Philippe> +/* Skips the known arguments of thread apply all
> Philippe> + and then invokes the usual command_completer. */
> Philippe> +
> Philippe> +static void
> Philippe> +thread_apply_all_command_completer (struct cmd_list_element *cmd,
> Philippe> + completion_tracker &tracker,
> Philippe> + const char *text, const char *word)
> Philippe> +{
> Philippe> + while (text != NULL)
> Philippe> + {
> Philippe> + qcs_flags dummy;
> Philippe> +
> Philippe> + if (check_for_argument (&text, "-ascending", strlen ("-ascending")))
> Philippe> + {
> Philippe> + text = skip_spaces (text);
> Philippe> + continue;
> Philippe> + }
> Philippe> +
> Philippe> + if (parse_flags_qcs ("thread apply all COMMAND completer", &text, &dummy))
> Philippe> + continue;
>
> There are some corner cases that aren't handled here, that maybe should
> be.
>
> One example is if the input text is "thread apply all -ascen".
> It seems like this should complete to "-ascending " (with the trailing space).
Currently, the unpatched GDB HEAD does not complete -ascen.
I agree it should complete but it does not :(.
(the GDB behaviour regarding command option syntax is wildly inconsistent).
>
> If the input text is "thread apply all -ascending" (no trailing space),
> then won't it start completing commands without adding a trailing space?
> This would result in an invalid command.
I cannot produce this problem (or a bug).
In an unpatched GDB HEAD, typing tab after each letter of -ascending
does not do anything : in 'thread apply all -ascending',
the last thing that completes is 'all'.
With this patch, the behaviour is not very different, except
that the patched GDB 'helps' once the user has completely typed
-ascending: then TAB will insert a space, wonderful help :).
After that, it looks to me that correct command completion is happening.
It would be nice to have better completion for -ascending
and/or have thread apply all -asc <return>
working properly. Today, it does:
(gdb) thread apply all -asc
Thread 4 (Thread 0x7ffff681a700 (LWP 23471)):
Undefined command: "-asc". Try "help".
(gdb)
To the contrary, 'bt full', 'bt fu' will work the same way !
But similarly, bt fu<TAB> does not complete.
I guess it should be possible with a slight change of this patch to
have at least -asc<TAB> complete.
>
> A similar thing applies if the completion occurs just after an isolated "-".
Same as above: not clear to me how to create a problem.
>
> These aren't all equally important, but I think at minimum completion
> shouldn't result in something invalid.
>
> thanks,
> Tom