about summary refs log tree commit diff
path: root/Completion
diff options
context:
space:
mode:
authorOliver Kiddle <okiddle@yahoo.co.uk>2020-06-11 22:31:44 +0200
committerOliver Kiddle <okiddle@yahoo.co.uk>2020-06-11 22:31:44 +0200
commitcce88bdb0c13e7533f85e4fc9e9c2530994eb0f0 (patch)
tree7771a06850b3420f27d4167b5c795bc9ed124725 /Completion
parentc5f12fb732cc9ee9f151dd3357cf5f3f4bb55a48 (diff)
downloadzsh-cce88bdb0c13e7533f85e4fc9e9c2530994eb0f0.tar.gz
zsh-cce88bdb0c13e7533f85e4fc9e9c2530994eb0f0.tar.xz
zsh-cce88bdb0c13e7533f85e4fc9e9c2530994eb0f0.zip
users/24892: fix local declaration with recursive-files style and complete it for zstyle
Diffstat (limited to 'Completion')
-rw-r--r--Completion/Unix/Type/_files2
-rw-r--r--Completion/Zsh/Command/_zstyle10
2 files changed, 7 insertions, 5 deletions
diff --git a/Completion/Unix/Type/_files b/Completion/Unix/Type/_files
index 6adaa8154..4ddec1e12 100644
--- a/Completion/Unix/Type/_files
+++ b/Completion/Unix/Type/_files
@@ -1,6 +1,7 @@
 #compdef -redirect-,-default-,-default-
 
 local -a match mbegin mend
+local -a subtree
 local ret=1
 
 # Look for glob qualifiers. This is duplicated from _path_files because
@@ -110,7 +111,6 @@ for def in "$pats[@]"; do
           if _path_files -g "$pat" "$opts[@]" "$expl[@]"; then
 	    ret=0
 	  elif [[ $PREFIX$SUFFIX != */* ]] && zstyle -a ":completion:${curcontext}:$tag" recursive-files rfiles; then
-	    local subtree
 	    for rfile in $rfiles; do
 	      if [[ $PWD/ = ${~rfile} ]]; then
 		if [[ -z $subtree ]]; then
diff --git a/Completion/Zsh/Command/_zstyle b/Completion/Zsh/Command/_zstyle
index 07b60605f..e9a5d800c 100644
--- a/Completion/Zsh/Command/_zstyle
+++ b/Completion/Zsh/Command/_zstyle
@@ -100,6 +100,7 @@ styles=(
   preserve-prefix        c:preserve-prefix
   range                  c:
   recent-dirs-insert     c:recent-dirs-insert
+  recursive-files        c:
   regular                c:bool
   rehash		 c:bool
   remote-access		 c:bool
@@ -409,14 +410,15 @@ while (( $#state )); do
       ;;
 
     (function)
-      _wanted control-function expl 'control function' \
+      _wanted control-functions expl 'control function' \
           compadd predict-on all-matches
       ;;
 
     (functions)
-      _wanted comp-widget expl 'completion widget' \
-          compadd $suf - all-matches complete-debug complete-tag \
-	  correct-word expand-word expand-alias-word history-words
+      _wanted comp-widgets expl 'completion widget' \
+          compadd $suf -M 'r:|-=* r:|=*' - all-matches complete-debug complete-tag \
+	  correct-word expand-word expand-alias-word history-words \
+	  ${${${(M)${(f)"$(_call_program comp-widgets zle -l)"}:#*-C*}:#_*}/ -C*}
       ;;
 
     (user-host-port)