Skip to content

cmd: auto-complete args starting with a $

Boris Brezillon u-boot 1 version New

Get series with b4
b4 am 20181204113313.577178ac@bbrezillon

Versions newest first

  1. v1 Latest0 of 2 patches 0 repliesNew

Patches in v1 No applies recorded yet

None of the 2 patches the cover letter announces are in this archive.

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [U-Boot] [PATCH 0/2] cmd: auto-complete args starting with a $

Hi Wolfgang,

Quoted 10 lines · On Tue, 04 Dec 2018 11:14:31 +0100 Wolfgang Denk <[email protected]> wrote:

Dear Boris,

Quoted 7 lines · In message <20181204105448.63b9af8c@bbrezillon> you wrote:
Quoted 7 lines
Quoted 6 lines

It's pretty common to pass arguments that start with a $ and are then expanded by the shell, and I'm this kind of lazy guy that hits tab all the time and expects the shell to suggest something appropriate. So here is a patchset adding support for ${} auto-completion and using the new helper from the mtd command.

Quoted 7 lines
Quoted 4 lines
Quoted 1 line

You mean, this feature depends on MTD support? this is not goot.

Not at all, MTD is just the first user of this dollar_complete() helper. That's what I meant.

But is this not based on the code of mtd_name_complete() which is only availabole when MTD is present?

Nope. See patch 1, the code is completely independent from the mtd cmd.

Quoted 14 lines
Quoted 9 lines
Quoted 3 lines

Also, you should make this feature configurable. Not everybody may want to use it or may have the memory available.

It already depends on CONFIG_AUTO_COMPLETE, and each command has to explicitly call the helper to support ${} auto-completion. Not that $ auto-completion only makes sense for some arguments, not all of them. It's the responsibility of the command itself to decide when it should be used.

Um... this is not hat I would expect - if we implement auto-completion for variables, it should IMO work similar to what a standard shell is doing.

Quoted 5 lines

In Bash, I can do:

-> foo=1234
-> echo $f<TAB>
$f $flag $foo

And that's pretty much how it works except that right now, echo has to be patched to support $ auto-completion.

Quoted 1 line

-> echo $f

For the record, not all shell configs expand $foo, some require that foo be enclosed in ${} (${foo}), that's why the current proposal always auto-completes $ as ${.

Quoted 7 lines

i. e. this is a feature of the shell and not of any command. Implementing this a zillion times for each of the commands in inacceptable. Also, implementing it for one command and not for another makese no sense - that would violate the Principle of Least Surprise, as you have something which looks convenient but does not work everywhere.

Okay, I understand. I can try to hook that up at the common/command.c level.

Quoted 10 lines
Quoted 7 lines
Quoted 4 lines

Technically - should autocompletion not be prevented for escaped '$' characters, i. e. hitting TAB after a '\$' sequence should NOT expand?

It's already the case. The argument has to start with $ or ${ to be auto-completed.

We should implement this such that behaviour is similar to what we see on a standard shell.

Apart from the "make that available to everyone" comment, is there anything else you think should be changed? IOW, what is not compliant with a standard shell auto-completion in my proposal?

Regards,

Boris