1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-01-01 05:16:05 +01:00

40024: Update _path_files since quoting requirements changed in 39412

This commit is contained in:
Mikael Magnusson 2016-12-01 03:40:17 +01:00
parent e8699613bc
commit 989f5e590c
2 changed files with 8 additions and 4 deletions

View file

@ -1,3 +1,9 @@
2016-12-01 Mikael Magnusson <mikachu@gmail.com>
* 40024: Completion/Unix/Type/_path_files: Update _path_files
since quoting requirements changed in 39412, this case only
triggers when accept-exact-dirs is set.
2016-12-01 Jun-ichi Takimoto <takimoto-j@kba.biglobe.ne.jp>
* 40050: Src/compat.c: prepend /**/ to global functions and #ifdefs

View file

@ -377,11 +377,9 @@ for prepath in "$prepaths[@]"; do
# on, we need to remove quotes from everything that's not a pattern
# character, because the code that does the file generation only
# strips quotes from pattern characters (you know better than
# to ask why). Because we need to test for a real directory,
# however, for tmp2 we unquote everything.
# to ask why).
tmp1=${match[1]}
tpre=${match[2]}
tmp2=${(Q)tmp1}
tmp1=${tmp1//(#b)\\(?)/$match[1]}
tpre=${tpre//(#b)\\([^\\\]\[\^\~\(\)\#\*\?])/$match[1]}
# Theory: donepath needs the quoting of special characters
@ -390,7 +388,7 @@ for prepath in "$prepaths[@]"; do
# doing something a bit different.
tmp3=${donepath//(#b)\\(?)/$match[1]}
while true; do
if [[ -z $path_completion || -d $prepath$realpath$tmp3$tmp2 ]]; then
if [[ -z $path_completion || -d $prepath$realpath$tmp3$tmp1 ]]; then
tmp3=$tmp3$tmp1/
# Now put donepath back the way it should be. (I think.)
donepath=${tmp3//(#b)([\\\]\[\^\~\(\)\#\*\?])/\\$match[1]}