Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: PATCH: Problem with _expand, _path_files, and $(command)
- X-seq: zsh-workers 12156
- From: Sven Wischnowsky <wischnow@xxxxxxxxxxxxxxxxxxxxxxx>
- To: zsh-workers@xxxxxxxxxxxxxx
- Subject: Re: PATCH: Problem with _expand, _path_files, and $(command)
- Date: Tue, 4 Jul 2000 10:04:59 +0200 (MET DST)
- In-reply-to: "Bart Schaefer"'s message of Mon, 3 Jul 2000 17:30:03 +0000
- Mailing-list: contact zsh-workers-help@xxxxxxxxxxxxxx; run by ezmlm
Bart Schaefer wrote:
> On Jul 3, 11:01am, Sven Wischnowsky wrote:
> } Subject: Re: PATCH: Problem with _expand, _path_files, and $(command)
> }
> } > } > zagzig[88] echo $(exit 0)
> } > } > zagzig[88] echo \$\*\(exit\ 0Om\)
> }
> } Maybe just change the patterns in lines 120, 122, 166 and 168
> } from `(?*)' to `(*[^\$])'? (Haven't tried...)
>
> Not quite; I also had to change the patterns on lines 153 and 154.
>
> zagzig[95] echo $(exit 0)
> No matches for `file' or `corrections'
Is the eval in line 324 still needed?
I found another one: completion after something like `../$[4+]/'
reported an error because it's a math error and math expressions are
parsed later (after paramsubst() has returned).
Blah. Very ugly. For now I had to add some $(print...)s, does anyone
see a better solution?
Bye
Sven
Index: Completion/Core/_expand
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Core/_expand,v
retrieving revision 1.24
diff -u -r1.24 _expand
--- Completion/Core/_expand 2000/07/02 17:21:54 1.24
+++ Completion/Core/_expand 2000/07/04 08:04:22
@@ -61,9 +61,9 @@
zstyle -T ":completion:${curcontext}:" substitute; then
[[ ! -o ignorebraces && "${#${exp}//[^\{]}" = "${#${exp}//[^\}]}" ]] &&
eval exp\=\( ${${(q)exp}:gs/\\{/\{/:gs/\\}/\}/} \)
- exp=( ${${(e)exp//\\[
+ exp=( $(print -r ${${(e)exp//\\[
]/ }//(#b)([
-])/\\$match[1]} ) 2>/dev/null
+])/\\$match[1]}) ) 2>/dev/null
else
exp=( ${exp:s/\\\$/\$} )
fi
@@ -95,7 +95,7 @@
zstyle -s ":completion:${curcontext}:" keep-prefix tmp || tmp=changed
if [[ "$word" = [\~\$]*/* && "$tmp" = (yes|true|on|1|changed) ]]; then
- epre=( ${(e)~${word%%/*}} )
+ epre=( $(print -r ${(e)~${word%%/*}}) ) 2>/dev/null
if [[ -n "$epre" && $#epre -eq 1 ]]; then
opre="${word%%/*}"
pre="$epre[1]"
Index: Completion/Core/_path_files
===================================================================
RCS file: /cvsroot/zsh/zsh/Completion/Core/_path_files,v
retrieving revision 1.24
diff -u -r1.24 _path_files
--- Completion/Core/_path_files 2000/07/03 17:45:47 1.24
+++ Completion/Core/_path_files 2000/07/04 08:04:22
@@ -247,10 +247,9 @@
# after the first slash after the parameter expansion.
# This fails for things like `f/$foo/b/<TAB>' where the first `f' is
# meant as a partial path.
-
linepath="${(M)pre##*\$[^/]##/}"
- realpath=${(e)~linepath}
- [[ "$realpath" = "$linepath" ]] && return 1
+ realpath=$(print -r ${(e)~linepath}) 2>/dev/null
+ [[ -z "$realpath" || "$realpath" = "$linepath" ]] && return 1
pre="${pre#${linepath}}"
i="${#linepath//[^\\/]}"
orig="${orig[1,(in:i:)/][1,-2]}"
--
Sven Wischnowsky wischnow@xxxxxxxxxxxxxxxxxxxxxxx
Messages sorted by:
Reverse Date,
Date,
Thread,
Author