summaryrefslogtreecommitdiff
path: root/Completion/Unix/Command/_git
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/Unix/Command/_git')
-rw-r--r--Completion/Unix/Command/_git22
1 files changed, 9 insertions, 13 deletions
diff --git a/Completion/Unix/Command/_git b/Completion/Unix/Command/_git
index b5b3e79eb..8b78b5785 100644
--- a/Completion/Unix/Command/_git
+++ b/Completion/Unix/Command/_git
@@ -473,28 +473,24 @@ _git-checkout () {
[[ $line[CURRENT] = -* ]] && return
if (( CURRENT == 1 )) && [[ -z $opt_args[(I)--] ]]; then
# TODO: Allow A...B
- local branch_arg='' \
+ local \
remote_branch_noprefix_arg='remote-branch-names-noprefix::__git_remote_branch_names_noprefix' \
tree_ish_arg='tree-ishs::__git_tree_ishs' \
file_arg='modified-files::__git_modified_files'
if [[ -n ${opt_args[(I)-b|-B|--orphan|--detach]} ]]; then
- remote_branch_noprefix_arg=
- file_arg=
+ _alternative $tree_ish_arg && ret=0
elif [[ -n $opt_args[(I)--track] ]]; then
- branch_arg='remote-branches::__git_remote_branch_names'
- remote_branch_noprefix_arg=
- tree_ish_arg=
- file_arg=
+ _alternative remote-branches::__git_remote_branch_names && ret=0
elif [[ -n ${opt_args[(I)--ours|--theirs|-m|--conflict|--patch]} ]]; then
- remote_branch_noprefix_arg=
+ _alternative $tree_ish_arg $file_arg && ret=0
+ else
+ _alternative \
+ $remote_branch_noprefix_arg \
+ $tree_ish_arg \
+ $file_arg && ret=0
fi
- _alternative \
- $branch_arg \
- $remote_branch_noprefix_arg \
- $tree_ish_arg \
- $file_arg && ret=0
elif [[ -n ${opt_args[(I)-b|-B|-t|--track|--orphan|--detach]} ]]; then
_nothing
elif [[ -n $line[1] ]] && __git_is_treeish $line[1]; then