about summary refs log tree commit diff
path: root/Completion/Core
diff options
context:
space:
mode:
authorTanaka Akira <akr@users.sourceforge.net>2000-02-24 14:44:28 +0000
committerTanaka Akira <akr@users.sourceforge.net>2000-02-24 14:44:28 +0000
commit6785dcb5c920b6be812b4d1a70ce53ed47ff2f30 (patch)
tree332ee00c91dbd07c7982465fb61dd6dbebe95cc5 /Completion/Core
parent01ffe47e012deb204dc74a3fff794f8b4a3ec795 (diff)
downloadzsh-6785dcb5c920b6be812b4d1a70ce53ed47ff2f30.tar.gz
zsh-6785dcb5c920b6be812b4d1a70ce53ed47ff2f30.tar.xz
zsh-6785dcb5c920b6be812b4d1a70ce53ed47ff2f30.zip
zsh-workers/9865
Diffstat (limited to 'Completion/Core')
-rw-r--r--Completion/Core/_main_complete15
-rw-r--r--Completion/Core/_setup2
2 files changed, 12 insertions, 5 deletions
diff --git a/Completion/Core/_main_complete b/Completion/Core/_main_complete
index 739ce2898..a5acb36f7 100644
--- a/Completion/Core/_main_complete
+++ b/Completion/Core/_main_complete
@@ -19,7 +19,7 @@
 setopt localoptions nullglob rcexpandparam extendedglob
 unsetopt markdirs globsubst shwordsplit nounset ksharrays
 
-local comp post ret=1 tmp _compskip format _comp_ignore \
+local ctxt post ret=1 tmp _compskip format _comp_ignore \
       _completers _completer _completer_num \
       _matchers _matcher _matcher_num \
       context state line opt_args val_args curcontext="$curcontext" \
@@ -66,7 +66,14 @@ _completers=( "$@" )
 _completer_num=1
 
 for _completer; do
-  zstyle -a ":completion:${curcontext/::/:${_completer[2,-1]}-${(M)#_completers[1,_completer_num]:#$_completer}:}:" matcher-list _matchers ||
+  ctxt=":completion:${curcontext/::/:${_completer[2,-1]}-${(M)#_completers[1,_completer_num]:#$_completer}:}:"
+
+  if zstyle -t "$ctxt" prefer-ignored && (( $compstate[alternate_nmatches] )); then
+    ret=0
+    break;
+  fi
+
+  zstyle -a "$ctxt" matcher-list _matchers ||
       _matchers=( '' )
 
   _matcher_num=1
@@ -82,7 +89,6 @@ done
 
 if zstyle -s ":completion:${curcontext}:" single-ignored tmp &&
    [[ $compstate[old_list] != shown &&
-      $compstate[nmatches] = 0 &&
       $compstate[alternate_nmatches] = 1 ]]; then
   case "$tmp" in
   show) compstate[insert]='' compstate[list]='list force' tmp='' ;;
@@ -99,7 +105,8 @@ fi
 
 if [[ -n "$tmp" || $compstate[old_list] = keep ||
       $compstate[nmatches]+$compstate[alternate_nmatches] -gt 1 ]]; then
-  [[ _last_nmatches -ge 0 && _last_nmatches -ne compstate[nmatches] ]] &&
+  [[ _last_nmatches -ge 0 &&
+     _last_nmatches -ne $compstate[nmatches]+$compstate[alternate_nmatches ]] &&
       _menu_style=( "$_last_menu_style[@]" "$_menu_style[@]" )
 
   if [[ "$compstate[insert]" = "$_saved_insert" ]]; then
diff --git a/Completion/Core/_setup b/Completion/Core/_setup
index 408b5abfe..5d63b97ce 100644
--- a/Completion/Core/_setup
+++ b/Completion/Core/_setup
@@ -62,7 +62,7 @@ fi
     _menu_style=( "$_last_menu_style[@]" "$_menu_style[@]" )
 
 if zstyle -a ":completion:${curcontext}:$1" menu val; then
-  _last_nmatches="$nm"
+  _last_nmatches=$(( $nm + $compstate[alternate_nmatches] ))
   _last_menu_style=( "$val[@]" )
 else
   _last_nmatches=-1