From 7269bc1ac46852f8624b99211500276c758eb46e Mon Sep 17 00:00:00 2001 From: dana Date: Sat, 10 Apr 2021 15:54:26 -0500 Subject: 48338: _git: Support case-insensitive path matching --- ChangeLog | 5 +++++ Completion/Unix/Command/_git | 11 ++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index f894cc2fe..a21b405c8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2021-04-10 dana + + * 48338: Completion/Unix/Command/_git: Support case-insensitive + path matching + 2021-04-09 Peter Stephenson * 48432 (plus test change): Src/Modules/zutil.c, diff --git a/Completion/Unix/Command/_git b/Completion/Unix/Command/_git index ced89b501..0267acfa8 100644 --- a/Completion/Unix/Command/_git +++ b/Completion/Unix/Command/_git @@ -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 -- cgit 1.4.1