Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: Menu selection by number

Timo wrote on Thu, Jun 24, 2021 at 20:57:57 +0200:
> Hello there,
> I'd like to pose the following suggestion: 
> Display menu options prepended with a selection number which can be used by user to select option by typing the number.
> Motivation: I am using voice programming and numbers are a great visual aid in quickly selecting options. Anyone who wants to type even less could make good use of it.
> It could behave this way:
> The autocompletion menu lists some options
> The options should be prepended by a uniquely identifiable number each (for the current menu display)
> If the user types further and the menu changes, the options' numbers are reassigned to the newly displayed options.
> Numbers should be displayed in a sorted manner.
> Example:
> > ls
> test_file1 testfile1  testfile_1 testfile_2 testfile_3 testfile_4 testfile_5
> # Press tab opens auto completion menu 
> # without numbers
> > ls test
> test_file1  testfile1   testfile_1  testfile_2  testfile_3  testfile_4  testfile_5
> # with numbers
> > ls test
> 1: test_file1  2: testfile1   3: testfile_1  4: testfile_2  5: testfile_3  6: testfile_4  7: testfile_5
> # typing 3 (or for example ALT+3) would complete with `testfile_1`.
> What's your opinion on this?

I wonder if we should just make choosing a completion pluggable: have
compsys call some user-defined function with the possible completions as
arguments and let the function report to us which one was selected.
Then, implementing a «select»-like numbered list, or "search completions
by description", or for that matter a GUI selection dialog with bells
and whistles for cases that offer completions from multiple tags (e.g.,
«ssh <TAB>», «git checkout <TAB>», with «tag-order ''» set), could then
be done in third-party plugins.

(«select» is a shell builtin.)

Also related:

- list-colors can be used to hide the common, already-typed part of
  completions, and colorize the first differing letter: https://www.zsh.org/workers/38518

- The _match completer lets one choose a completion by globbing to it.
  (E.g., «ssh *lsh<TAB>» → «ssh danielsh@<CURSOR>»)


(Aside: Would a non-looping variant of «select» be a good idea?)

Messages sorted by: Reverse Date, Date, Thread, Author