From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Brezillon Date: Tue, 4 Dec 2018 11:33:13 +0100 Subject: [U-Boot] [PATCH 0/2] cmd: auto-complete args starting with a $ In-Reply-To: <20181204101431.854D4242267@gemini.denx.de> References: <20181203220726.19370-1-boris.brezillon@bootlin.com> <20181204094419.6907C242267@gemini.denx.de> <20181204105448.63b9af8c@bbrezillon> <20181204101431.854D4242267@gemini.denx.de> Message-ID: <20181204113313.577178ac@bbrezillon> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Wolfgang, On Tue, 04 Dec 2018 11:14:31 +0100 Wolfgang Denk wrote: > Dear Boris, > > In message <20181204105448.63b9af8c@bbrezillon> you wrote: > > > > > > 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. > > > > > > 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. > > > > 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. > > In Bash, I can do: > > -> foo=1234 > -> echo $f > $f $flag $foo And that's pretty much how it works except that right now, echo has to be patched to support $ auto-completion. > -> 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 ${. > > 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. > > > > 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