]> git.ipfire.org Git - thirdparty/git.git/commitdiff
completion: zsh: update slave script locations
authorFelipe Contreras <felipe.contreras@gmail.com>
Wed, 28 Oct 2020 02:06:49 +0000 (20:06 -0600)
committerJunio C Hamano <gitster@pobox.com>
Wed, 28 Oct 2020 21:30:59 +0000 (14:30 -0700)
Update the default locations of typical system bash-completion,
including the default bash-completion location for user scripts, and the
recommended way to find the system location (with pkg-config).

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
contrib/completion/git-completion.zsh

index 5d6740c6fffc678f151567c2ab191c6cf89de92d..ccf384ba35e6ef42822b50291598b5c418c1dce0 100644 (file)
@@ -13,7 +13,7 @@
 #  fpath=(~/.zsh $fpath)
 #
 # You need git's bash completion script installed. By default bash-completion's
-# location will be used (e.g. /usr/share/bash-completion/completions/git).
+# location will be used (e.g. pkg-config --variable=completionsdir bash-completion).
 #
 # If your bash completion script is somewhere else, you can specify the
 # location in your ~/.zshrc:
@@ -33,12 +33,16 @@ zstyle -T ':completion:*:*:git:*' tag-order && \
 zstyle -s ":completion:*:*:git:*" script script
 if [ -z "$script" ]; then
        local -a locations
-       local e
+       local e bash_completion
+
+       bash_completion=$(pkg-config --variable=completionsdir bash-completion 2>/dev/null) ||
+               bash_completion='/usr/share/bash-completion/completions/'
+
        locations=(
                "$(dirname ${funcsourcetrace[1]%:*})"/git-completion.bash
-               '/etc/bash_completion.d/git' # fedora, old debian
-               '/usr/share/bash-completion/completions/git' # arch, ubuntu, new debian
-               '/usr/share/bash-completion/git' # gentoo
+               "$HOME/.local/share/bash-completion/completions/git"
+               "$bash_completion/git"
+               '/etc/bash_completion.d/git' # old debian
                )
        for e in $locations; do
                test -f $e && script="$e" && break