summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--Completion/Base/Utility/_multi_parts9
2 files changed, 14 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index ad8e07c3e..46fa559db 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2010-08-22  Barton E. Schaefer  <schaefer@zsh.org>
+
+	* 28186: Completion/Base/Utility/_multi_parts: replace a single
+	(...|...) pattern-match with a loop over the alternatives to
+	avoid issues with pattern-quoting each alternative.
+
 2010-08-21  Frank Terbeck  <ft@bewatermyfriend.org>
 
 	* Mikael Magnusson: 28181: Doc/Zsh/mod_zprof.yo: Remove a
@@ -13544,5 +13550,5 @@
 
 *****************************************************
 * This is used by the shell to define $ZSH_PATCHLEVEL
-* $Revision: 1.5060 $
+* $Revision: 1.5061 $
 *****************************************************
diff --git a/Completion/Base/Utility/_multi_parts b/Completion/Base/Utility/_multi_parts
index 6fb6cbdb1..3e2f36c9c 100644
--- a/Completion/Base/Utility/_multi_parts
+++ b/Completion/Base/Utility/_multi_parts
@@ -127,7 +127,8 @@ while true; do
 	return
       fi
     elif (( $#tmp1 )); then
-      local ret=1
+      local ret=1 tt
+      local -a mm
 
       # More than one match. First we get all strings that match the
       # rest from the line.
@@ -144,7 +145,11 @@ while true; do
 	SUFFIX="$suf"
       fi
 
-      matches=( "${(@M)matches:#(${(j:|:)~${(q)tmp1}})*}" )
+      for tt in $tmp1
+      do
+        mm+=( "${(@M)matches:#$tt*}" )
+      done
+      matches=( $mm )
 
       if ! zstyle -t ":completion:${curcontext}:" expand suffix ||
          [[ -n "$menu" || -z "$compstate[insert]" ]]; then