Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: [PATCH] Quote components before using it is pattern



On Aug 21,  9:54am, Bart Schaefer wrote:
}
} As has come up elsewhere, the problem is that ${(q)...} is a bit too
} aggressive for the purpose to which it is being put.  We need to quote
} pattern characters in tmp1, but not other characters like spaces.

Or maybe we're just being too clever trying to construct an (...|...)
pattern and the right thing is just to not quote anything:

Index: Completion/Base/Utility/_multi_parts
===================================================================
diff -c -r1.6 _multi_parts
--- _multi_parts	4 Nov 2008 04:47:52 -0000	1.6
+++ _multi_parts	21 Aug 2010 17:09:09 -0000
@@ -127,7 +127,8 @@
 	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 @@
 	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



Messages sorted by: Reverse Date, Date, Thread, Author