completions/git: Escape custom command names

This can be triggered by having a custom git command in e.g.
`/mnt/c/Program Files (x86)/foo/`.

Fixes #9738

(cherry picked from commit db5c9badad)
This commit is contained in:
Fabian Boehm 2023-04-18 20:40:14 +02:00
parent 8727a7f9e3
commit 7c8b309d79

View file

@ -2392,7 +2392,7 @@ for file in (path filter -xZ $PATH/git-* | path basename)
and continue
# Running `git foo` ends up running `git-foo`, so we need to ignore the `git-` here.
set -l cmd (string replace -r '^git-' '' -- $file)
set -l cmd (string replace -r '^git-' '' -- $file | string escape)
complete -c git -f -n "__fish_git_using_command $cmd" -a "(__fish_git_complete_custom_command $cmd)"
set -a __fish_git_custom_commands_completion $file
end