48338: _git: Support case-insensitive path matching

This commit is contained in:
dana 2021-04-10 15:54:26 -05:00
parent 283d2f3c27
commit 7269bc1ac4
2 changed files with 13 additions and 3 deletions

View file

@ -1,3 +1,8 @@
2021-04-10 dana <dana@dana.is>
* 48338: Completion/Unix/Command/_git: Support case-insensitive
path matching
2021-04-09 Peter Stephenson <p.w.stephenson@ntlworld.com>
* 48432 (plus test change): Src/Modules/zutil.c,

View file

@ -7155,11 +7155,16 @@ __git_files () {
local pref=${(Q)${~PREFIX}}
[[ $pref[1] == '/' ]] || pref=$gittoplevel$gitprefix$pref
# First allow ls-files to pattern-match in case of remote repository
files=(${(0)"$(_call_program files git ls-files -z --exclude-standard ${(q)opts} -- ${(q)${pref:+$pref\*}:-.} 2>/dev/null)"})
# First allow ls-files to pattern-match in case of remote repository. Use the
# icase pathspec magic word to ensure that we support case-insensitive path
# completion for users with the appropriate matcher configuration
files=(${(0)"$(_call_program files git ls-files -z --exclude-standard ${(q)opts} -- ${(q)${pref:+:\(icase\)$pref\*}:-.} 2>/dev/null)"})
__git_command_successful $pipestatus || return
# If ls-files succeeded but returned nothing, try again with no pattern
# If ls-files succeeded but returned nothing, try again with no pattern. Note
# that ls-files defaults to the CWD if not given a path, so if the file we
# were trying to add is in an *adjacent* directory, this won't return anything
# helpful either
if [[ -z "$files" && -n "$pref" ]]; then
files=(${(0)"$(_call_program files git ls-files -z --exclude-standard ${(q)opts} -- 2>/dev/null)"})
__git_command_successful $pipestatus || return