completion: new function __git_complete_log_opts

The options accepted by git-log are also accepted by at least one other command (git-bisect). Factor the common option completion code into a new function and use it from _git_log. The new function leaves COMPREPLY empty if no option candidates are found, so that callers can safely check it to determine if completion for other arguments should be attempted. Signed-off-by: Britton Leo Kerin <britton.kerin@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Britton Leo Kerin committed Feb 6, 2024 at 12:50 UTC a9e5b7a76da5ceab772166c94830dd899cf55b88
1 file changed +15 -3
contrib/completion/git-completion.bash
+15 -3
@@ -2089,10 +2089,12 @@ __git_diff_merges_opts="off none on first-parent 1 separate m combined c dense-c
2089 __git_log_pretty_formats="oneline short medium full fuller reference email raw format: tformat: mboxrd"
2090 __git_log_date_formats="relative iso8601 iso8601-strict rfc2822 short local default human raw unix auto: format:"
2091
2092 -_git_log ()
2092 +# Complete porcelain (i.e. not git-rev-list) options and at least some
2093 +# option arguments accepted by git-log. Note that this same set of options
2094 +# are also accepted by some other git commands besides git-log.
2095 +__git_complete_log_opts ()
2096 {
2094 - __git_has_doubledash && return
2095 - __git_find_repo_path
2097 + COMPREPLY=()
2098
2099 local merge=""
2100 if [ -f "$__git_repo_path/MERGE_HEAD" ]; then
@@ -2186,6 +2188,16 @@ _git_log ()
2188 return
2189 ;;
2190 esac
2191 +}
2192 +
2193 +_git_log ()
2194 +{
2195 + __git_has_doubledash && return
2196 + __git_find_repo_path
2197 +
2198 + __git_complete_log_opts
2199 + [ ${#COMPREPLY[@]} -eq 0 ] || return
2200 +
2201 __git_complete_revlist
2202 }
2203