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

[PATCH 1/5] completion: add space after config variable names also in Bash 3

From
Philippe Blain via GitGitGadget <gitgitgadget@gmail.com>
Date
Jan 28, 2024, 20:02 UTC
Message-ID
<837d92a6c277015fc8633ca84557124465390548.1706472173.git.gitgitgadget@gmail.com>
In-Reply-To
<pull.1660.git.git.1706472173.gitgitgadget@gmail.com>
From: Philippe Blain <levraiphilippeblain@gmail.com>

In be6444d1ca (completion: bash: add correct suffix in variables, 2021-08-16), __git_complete_config_variable_name was changed to use "${sfx- }" instead of "$sfx" as the fourth argument of _gitcomp_nl and _gitcomp_nl_append, such that this argument evaluates to a space if sfx is unset. This was to ensure that e.g.

	git config branch.autoSetupMe[TAB]

correctly completes to 'branch.autoSetupMerge ' with the trailing space. This commits notes that the fix only works in Bash 4 because in Bash 3 the 'local sfx' construct at the beginning of __git_complete_config_variable_name creates an empty string.

Make the fix also work for Bash 3 by using the "unset or null' parameter expansion syntax ("${sfx:- }"), such that the parameter is also expanded to a space if it is set but null, as is the behaviour of 'local sfx' in Bash 3.

Signed-off-by: Philippe Blain <levraiphilippeblain@gmail.com>
---
 contrib/completion/git-completion.bash | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
index 6662db221df..159a4fd8add 100644
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -2750,7 +2750,7 @@ __git_complete_config_variable_name ()
 		local pfx="${cur_%.*}."
 		cur_="${cur_#*.}"
 		__gitcomp_direct "$(__git_heads "$pfx" "$cur_" ".")"
-		__gitcomp_nl_append $'autoSetupMerge\nautoSetupRebase\n' "$pfx" "$cur_" "${sfx- }"
+		__gitcomp_nl_append $'autoSetupMerge\nautoSetupRebase\n' "$pfx" "$cur_" "${sfx:- }"
 		return
 		;;
 	guitool.*.*)
@@ -2784,7 +2784,7 @@ __git_complete_config_variable_name ()
 		local pfx="${cur_%.*}."
 		cur_="${cur_#*.}"
 		__git_compute_all_commands
-		__gitcomp_nl "$__git_all_commands" "$pfx" "$cur_" "${sfx- }"
+		__gitcomp_nl "$__git_all_commands" "$pfx" "$cur_" "${sfx:- }"
 		return
 		;;
 	remote.*.*)
@@ -2800,7 +2800,7 @@ __git_complete_config_variable_name ()
 		local pfx="${cur_%.*}."
 		cur_="${cur_#*.}"
 		__gitcomp_nl "$(__git_remotes)" "$pfx" "$cur_" "."
-		__gitcomp_nl_append "pushDefault" "$pfx" "$cur_" "${sfx- }"
+		__gitcomp_nl_append "pushDefault" "$pfx" "$cur_" "${sfx:- }"
 		return
 		;;
 	url.*.*)
-- 
gitgitgadget
Previous: Philippe Blain via GitGitGadgetNext: Philippe Blain via GitGitGadget
Message 2 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.