]> git.ipfire.org Git - thirdparty/git.git/commitdiff
completion: factor out __git_resolve_builtins
authorRubén Justo <rjusto@gmail.com>
Sat, 2 Mar 2024 15:52:03 +0000 (16:52 +0100)
committerJunio C Hamano <gitster@pobox.com>
Sun, 3 Mar 2024 22:21:39 +0000 (14:21 -0800)
We're going to use the result of "git xxx --git-completion-helper" not
only for feeding COMPREPLY.

Therefore, factor out the execution and the caching of its results in
__gitcomp_builtin, to a new function __git_resolve_builtins.

While we're here, move an important comment we have in the function to
its header, so it gains visibility.

Signed-off-by: Rubén Justo <rjusto@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
contrib/completion/git-completion.bash

index dc5f73a9f399a4a9fed4de01ef9bd37a662ec2b9..f9fbf1f703749d0e71cd7fa57e4b1da0b44c35c4 100644 (file)
@@ -452,16 +452,18 @@ fi
 
 # This function is equivalent to
 #
-#    __gitcomp "$(git xxx --git-completion-helper) ..."
+#    ___git_resolved_builtins=$(git xxx --git-completion-helper)
 #
-# except that the output is cached. Accept 1-3 arguments:
+# except that the result of the execution is cached.
+#
+# Accept 1-3 arguments:
 # 1: the git command to execute, this is also the cache key
+#    (use "_" when the command contains spaces, e.g. "remote add"
+#    becomes "remote_add")
 # 2: extra options to be added on top (e.g. negative forms)
 # 3: options to be excluded
-__gitcomp_builtin ()
+__git_resolve_builtins ()
 {
-       # spaces must be replaced with underscore for multi-word
-       # commands, e.g. "git remote add" becomes remote_add.
        local cmd="$1"
        local incl="${2-}"
        local excl="${3-}"
@@ -487,7 +489,24 @@ __gitcomp_builtin ()
                eval "$var=\"$options\""
        fi
 
-       __gitcomp "$options"
+       ___git_resolved_builtins="$options"
+}
+
+# This function is equivalent to
+#
+#    __gitcomp "$(git xxx --git-completion-helper) ..."
+#
+# except that the output is cached. Accept 1-3 arguments:
+# 1: the git command to execute, this is also the cache key
+#    (use "_" when the command contains spaces, e.g. "remote add"
+#    becomes "remote_add")
+# 2: extra options to be added on top (e.g. negative forms)
+# 3: options to be excluded
+__gitcomp_builtin ()
+{
+       __git_resolve_builtins "$1" "$2" "$3"
+
+       __gitcomp "$___git_resolved_builtins"
 }
 
 # Variation of __gitcomp_nl () that appends to the existing list of