]> git.ipfire.org Git - thirdparty/git.git/commitdiff
completion: split _git_config()
authorSZEDER Gábor <szeder.dev@gmail.com>
Tue, 13 Aug 2019 12:26:48 +0000 (14:26 +0200)
committerJunio C Hamano <gitster@pobox.com>
Tue, 13 Aug 2019 19:31:04 +0000 (12:31 -0700)
_git_config() contains two enormous case statements, one to complete
configuration sections and variable names, and the other to complete
their values.

Split these out into two separate helper functions, so in the next
patches we can use them to implement completion for 'git -c <TAB>'.

Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
contrib/completion/git-completion.bash

index fc437bf3eb0e3f937764513cda9aa428702aae25..3e9c5b6b71a052a65ac2378c5043fd94f9a1b7ec 100644 (file)
@@ -2228,7 +2228,8 @@ __git_compute_config_vars ()
        __git_config_vars="$(git help --config-for-completion | sort -u)"
 }
 
-_git_config ()
+# Completes possible values of various configuration variables.
+__git_complete_config_variable_value ()
 {
        local varname
 
@@ -2320,19 +2321,16 @@ _git_config ()
                __gitcomp "7bit 8bit quoted-printable base64"
                return
                ;;
-       --get|--get-all|--unset|--unset-all)
-               __gitcomp_nl "$(__git_config_get_set_variables)"
-               return
-               ;;
        *.*)
                return
                ;;
        esac
+}
+
+# Completes configuration sections, subsections, variable names.
+__git_complete_config_variable_name ()
+{
        case "$cur" in
-       --*)
-               __gitcomp_builtin config
-               return
-               ;;
        branch.*.*)
                local pfx="${cur%.*}." cur_="${cur##*.}"
                __gitcomp "remote pushRemote merge mergeOptions rebase" "$pfx" "$cur_"
@@ -2407,6 +2405,29 @@ _git_config ()
                                                print s "."
                                }
                                ')"
+               ;;
+       esac
+}
+
+_git_config ()
+{
+       case "$prev" in
+       --get|--get-all|--unset|--unset-all)
+               __gitcomp_nl "$(__git_config_get_set_variables)"
+               return
+               ;;
+       *.*)
+               __git_complete_config_variable_value
+               return
+               ;;
+       esac
+       case "$cur" in
+       --*)
+               __gitcomp_builtin config
+               ;;
+       *)
+               __git_complete_config_variable_name
+               ;;
        esac
 }