git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v2 5/5] completion: add an use __git_compute_second_level_config_vars_for_section

From
Patrick Steinhardt <ps@pks.im>
Date
Feb 8, 2024, 07:42 UTC
Message-ID
<ZcSF4fv_a16Ziwyy@tanuki>
In-Reply-To
<a2e792c911e1b9fa77d27ec327f6a9dfe06d4de4.1706534882.git.gitgitgadget@gmail.com>
On Mon, Jan 29, 2024 at 01:28:01PM +0000, Philippe Blain via GitGitGadget wrote:
> From: Philippe Blain <levraiphilippeblain@gmail.com>
[snip]
Show 11 quoted lines
> 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.
Show 24 quoted lines
> +	__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]
Show 8 quoted lines
> 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.
Show 10 quoted lines
> +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
Previous: Philippe Blain via GitGitGadgetNext: Philippe Blain
Message 22 of 32 in “completion: remove hardcoded config variable names”
  1. 0/5 completion: remove hardcoded config variable namesPhilippe Blain via GitGitGadget, Jan 28, 2024
  2. 1/5 completion: add space after config variable names also in Bash 3Philippe Blain via GitGitGadget, Jan 28, 2024
  3. 2/5 completion: complete 'submodule.*' config variablesPhilippe Blain via GitGitGadget, Jan 28, 2024
  4. 3/5 completion: add and use __git_compute_first_level_config_vars_for_sectionPhilippe Blain via GitGitGadget, Jan 28, 2024
  5. 4/5 builtin/help: add --config-all-for-completionPhilippe Blain via GitGitGadget, Jan 28, 2024
  6. 5/5 completion: add an use __git_compute_second_level_config_vars_for_sectionPhilippe Blain via GitGitGadget, Jan 28, 2024
  7. 0/5 completion: remove hardcoded config variable namesPhilippe Blain via GitGitGadget, Jan 29, 2024
  8. 1/5 completion: add space after config variable names also in Bash 3Philippe Blain via GitGitGadget, Jan 29, 2024
  9. 2/5 completion: complete 'submodule.*' config variablesPhilippe Blain via GitGitGadget, Jan 29, 2024
  10. Patrick SteinhardtFeb 8, 2024
  11. Philippe BlainFeb 10, 2024
  12. 3/5 completion: add and use __git_compute_first_level_config_vars_for_sectionPhilippe Blain via GitGitGadget, Jan 29, 2024
  13. Patrick SteinhardtFeb 8, 2024
  14. Philippe BlainFeb 10, 2024
  15. Junio C HamanoFeb 10, 2024
  16. Philippe BlainFeb 10, 2024
  17. Junio C HamanoFeb 14, 2024
  18. 4/5 builtin/help: add --config-all-for-completionPhilippe Blain via GitGitGadget, Jan 29, 2024
  19. Patrick SteinhardtFeb 8, 2024
  20. Philippe BlainFeb 10, 2024
  21. 5/5 completion: add an use __git_compute_second_level_config_vars_for_sectionPhilippe Blain via GitGitGadget, Jan 29, 2024
  22. Patrick SteinhardtFeb 8, 2024
  23. Philippe BlainFeb 10, 2024
  24. Junio C HamanoFeb 7, 2024
  25. Patrick SteinhardtFeb 8, 2024
  26. 0/4 completion: remove hardcoded config variable namesPhilippe Blain via GitGitGadget, Feb 10, 2024
  27. 1/4 completion: add space after config variable names also in Bash 3Philippe Blain via GitGitGadget, Feb 10, 2024
  28. 2/4 completion: complete 'submodule.*' config variablesPhilippe Blain via GitGitGadget, Feb 10, 2024
  29. 3/4 completion: add and use __git_compute_first_level_config_vars_for_sectionPhilippe Blain via GitGitGadget, Feb 10, 2024
  30. 4/4 completion: add and use __git_compute_second_level_config_vars_for_sectionPhilippe Blain via GitGitGadget, Feb 10, 2024
  31. Patrick SteinhardtFeb 13, 2024
  32. Junio C HamanoFeb 13, 2024

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.