diff options
author | Sven Wischnowsky <wischnow@users.sourceforge.net> | 2000-06-27 15:05:33 +0000 |
---|---|---|
committer | Sven Wischnowsky <wischnow@users.sourceforge.net> | 2000-06-27 15:05:33 +0000 |
commit | 9eca7fc7261494760c1709189e93a044c3658a84 (patch) | |
tree | a56e919b98c3c787d546edbb3ad788cb22299b5e | |
parent | c8812bb0c830f595bad769f47f6d3cf07ee4ebf8 (diff) | |
download | zsh-9eca7fc7261494760c1709189e93a044c3658a84.tar.gz zsh-9eca7fc7261494760c1709189e93a044c3658a84.tar.xz zsh-9eca7fc7261494760c1709189e93a044c3658a84.zip |
menu style accepts yes=x to start menu completion if there are at least x matches (3219)
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | Completion/Core/_main_complete | 50 | ||||
-rw-r--r-- | Doc/Zsh/compsys.yo | 4 |
3 files changed, 37 insertions, 21 deletions
diff --git a/ChangeLog b/ChangeLog index f801c4a6b..e03bff517 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2000-06-27 Sven Wischnowsky <wischnow@zsh.org> + * 3219: Completion/Core/_main_complete, Doc/Zsh/compsys.yo: menu + style accepts yes=x to start menu completion if there are at least + x matches + * Andrej: 12084: Src/Modules/zpty.c: don't close slave if not yet open * 12082: Doc/Zsh/compsys.yo: document _use_lo diff --git a/Completion/Core/_main_complete b/Completion/Core/_main_complete index f238c88ac..690192020 100644 --- a/Completion/Core/_main_complete +++ b/Completion/Core/_main_complete @@ -23,7 +23,7 @@ exec </dev/null # ZLE closes stdin, which can cause errors # Failed returns from this code are not real errors setopt localtraps noerrexit ; trap - ZERR -local func funcs ret=1 tmp _compskip format nm call match \ +local func funcs ret=1 tmp _compskip format nm call match min i num\ _completers _completer _completer_num curtag _comp_force_list \ _matchers _matcher _matcher_num _comp_tags _comp_mesg \ context state line opt_args val_args curcontext="$curcontext" \ @@ -175,24 +175,33 @@ if [[ $compstate[old_list] = keep || nm -gt 1 ]]; then elif [[ "$compstate[insert]" = "$_saved_insert" ]]; then if [[ -n "$_menu_style[(r)select=long]" && tmp -gt LINES ]]; then compstate[insert]=menu - elif [[ -n "$_menu_style[(r)(yes|true|1|on)]" || - ( -n "$_menu_style[(r)auto*]" && - "$compstate[insert]" = automenu ) ]]; then - compstate[insert]=menu - elif [[ -n "$_menu_style[(r)auto*]" && - "$compstate[insert]" != automenu ]]; then - compstate[insert]=automenu-unambiguous - elif [[ -n "$_menu_style[(r)(no|false|0|off)]" ]]; then - compstate[insert]=unambiguous - elif [[ -n "$_def_menu_style[(r)(yes|true|1|on)]" || - ( -n "$_def_menu_style[(r)auto*]" && - "$compstate[insert]" = automenu ) ]]; then - compstate[insert]=menu - elif [[ -n "$_def_menu_style[(r)auto*]" && - "$compstate[insert]" != automenu ]]; then - compstate[insert]=automenu-unambiguous - elif [[ -n "$_def_menu_style[(r)(no|false|0|off)]" ]]; then - compstate[insert]=unambiguous + else + sel=( "${(@M)_menu_style:#(yes|true|1|on)*}" ) + + if (( $#sel )); then + min=9999999 + for i in "$sel[@]"; do + if [[ "$i" = *\=* ]]; then + num="${i#*\=}" + [[ num -lt 0 ]] && num=0 + else + num=0 + fi + [[ num -lt min ]] && min="$num" + + (( min )) || break + done + fi + if [[ ( -n "$min" && nm -ge min ) || + ( -n "$_menu_style[(r)auto*]" && + "$compstate[insert]" = automenu ) ]]; then + compstate[insert]=menu + elif [[ -n "$_menu_style[(r)auto*]" && + "$compstate[insert]" != automenu ]]; then + compstate[insert]=automenu-unambiguous + elif [[ -n "$_menu_style[(r)(no|false|0|off)]" ]]; then + compstate[insert]=unambiguous + fi fi fi @@ -209,8 +218,7 @@ if [[ $compstate[old_list] = keep || nm -gt 1 ]]; then sel=( "${(@M)_menu_style:#select*}" ) if (( $#sel )); then - local min=9999999 i num - + min=9999999 for i in "$sel[@]"; do if [[ "$i" = *\=* ]]; then num="${i#*\=}" diff --git a/Doc/Zsh/compsys.yo b/Doc/Zsh/compsys.yo index f0bd54248..a562b6f30 100644 --- a/Doc/Zsh/compsys.yo +++ b/Doc/Zsh/compsys.yo @@ -1593,6 +1593,10 @@ option. Finally, if one of the values is explicitly set to false, menu completion will be turned off even if it would otherwise be active (for example, with the tt(MENU_COMPLETE) option). +Using the form `tt(yes=)var(num)', where `tt(yes)' may be any of the +true values (`tt(yes)', `tt(true)', `tt(on)' and `tt(1)') turns on +menu completion if there at least var(num) matches. + In addition to (or instead of) the above possibilities, the value may contain the string `tt(select)', optionally followed by an equal sign and a number. In this case menu-selection (as defined by the tt(zsh/complist) |