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>
This commit is contained in:
Britton Leo Kerin 2024-02-06 12:50:46 -09:00 committed by Junio C Hamano
parent 41928aeb45
commit a9e5b7a76d

View file

@ -2089,10 +2089,12 @@ __git_diff_merges_opts="off none on first-parent 1 separate m combined c dense-c
__git_log_pretty_formats="oneline short medium full fuller reference email raw format: tformat: mboxrd"
__git_log_date_formats="relative iso8601 iso8601-strict rfc2822 short local default human raw unix auto: format:"
_git_log ()
# Complete porcelain (i.e. not git-rev-list) options and at least some
# option arguments accepted by git-log. Note that this same set of options
# are also accepted by some other git commands besides git-log.
__git_complete_log_opts ()
{
__git_has_doubledash && return
__git_find_repo_path
COMPREPLY=()
local merge=""
if [ -f "$__git_repo_path/MERGE_HEAD" ]; then
@ -2186,6 +2188,16 @@ _git_log ()
return
;;
esac
}
_git_log ()
{
__git_has_doubledash && return
__git_find_repo_path
__git_complete_log_opts
[ ${#COMPREPLY[@]} -eq 0 ] || return
__git_complete_revlist
}