about summary refs log tree commit diff
path: root/Completion/Unix
diff options
context:
space:
mode:
authorClint Adams <clint@users.sourceforge.net>2002-09-19 15:22:17 +0000
committerClint Adams <clint@users.sourceforge.net>2002-09-19 15:22:17 +0000
commit9a8a7cf3acdbe3bdc8efdc5b91836a472b894bf9 (patch)
tree96a13faff024305cefeaa29c371eef60a621f50e /Completion/Unix
parent2421fe859969171914aac4e9280b96db1b173763 (diff)
downloadzsh-9a8a7cf3acdbe3bdc8efdc5b91836a472b894bf9.tar.gz
zsh-9a8a7cf3acdbe3bdc8efdc5b91836a472b894bf9.tar.xz
zsh-9a8a7cf3acdbe3bdc8efdc5b91836a472b894bf9.zip
17252: Sven: Completion/Unix/Type/_path_files: fix for use of (z) parameter
modifier; the first word in the parameter is parsed like the first word on
a command line, treating parens specially
Diffstat (limited to 'Completion/Unix')
-rw-r--r--Completion/Unix/Type/_path_files8
1 files changed, 5 insertions, 3 deletions
diff --git a/Completion/Unix/Type/_path_files b/Completion/Unix/Type/_path_files
index 5e36a4c2a..664b0d85f 100644
--- a/Completion/Unix/Type/_path_files
+++ b/Completion/Unix/Type/_path_files
@@ -23,9 +23,11 @@ sopt="-${(@j::M)${(@)tmp1#-}#?}"
 (( $tmp1[(I)-[/g]*] )) && haspats=yes
 (( $tmp1[(I)-g*] )) && gopt=yes
 if (( $tmp1[(I)-/] )); then
-  pats=( '*(-/)' ${(z)${(M)tmp1:#-g*}#-g} )
+  pats="${(@)${(@M)tmp1:#-g*}#-g}"
+  pats=( '*(-/)' ${${(z):-x $pats}[2,-1]} )
 else
-  pats=( "${(@z)${(@M)tmp1:#-g*}#-g}" )
+  pats="${(@)${(@M)tmp1:#-g*}#-g}"
+  pats=( ${${(z):-x $pats}[2,-1]} )
 fi
 pats=( "${(@)pats:# #}" )
 
@@ -332,7 +334,7 @@ for prepath in "$prepaths[@]"; do
     else
       compfiles -p$cfopt tmp1 accex "$skipped" "$_matcher $matcher[2]" '' fake "$pats[@]"
     fi
-    tmp1=( $~tmp1 )
+    tmp1=( $~tmp1 ) 2> /dev/null
 
     if [[ -n "$PREFIX$SUFFIX" ]]; then
       # See which of them match what's on the line.