Merge branch 'pb/complete-config'
The command line completion script (in contrib/) learned to complete configuration variable names better. * pb/complete-config: completion: add and use __git_compute_second_level_config_vars_for_section completion: add and use __git_compute_first_level_config_vars_for_section completion: complete 'submodule.*' config variables completion: add space after config variable names also in Bash 3
This commit is contained in:
@ -2660,6 +2660,31 @@ __git_compute_config_vars ()
|
||||
__git_config_vars="$(git help --config-for-completion)"
|
||||
}
|
||||
|
||||
__git_config_vars_all=
|
||||
__git_compute_config_vars_all ()
|
||||
{
|
||||
test -n "$__git_config_vars_all" ||
|
||||
__git_config_vars_all="$(git --no-pager help --config)"
|
||||
}
|
||||
|
||||
__git_compute_first_level_config_vars_for_section ()
|
||||
{
|
||||
local section="$1"
|
||||
__git_compute_config_vars
|
||||
local this_section="__git_first_level_config_vars_for_section_${section}"
|
||||
test -n "${!this_section}" ||
|
||||
printf -v "__git_first_level_config_vars_for_section_${section}" %s "$(echo "$__git_config_vars" | grep -E "^${section}\.[a-z]" | awk -F. '{print $2}')"
|
||||
}
|
||||
|
||||
__git_compute_second_level_config_vars_for_section ()
|
||||
{
|
||||
local section="$1"
|
||||
__git_compute_config_vars_all
|
||||
local this_section="__git_second_level_config_vars_for_section_${section}"
|
||||
test -n "${!this_section}" ||
|
||||
printf -v "__git_second_level_config_vars_for_section_${section}" %s "$(echo "$__git_config_vars_all" | grep -E "^${section}\.<" | awk -F. '{print $3}')"
|
||||
}
|
||||
|
||||
__git_config_sections=
|
||||
__git_compute_config_sections ()
|
||||
{
|
||||
@ -2804,73 +2829,50 @@ __git_complete_config_variable_name ()
|
||||
done
|
||||
|
||||
case "$cur_" in
|
||||
branch.*.*)
|
||||
branch.*.*|guitool.*.*|difftool.*.*|man.*.*|mergetool.*.*|remote.*.*|submodule.*.*|url.*.*)
|
||||
local pfx="${cur_%.*}."
|
||||
cur_="${cur_##*.}"
|
||||
__gitcomp "remote pushRemote merge mergeOptions rebase" "$pfx" "$cur_" "$sfx"
|
||||
local section="${pfx%.*.}"
|
||||
__git_compute_second_level_config_vars_for_section "${section}"
|
||||
local this_section="__git_second_level_config_vars_for_section_${section}"
|
||||
__gitcomp "${!this_section}" "$pfx" "$cur_" "$sfx"
|
||||
return
|
||||
;;
|
||||
branch.*)
|
||||
local pfx="${cur_%.*}."
|
||||
cur_="${cur_#*.}"
|
||||
local section="${pfx%.}"
|
||||
__gitcomp_direct "$(__git_heads "$pfx" "$cur_" ".")"
|
||||
__gitcomp_nl_append $'autoSetupMerge\nautoSetupRebase\n' "$pfx" "$cur_" "${sfx- }"
|
||||
return
|
||||
;;
|
||||
guitool.*.*)
|
||||
local pfx="${cur_%.*}."
|
||||
cur_="${cur_##*.}"
|
||||
__gitcomp "
|
||||
argPrompt cmd confirm needsFile noConsole noRescan
|
||||
prompt revPrompt revUnmerged title
|
||||
" "$pfx" "$cur_" "$sfx"
|
||||
return
|
||||
;;
|
||||
difftool.*.*)
|
||||
local pfx="${cur_%.*}."
|
||||
cur_="${cur_##*.}"
|
||||
__gitcomp "cmd path" "$pfx" "$cur_" "$sfx"
|
||||
return
|
||||
;;
|
||||
man.*.*)
|
||||
local pfx="${cur_%.*}."
|
||||
cur_="${cur_##*.}"
|
||||
__gitcomp "cmd path" "$pfx" "$cur_" "$sfx"
|
||||
return
|
||||
;;
|
||||
mergetool.*.*)
|
||||
local pfx="${cur_%.*}."
|
||||
cur_="${cur_##*.}"
|
||||
__gitcomp "cmd path trustExitCode" "$pfx" "$cur_" "$sfx"
|
||||
__git_compute_first_level_config_vars_for_section "${section}"
|
||||
local this_section="__git_first_level_config_vars_for_section_${section}"
|
||||
__gitcomp_nl_append "${!this_section}" "$pfx" "$cur_" "${sfx:- }"
|
||||
return
|
||||
;;
|
||||
pager.*)
|
||||
local pfx="${cur_%.*}."
|
||||
cur_="${cur_#*.}"
|
||||
__git_compute_all_commands
|
||||
__gitcomp_nl "$__git_all_commands" "$pfx" "$cur_" "${sfx- }"
|
||||
return
|
||||
;;
|
||||
remote.*.*)
|
||||
local pfx="${cur_%.*}."
|
||||
cur_="${cur_##*.}"
|
||||
__gitcomp "
|
||||
url proxy fetch push mirror skipDefaultUpdate
|
||||
receivepack uploadpack tagOpt pushurl
|
||||
" "$pfx" "$cur_" "$sfx"
|
||||
__gitcomp_nl "$__git_all_commands" "$pfx" "$cur_" "${sfx:- }"
|
||||
return
|
||||
;;
|
||||
remote.*)
|
||||
local pfx="${cur_%.*}."
|
||||
cur_="${cur_#*.}"
|
||||
local section="${pfx%.}"
|
||||
__gitcomp_nl "$(__git_remotes)" "$pfx" "$cur_" "."
|
||||
__gitcomp_nl_append "pushDefault" "$pfx" "$cur_" "${sfx- }"
|
||||
__git_compute_first_level_config_vars_for_section "${section}"
|
||||
local this_section="__git_first_level_config_vars_for_section_${section}"
|
||||
__gitcomp_nl_append "${!this_section}" "$pfx" "$cur_" "${sfx:- }"
|
||||
return
|
||||
;;
|
||||
url.*.*)
|
||||
submodule.*)
|
||||
local pfx="${cur_%.*}."
|
||||
cur_="${cur_##*.}"
|
||||
__gitcomp "insteadOf pushInsteadOf" "$pfx" "$cur_" "$sfx"
|
||||
cur_="${cur_#*.}"
|
||||
local section="${pfx%.}"
|
||||
__gitcomp_nl "$(__git config -f "$(__git rev-parse --show-toplevel)/.gitmodules" --get-regexp 'submodule.*.path' | awk -F. '{print $2}')" "$pfx" "$cur_" "."
|
||||
__git_compute_first_level_config_vars_for_section "${section}"
|
||||
local this_section="__git_first_level_config_vars_for_section_${section}"
|
||||
__gitcomp_nl_append "${!this_section}" "$pfx" "$cur_" "${sfx:- }"
|
||||
return
|
||||
;;
|
||||
*.*)
|
||||
|
Reference in New Issue
Block a user