Signed-off-by: Thomas Braun <thomas.braun@xxxxxxxxxxxxxxxxxxx> --- contrib/completion/git-completion.bash | 48 +++++++++++++++++++++++----------- 1 file changed, 33 insertions(+), 15 deletions(-) diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index bfc74e9..f6e5bf6 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -851,15 +851,40 @@ __git_count_arguments () printf "%d" $c } +__git_complete_sequencer () +{ + local dir="$(__gitdir)" + + case "$1" in + am) + if [ -d "$dir"/rebase-apply ]; then + __gitcomp "--skip --continue --resolved --abort" + return 0 + fi + ;; + cherry-pick) + if [ -f "$dir"/CHERRY_PICK_HEAD ]; then + __gitcomp "--continue --quit --abort" + return 0 + fi + ;; + rebase) + if [ -d "$dir"/rebase-apply ] || [ -d "$dir"/rebase-merge ]; then + __gitcomp "--continue --skip --abort" + return 0 + fi + ;; + esac + + return 1 +} + __git_whitespacelist="nowarn warn error error-all fix" _git_am () { - local dir="$(__gitdir)" - if [ -d "$dir"/rebase-apply ]; then - __gitcomp "--skip --continue --resolved --abort" - return - fi + __git_complete_sequencer "am" && return + case "$cur" in --whitespace=*) __gitcomp "$__git_whitespacelist" "" "${cur##--whitespace=}" @@ -1044,11 +1069,8 @@ _git_cherry () _git_cherry_pick () { - local dir="$(__gitdir)" - if [ -f "$dir"/CHERRY_PICK_HEAD ]; then - __gitcomp "--continue --quit --abort" - return - fi + __git_complete_sequencer "cherry-pick" && return + case "$cur" in --*) __gitcomp "--edit --no-commit --signoff --strategy= --mainline" @@ -1666,11 +1688,7 @@ _git_push () _git_rebase () { - local dir="$(__gitdir)" - if [ -d "$dir"/rebase-apply ] || [ -d "$dir"/rebase-merge ]; then - __gitcomp "--continue --skip --abort" - return - fi + __git_complete_sequencer "rebase" && return __git_complete_strategy && return case "$cur" in --whitespace=*) -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html