1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2024-12-27 15:55:06 +01:00

52910: Improve handling of **/ patterns

This commit is contained in:
Bart Schaefer 2024-05-24 19:24:23 -07:00
parent 7f196de9d7
commit 300ce96080
2 changed files with 5 additions and 3 deletions

View file

@ -1,5 +1,7 @@
2024-05-24 Bart Schaefer <schaefer@zsh.org>
* 52910: Functions/Misc/zmv: Improve handling of **/ patterns
* 52904: Completion/Unix/Command/_git: Improve quoting of paths
passed via _call_program to "git ls-files"

View file

@ -249,13 +249,13 @@ errs=()
(( ${#files} )) || errs=( "no files matched \`$fpat'" )
for f in $files; do
if [[ $pat = (#b)(*)\(\*\*##/\)(*) ]]; then
if [[ $pat = (#b)(*)(\(\*\*##/\)|\*\*##/)(*) ]]; then
# This looks like a recursive glob. This isn't good enough,
# because we should really enforce that $match[1] and $match[2]
# because we should really enforce that $match[1] and $match[3]
# don't match slashes unless they were explicitly given. But
# it's a start. It's fine for the classic case where (**/) is
# at the start of the pattern.
pat="$match[1](*/|)$match[2]"
pat="$match[1](*/|)$match[3]"
fi
[[ -e $f && $f = (#b)${~pat} ]] || continue
set -- "$match[@]"