summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2009-08-17 21:52:10 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2009-08-17 21:52:10 +0000
commit58aefcada3e25ea8fe7b8dcbf820354008f7e591 (patch)
tree8ba99eae6fdb666a58602da6a29d5a736f0b7aff
parentc81ba09d8f3a44570267e96801584adf298fb9e3 (diff)
downloadzsh-58aefcada3e25ea8fe7b8dcbf820354008f7e591.tar.gz
zsh-58aefcada3e25ea8fe7b8dcbf820354008f7e591.zip
27219: _files -F <array> wasn't correctly handled
-rw-r--r--ChangeLog5
-rw-r--r--Completion/Unix/Type/_files12
2 files changed, 12 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index c5cc4d20c..9717f6edd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
2009-08-17 Peter Stephenson <p.w.stephenson@ntlworld.com>
+ * 27219: Completion/Unix/Type/_files: "_files -F <array>" wasnʼt
+ correctly handled, which broke duplicate filtering in _rm.
+
* 27218: Src/Zle/computil.c: don't unquote command line
to generate "line" in _arguments since the caller can't
tell what was there before.
@@ -12091,5 +12094,5 @@
*****************************************************
* This is used by the shell to define $ZSH_PATCHLEVEL
-* $Revision: 1.4762 $
+* $Revision: 1.4763 $
*****************************************************
diff --git a/Completion/Unix/Type/_files b/Completion/Unix/Type/_files
index 4615a60e7..1969a5feb 100644
--- a/Completion/Unix/Type/_files
+++ b/Completion/Unix/Type/_files
@@ -1,7 +1,7 @@
#compdef -redirect-,-default-,-default-
local opts tmp glob pat pats expl tag i def descr end ign ret=1 match tried
-local type sdef
+local type sdef ignvars ignvar
zparseopts -a opts \
'/=tmp' 'f=tmp' 'g+:-=tmp' q n 1 2 P: S: r: R: W: X+: M+: F: J+: V+:
@@ -18,14 +18,18 @@ if (( $tmp[(I)-g*] )); then
fi
tmp=$opts[(I)-F]
if (( tmp )); then
- ign=( $=opts[tmp+1] )
- if [[ $ign = _comp_ignore ]]; then
+ ignvars=($=opts[tmp+1])
+ if [[ $ignvars = _comp_ignore ]]; then
ign=( $_comp_ignore )
else
+ ign=()
+ for ignvar in $ignvars; do
+ ign+=(${(P)ignvar})
+ done
opts[tmp+1]=_comp_ignore
fi
else
- ign=
+ ign=()
fi
if zstyle -a ":completion:${curcontext}:" file-patterns tmp; then