Skip to content

Commit

Permalink
bash completion: complete variable names for "git config" with options
Browse files Browse the repository at this point in the history
This makes it easier for users to get and unset their configuration
variables without having to open documentation or dig through their
configuration file.

__git_config_get_set_variables() retrieves the set configuration
variables from the appropriate configuration file. For example, if
the user has previously specified --global only the global variables
are returned. The same applies for --system, and --file. If no
location has been specified, all set variables are returned.

Signed-off-by: Stephen Boyd <bebarino@gmail.com>
Acked-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Stephen Boyd authored and Junio C Hamano committed May 13, 2009
1 parent 4bf1f68 commit 0065236
Showing 1 changed file with 33 additions and 0 deletions.
33 changes: 33 additions & 0 deletions contrib/completion/git-completion.bash
Original file line number Diff line number Diff line change
Expand Up @@ -1322,6 +1322,35 @@ _git_send_email ()
COMPREPLY=()
}

__git_config_get_set_variables ()
{
local prevword word config_file= c=$COMP_CWORD
while [ $c -gt 1 ]; do
word="${COMP_WORDS[c]}"
case "$word" in
--global|--system|--file=*)
config_file="$word"
break
;;
-f|--file)
config_file="$word $prevword"
break
;;
esac
prevword=$word
c=$((--c))
done

for i in $(git --git-dir="$(__gitdir)" config $config_file --list \
2>/dev/null); do
case "$i" in
*.*)
echo "${i/=*/}"
;;
esac
done
}

_git_config ()
{
local cur="${COMP_WORDS[COMP_CWORD]}"
Expand Down Expand Up @@ -1388,6 +1417,10 @@ _git_config ()
__gitcomp "$__git_send_email_suppresscc_options"
return
;;
--get|--get-all|--unset|--unset-all)
__gitcomp "$(__git_config_get_set_variables)"
return
;;
*.*)
COMPREPLY=()
return
Expand Down

0 comments on commit 0065236

Please sign in to comment.