completion: add a helper function to get config variables
Currently there are a few completion functions that perform similar 'git config' queries and filtering to get config variable names: the completion of pretty aliases, aliases, and remote groups for 'git remote update'. Unify those 'git config' queries in a helper function to eliminate code duplication. Though the helper functions to get pretty aliases and alieses are reduced to mere one-liner wrappers around the newly added function, keep these helpers still, because users' completion functions out there might depend on them. And they keep their callers a tad easier to read, too. Add tests for the pretty alias and alias helper to show that they work as before; not for the remote groups query, though, because that's not extracted into a helper function and it's not worth the effort to do so for a sole callsite. Signed-off-by: SZEDER Gábor <szeder@ira.uka.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
c518059b26
commit
e8f9e42829
@ -739,30 +739,29 @@ __git_compute_porcelain_commands ()
|
||||
__git_porcelain_commands=$(__git_list_porcelain_commands)
|
||||
}
|
||||
|
||||
__git_pretty_aliases ()
|
||||
# Lists all set config variables starting with the given section prefix,
|
||||
# with the prefix removed.
|
||||
__git_get_config_variables ()
|
||||
{
|
||||
local i IFS=$'\n'
|
||||
for i in $(git --git-dir="$(__gitdir)" config --get-regexp "pretty\..*" 2>/dev/null); do
|
||||
local section="$1" i IFS=$'\n'
|
||||
for i in $(git --git-dir="$(__gitdir)" config --get-regexp "$section\..*" 2>/dev/null); do
|
||||
case "$i" in
|
||||
pretty.*)
|
||||
i="${i#pretty.}"
|
||||
$section.*)
|
||||
i="${i#$section.}"
|
||||
echo "${i/ */}"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
__git_pretty_aliases ()
|
||||
{
|
||||
__git_get_config_variables "pretty"
|
||||
}
|
||||
|
||||
__git_aliases ()
|
||||
{
|
||||
local i IFS=$'\n'
|
||||
for i in $(git --git-dir="$(__gitdir)" config --get-regexp "alias\..*" 2>/dev/null); do
|
||||
case "$i" in
|
||||
alias.*)
|
||||
i="${i#alias.}"
|
||||
echo "${i/ */}"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
__git_get_config_variables "alias"
|
||||
}
|
||||
|
||||
# __git_aliased_command requires 1 argument
|
||||
@ -2259,12 +2258,7 @@ _git_remote ()
|
||||
__git_complete_remote_or_refspec
|
||||
;;
|
||||
update)
|
||||
local i c='' IFS=$'\n'
|
||||
for i in $(git --git-dir="$(__gitdir)" config --get-regexp "remotes\..*" 2>/dev/null); do
|
||||
i="${i#remotes.}"
|
||||
c="$c ${i/ */}"
|
||||
done
|
||||
__gitcomp "$c"
|
||||
__gitcomp "$(__git_get_config_variables "remotes")"
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
|
Reference in New Issue
Block a user