On Mon, Jan 29, 2024 at 01:28:01PM +0000, Philippe Blain via GitGitGadget wrote: > From: Philippe Blain <levraiphilippeblain@xxxxxxxxx> [snip] > diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash > index 2934ceb7637..0e8fd63bfdb 100644 > --- a/contrib/completion/git-completion.bash > +++ b/contrib/completion/git-completion.bash > @@ -2605,6 +2612,15 @@ __git_compute_first_level_config_vars_for_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 () > +{ > + section="$1" This should be `local section`, as well. > + __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 () > { > @@ -2749,10 +2765,13 @@ __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 > ;; Nice. [snip] > diff --git a/t/t9902-completion.sh b/t/t9902-completion.sh > index f28d8f531b7..24ff786b273 100755 > --- a/t/t9902-completion.sh > +++ b/t/t9902-completion.sh > @@ -2593,6 +2593,16 @@ test_expect_success 'git config - variable name - __git_compute_first_level_conf > submodule.recurse Z > EOF > ' Missing a newline. > +test_expect_success 'git config - variable name - __git_compute_second_level_config_vars_for_section' ' > + test_completion "git config branch.main." <<-\EOF > + branch.main.description Z > + branch.main.remote Z > + branch.main.pushRemote Z > + branch.main.merge Z > + branch.main.mergeOptions Z > + branch.main.rebase Z > + EOF > +' Patrick
Attachment:
signature.asc
Description: PGP signature