Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: something strange with delete-char-or-list
- X-seq: zsh-workers 7135
- From: Sven Wischnowsky <wischnow@xxxxxxxxxxxxxxxxxxxxxxx>
- To: zsh-workers@xxxxxxxxxxxxxx
- Subject: Re: something strange with delete-char-or-list
- Date: Wed, 14 Jul 1999 13:46:32 +0200 (MET DST)
- In-reply-to: "Andrej Borsenkow"'s message of Wed, 14 Jul 1999 14:54:28 +0400
- Mailing-list: contact zsh-workers-help@xxxxxxxxxxxxxx; run by ezmlm
Andrej Borsenkow wrote:
> bor@itsrm2:~%> l /a/p/u/z/\*<TAB><TAB>
> bor@itsrm2:~%> l /archive/pub/unix/zip/\*
> zip/ zmodem/ zsh/
>
> now I press a-a-i-n-h and get
>
> bor@itsrm2:~%> l /archive/pub/unix/zip/unzip532.tar.gz
> unzip532.tar.gz zcrypt27.zip zip22.tar.gz
> unzip540.tar.gz zcrypt28.zip
>
> That is, it is no more possible to distinguish between quoted and unquoted
> string. I can no more complete literal '*' :-)
Urgh. I hope this gets it finally right, but with completion and
quoting you can't be sure. This adds several -q's and :q's to
_path_files to add parts from globbing and from the line
differently. It should also fix the path_expand behaviour.
Bye
Sven
diff -u os/Zle/zle_tricky.c Src/Zle/zle_tricky.c
--- os/Zle/zle_tricky.c Wed Jul 14 10:41:25 1999
+++ Src/Zle/zle_tricky.c Wed Jul 14 13:15:53 1999
@@ -4597,22 +4597,22 @@
zsfree(compprefix);
zsfree(compsuffix);
if (unset(COMPLETEINWORD)) {
- /* Maybe we'll have to do quoting here some time. */
- tmp = dupstring(s);
+ tmp = quotename(s, NULL);
untokenize(tmp);
compprefix = ztrdup(tmp);
compsuffix = ztrdup("");
} else {
char *ss, sav;
- tmp = dupstring(s);
- ss = tmp + offs;
+ ss = s + offs;
sav = *ss;
*ss = '\0';
+ tmp = quotename(s, NULL);
untokenize(tmp);
compprefix = ztrdup(tmp);
*ss = sav;
+ ss = quotename(ss, NULL);
untokenize(ss);
compsuffix = ztrdup(ss);
}
diff -u oc/Core/_path_files Completion/Core/_path_files
--- oc/Core/_path_files Tue Jul 13 10:58:39 1999
+++ Completion/Core/_path_files Wed Jul 14 13:38:03 1999
@@ -244,7 +244,7 @@
if [[ "$tmp2[1]" = */* ]]; then
tmp2=( "${(@)tmp2#${prepath}${realpath}}" )
if [[ "$tmp2[1]" = */* ]]; then
- exppaths=( "$exppaths[@]" ${^tmp2:h}/${tpre}${tsuf} )
+ exppaths=( "$exppaths[@]" ${^tmp2:h:q}/${tpre}${tsuf} )
else
exppaths=( "$exppaths[@]" ${tpre}${tsuf} )
fi
@@ -310,33 +310,33 @@
if [[ -n $menu ]]; then
[[ -n "$compconfig[path_cursor]" ]] && compstate[to_end]=''
if [[ "$tmp3" = */* ]]; then
- compadd -Uf -p "$linepath$testpath" -s "/${tmp3#*/}" \
+ compadd -QUf -p "$linepath${testpath:q}" -s "/${tmp3#*/}" \
-W "$prepath$realpath$testpath" "$ignore[@]" \
"$addpfx[@]" "$addsfx[@]" "$remsfx[@]" -M 'r:|/=* r:|=*' \
"$group[@]" "$expl[@]" -i "$IPREFIX" -I "$ISUFFIX" \
- - "${(@)tmp1%%/*}"
+ - "${(@)${(@)tmp1%%/*}:q}"
else
- compadd -Uf -p "$linepath$testpath" \
+ compadd -QUf -p "$linepath${testpath:q}" \
-W "$prepath$realpath$testpath" "$ignore[@]" \
"$addpfx[@]" "$addsfx[@]" "$remsfx[@]" \
"$group[@]" "$expl[@]" -i "$IPREFIX" -I "$ISUFFIX" \
- - "$tmp1[@]"
+ - "${(@)tmp1:q}"
fi
else
if [[ "$tmp3" = */* ]]; then
for i in "$tmp1[@]"; do
- compadd -Uf -p "$linepath$testpath" -s "/${i#*/}" \
+ compadd -QUf -p "$linepath${testpath:q}" -s "/${${i#*/}:q}" \
-W "$prepath$realpath$testpath" "$ignore[@]" \
"$addpfx[@]" "$addsfx[@]" "$remsfx[@]" -M 'r:|/=* r:|=*' \
"$group[@]" "$expl[@]" -i "$IPREFIX" -I "$ISUFFIX" \
- - "${i%%/*}"
+ - "${${i%%/*}:q}"
done
else
- compadd -Uf -p "$linepath$testpath" \
+ compadd -QUf -p "$linepath${testpath:q}" \
-W "$prepath$realpath$testpath" "$ignore[@]" \
"$addpfx[@]" "$addsfx[@]" "$remsfx[@]" \
"$group[@]" "$expl[@]" -i "$IPREFIX" -I "$ISUFFIX" \
- - "$tmp1[@]"
+ - "${(@)tmp1:q}"
fi
fi
tmp4=-
@@ -361,11 +361,11 @@
done
if [[ -z "$tmp4" ]]; then
- compadd -Uf -p "$linepath$testpath" \
+ compadd -QUf -p "$linepath${testpath:q}" \
-W "$prepath$realpath$testpath" "$ignore[@]" \
"$addpfx[@]" "$addsfx[@]" "$remsfx[@]" \
"$group[@]" "$expl[@]" -i "$IPREFIX" -I "$ISUFFIX" \
- - "$tmp1[@]"
+ - "${(@)tmp1:q}"
fi
done
@@ -376,9 +376,9 @@
exppaths=( "${(@)exppaths:#$orig}" )
if [[ -n "$compconfig[path_expand]" &&
- $#exppaths -eq 1 && nm -eq compstate[nmatches] ]]; then
+ $#exppaths -gt 0 && nm -eq compstate[nmatches] ]]; then
compadd -QU -S '' "$group[@]" "$expl[@]" -i "$IPREFIX" -I "$ISUFFIX" \
- -M 'r:|/=* r:|=*' -p "$linepath" - "${(@)exppaths}"
+ -M 'r:|/=* r:|=*' -p "$linepath" - "$exppaths[@]"
fi
[[ nm -ne compstate[nmatches] ]]
--
Sven Wischnowsky wischnow@xxxxxxxxxxxxxxxxxxxxxxx
Messages sorted by:
Reverse Date,
Date,
Thread,
Author