index 38d61210a2f40fc6a7de8b543a68bdebe7e75ca7..46356e8a274a20c4d01f43c60caf98c2e7e1b76a 100755 (executable)
{
local all c s=$'\n' IFS=' '$'\t'$'\n'
local cur="${COMP_WORDS[COMP_CWORD]}"
- if [ -n "$2" ]; then
+ if [ $# -gt 2 ]; then
cur="$3"
fi
for c in $1; do
-- "$cur"))
;;
*)
- COMPREPLY=($(compgen -W "$(__git_refs)" -- "$cur"))
+ __gitcomp "$(__git_refs)"
;;
esac
}
*...*)
pfx="${cur%...*}..."
cur="${cur#*...}"
- COMPREPLY=($(compgen -P "$pfx" -W "$(__git_refs)" -- "$cur"))
+ __gitcomp "$(__git_refs)" "$pfx" "$cur"
;;
*..*)
pfx="${cur%..*}.."
cur="${cur#*..}"
- COMPREPLY=($(compgen -P "$pfx" -W "$(__git_refs)" -- "$cur"))
+ __gitcomp "$(__git_refs)" "$pfx" "$cur"
+ ;;
+ *.)
+ __gitcomp "$cur."
;;
*)
- COMPREPLY=($(compgen -W "$(__git_refs)" -- "$cur"))
+ __gitcomp "$(__git_refs)"
;;
esac
}
cvsimport) : import;;
cvsserver) : daemon;;
daemon) : daemon;;
+ fast-import) : import;;
fsck-objects) : plumbing;;
fetch-pack) : plumbing;;
fmt-merge-msg) : plumbing;;
{
local cur="${COMP_WORDS[COMP_CWORD]}"
if [ -d .dotest ]; then
- COMPREPLY=($(compgen -W "
- --skip --resolved
- " -- "$cur"))
+ __gitcomp "--skip --resolved"
return
fi
case "$cur" in
--whitespace=*)
- COMPREPLY=($(compgen -W "$__git_whitespacelist" \
- -- "${cur##--whitespace=}"))
+ __gitcomp "$__git_whitespacelist" "" "${cur##--whitespace=}"
return
;;
--*)
- COMPREPLY=($(compgen -W "
+ __gitcomp "
--signoff --utf8 --binary --3way --interactive
--whitespace=
- " -- "$cur"))
+ "
return
esac
COMPREPLY=()
local cur="${COMP_WORDS[COMP_CWORD]}"
case "$cur" in
--whitespace=*)
- COMPREPLY=($(compgen -W "$__git_whitespacelist" \
- -- "${cur##--whitespace=}"))
+ __gitcomp "$__git_whitespacelist" "" "${cur##--whitespace=}"
return
;;
--*)
- COMPREPLY=($(compgen -W "
+ __gitcomp "
--stat --numstat --summary --check --index
--cached --index-info --reverse --reject --unidiff-zero
--apply --no-add --exclude=
--whitespace= --inaccurate-eof --verbose
- " -- "$cur"))
+ "
return
esac
COMPREPLY=()
local cur="${COMP_WORDS[COMP_CWORD]}"
case "$cur" in
--*)
- COMPREPLY=($(compgen -W "
- --interactive
- " -- "$cur"))
+ __gitcomp "--interactive"
return
esac
COMPREPLY=()
}
+_git_bisect ()
+{
+ local i c=1 command
+ while [ $c -lt $COMP_CWORD ]; do
+ i="${COMP_WORDS[c]}"
+ case "$i" in
+ start|bad|good|reset|visualize|replay|log)
+ command="$i"
+ break
+ ;;
+ esac
+ c=$((++c))
+ done
+
+ if [ $c -eq $COMP_CWORD -a -z "$command" ]; then
+ __gitcomp "start bad good reset visualize replay log"
+ return
+ fi
+
+ case "$command" in
+ bad|good|reset)
+ __gitcomp "$(__git_refs)"
+ ;;
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+}
+
_git_branch ()
{
- local cur="${COMP_WORDS[COMP_CWORD]}"
- COMPREPLY=($(compgen -W "$(__git_refs)" -- "$cur"))
+ __gitcomp "$(__git_refs)"
}
_git_checkout ()
{
- local cur="${COMP_WORDS[COMP_CWORD]}"
- COMPREPLY=($(compgen -W "$(__git_refs)" -- "$cur"))
+ __gitcomp "$(__git_refs)"
+}
+
+_git_cherry ()
+{
+ __gitcomp "$(__git_refs)"
}
_git_cherry_pick ()
local cur="${COMP_WORDS[COMP_CWORD]}"
case "$cur" in
--*)
- COMPREPLY=($(compgen -W "
- --edit --no-commit
- " -- "$cur"))
+ __gitcomp "--edit --no-commit"
;;
*)
- COMPREPLY=($(compgen -W "$(__git_refs)" -- "$cur"))
+ __gitcomp "$(__git_refs)"
;;
esac
}
local cur="${COMP_WORDS[COMP_CWORD]}"
case "$cur" in
--*)
- COMPREPLY=($(compgen -W "
+ __gitcomp "
--all --author= --signoff --verify --no-verify
--edit --amend --include --only
- " -- "$cur"))
+ "
return
esac
COMPREPLY=()
_git_diff_tree ()
{
- local cur="${COMP_WORDS[COMP_CWORD]}"
- COMPREPLY=($(compgen -W "$(__git_refs)" -- "$cur"))
+ __gitcomp "$(__git_refs)"
}
_git_fetch ()
case "${COMP_WORDS[0]},$COMP_CWORD" in
git-fetch*,1)
- COMPREPLY=($(compgen -W "$(__git_remotes)" -- "$cur"))
+ __gitcomp "$(__git_remotes)"
;;
git,2)
- COMPREPLY=($(compgen -W "$(__git_remotes)" -- "$cur"))
+ __gitcomp "$(__git_remotes)"
;;
*)
case "$cur" in
*:*)
- cur="${cur#*:}"
- COMPREPLY=($(compgen -W "$(__git_refs)" -- "$cur"))
+ __gitcomp "$(__git_refs)" "" "${cur#*:}"
;;
*)
local remote
git-fetch) remote="${COMP_WORDS[1]}" ;;
git) remote="${COMP_WORDS[2]}" ;;
esac
- COMPREPLY=($(compgen -W "$(__git_refs2 "$remote")" -- "$cur"))
+ __gitcomp "$(__git_refs2 "$remote")"
;;
esac
;;
local cur="${COMP_WORDS[COMP_CWORD]}"
case "$cur" in
--*)
- COMPREPLY=($(compgen -W "
+ __gitcomp "
--stdout --attach --thread
--output-directory
--numbered --start-number
--signoff
--in-reply-to=
--full-index --binary
- " -- "$cur"))
+ --not --all
+ "
return
;;
esac
__git_complete_revlist
}
-_git_ls_remote ()
+_git_gc ()
{
local cur="${COMP_WORDS[COMP_CWORD]}"
- COMPREPLY=($(compgen -W "$(__git_remotes)" -- "$cur"))
+ case "$cur" in
+ --*)
+ __gitcomp "--prune"
+ return
+ ;;
+ esac
+ COMPREPLY=()
+}
+
+_git_ls_remote ()
+{
+ __gitcomp "$(__git_remotes)"
}
_git_ls_tree ()
local cur="${COMP_WORDS[COMP_CWORD]}"
case "$cur" in
--pretty=*)
- COMPREPLY=($(compgen -W "
+ __gitcomp "
oneline short medium full fuller email raw
- " -- "${cur##--pretty=}"))
+ " "" "${cur##--pretty=}"
return
;;
--*)
- COMPREPLY=($(compgen -W "
+ __gitcomp "
--max-count= --max-age= --since= --after=
--min-age= --before= --until=
--root --not --topo-order --date-order
--author= --committer= --grep=
--all-match
--pretty= --name-status --name-only
- " -- "$cur"))
+ --not --all
+ "
return
;;
esac
local cur="${COMP_WORDS[COMP_CWORD]}"
case "${COMP_WORDS[COMP_CWORD-1]}" in
-s|--strategy)
- COMPREPLY=($(compgen -W "$(__git_merge_strategies)" -- "$cur"))
+ __gitcomp "$(__git_merge_strategies)"
return
esac
case "$cur" in
--strategy=*)
- COMPREPLY=($(compgen -W "$(__git_merge_strategies)" \
- -- "${cur##--strategy=}"))
+ __gitcomp "$(__git_merge_strategies)" "" "${cur##--strategy=}"
return
;;
--*)
- COMPREPLY=($(compgen -W "
+ __gitcomp "
--no-commit --no-summary --squash --strategy
- " -- "$cur"))
+ "
return
esac
- COMPREPLY=($(compgen -W "$(__git_refs)" -- "$cur"))
+ __gitcomp "$(__git_refs)"
}
_git_merge_base ()
{
- local cur="${COMP_WORDS[COMP_CWORD]}"
- COMPREPLY=($(compgen -W "$(__git_refs)" -- "$cur"))
+ __gitcomp "$(__git_refs)"
}
_git_name_rev ()
{
- local cur="${COMP_WORDS[COMP_CWORD]}"
- COMPREPLY=($(compgen -W "--tags --all --stdin" -- "$cur"))
+ __gitcomp "--tags --all --stdin"
}
_git_pull ()
case "${COMP_WORDS[0]},$COMP_CWORD" in
git-pull*,1)
- COMPREPLY=($(compgen -W "$(__git_remotes)" -- "$cur"))
+ __gitcomp "$(__git_remotes)"
;;
git,2)
- COMPREPLY=($(compgen -W "$(__git_remotes)" -- "$cur"))
+ __gitcomp "$(__git_remotes)"
;;
*)
local remote
git-pull) remote="${COMP_WORDS[1]}" ;;
git) remote="${COMP_WORDS[2]}" ;;
esac
- COMPREPLY=($(compgen -W "$(__git_refs "$remote")" -- "$cur"))
+ __gitcomp "$(__git_refs "$remote")"
;;
esac
}
case "${COMP_WORDS[0]},$COMP_CWORD" in
git-push*,1)
- COMPREPLY=($(compgen -W "$(__git_remotes)" -- "$cur"))
+ __gitcomp "$(__git_remotes)"
;;
git,2)
- COMPREPLY=($(compgen -W "$(__git_remotes)" -- "$cur"))
+ __gitcomp "$(__git_remotes)"
;;
*)
case "$cur" in
git-push) remote="${COMP_WORDS[1]}" ;;
git) remote="${COMP_WORDS[2]}" ;;
esac
- cur="${cur#*:}"
- COMPREPLY=($(compgen -W "$(__git_refs "$remote")" -- "$cur"))
+ __gitcomp "$(__git_refs "$remote")" "" "${cur#*:}"
;;
*)
- COMPREPLY=($(compgen -W "$(__git_refs2)" -- "$cur"))
+ __gitcomp "$(__git_refs2)"
;;
esac
;;
_git_rebase ()
{
local cur="${COMP_WORDS[COMP_CWORD]}"
- if [ -d .dotest ]; then
- COMPREPLY=($(compgen -W "
- --continue --skip --abort
- " -- "$cur"))
+ if [ -d .dotest ] || [ -d .git/.dotest-merge ]; then
+ __gitcomp "--continue --skip --abort"
return
fi
case "${COMP_WORDS[COMP_CWORD-1]}" in
-s|--strategy)
- COMPREPLY=($(compgen -W "$(__git_merge_strategies)" -- "$cur"))
+ __gitcomp "$(__git_merge_strategies)"
return
esac
case "$cur" in
--strategy=*)
- COMPREPLY=($(compgen -W "$(__git_merge_strategies)" \
- -- "${cur##--strategy=}"))
+ __gitcomp "$(__git_merge_strategies)" "" "${cur##--strategy=}"
return
;;
--*)
- COMPREPLY=($(compgen -W "
- --onto --merge --strategy
- " -- "$cur"))
+ __gitcomp "--onto --merge --strategy"
return
esac
- COMPREPLY=($(compgen -W "$(__git_refs)" -- "$cur"))
+ __gitcomp "$(__git_refs)"
}
_git_config ()
__gitcomp "
--global --list --replace-all
--get --get-all --get-regexp
- --unset --unset-all
+ --add --unset --unset-all
"
return
;;
core.legacyHeaders
core.packedGitWindowSize
core.packedGitLimit
+ clean.requireForce
color.branch
color.branch.current
color.branch.local
"
}
+_git_remote ()
+{
+ local i c=1 command
+ while [ $c -lt $COMP_CWORD ]; do
+ i="${COMP_WORDS[c]}"
+ case "$i" in
+ add|show|prune) command="$i"; break ;;
+ esac
+ c=$((++c))
+ done
+
+ if [ $c -eq $COMP_CWORD -a -z "$command" ]; then
+ __gitcomp "add show prune"
+ return
+ fi
+
+ case "$command" in
+ show|prune)
+ __gitcomp "$(__git_remotes)"
+ ;;
+ *)
+ COMPREPLY=()
+ ;;
+ esac
+}
+
_git_reset ()
{
local cur="${COMP_WORDS[COMP_CWORD]}"
- local opt="--mixed --hard --soft"
- COMPREPLY=($(compgen -W "$opt $(__git_refs)" -- "$cur"))
+ case "$cur" in
+ --*)
+ __gitcomp "--mixed --hard --soft"
+ return
+ ;;
+ esac
+ __gitcomp "$(__git_refs)"
}
_git_show ()
local cur="${COMP_WORDS[COMP_CWORD]}"
case "$cur" in
--pretty=*)
- COMPREPLY=($(compgen -W "
+ __gitcomp "
oneline short medium full fuller email raw
- " -- "${cur##--pretty=}"))
+ " "" "${cur##--pretty=}"
return
;;
--*)
- COMPREPLY=($(compgen -W "--pretty=" -- "$cur"))
+ __gitcomp "--pretty="
return
;;
esac
am) _git_am ;;
add) _git_add ;;
apply) _git_apply ;;
+ bisect) _git_bisect ;;
branch) _git_branch ;;
checkout) _git_checkout ;;
+ cherry) _git_cherry ;;
cherry-pick) _git_cherry_pick ;;
commit) _git_commit ;;
config) _git_config ;;
diff-tree) _git_diff_tree ;;
fetch) _git_fetch ;;
format-patch) _git_format_patch ;;
+ gc) _git_gc ;;
log) _git_log ;;
ls-remote) _git_ls_remote ;;
ls-tree) _git_ls_tree ;;
pull) _git_pull ;;
push) _git_push ;;
rebase) _git_rebase ;;
+ remote) _git_remote ;;
reset) _git_reset ;;
show) _git_show ;;
show-branch) _git_log ;;
_gitk ()
{
local cur="${COMP_WORDS[COMP_CWORD]}"
- COMPREPLY=($(compgen -W "--all $(__git_refs)" -- "$cur"))
+ case "$cur" in
+ --*)
+ __gitcomp "--not --all"
+ return
+ ;;
+ esac
+ __git_complete_revlist
}
complete -o default -o nospace -F _git git
-complete -o default -F _gitk gitk
-complete -o default -F _git_am git-am
-complete -o default -F _git_apply git-apply
-complete -o default -F _git_branch git-branch
-complete -o default -F _git_checkout git-checkout
-complete -o default -F _git_cherry_pick git-cherry-pick
-complete -o default -F _git_commit git-commit
+complete -o default -o nospace -F _gitk gitk
+complete -o default -o nospace -F _git_am git-am
+complete -o default -o nospace -F _git_apply git-apply
+complete -o default -o nospace -F _git_bisect git-bisect
+complete -o default -o nospace -F _git_branch git-branch
+complete -o default -o nospace -F _git_checkout git-checkout
+complete -o default -o nospace -F _git_cherry git-cherry
+complete -o default -o nospace -F _git_cherry_pick git-cherry-pick
+complete -o default -o nospace -F _git_commit git-commit
complete -o default -o nospace -F _git_diff git-diff
-complete -o default -F _git_diff_tree git-diff-tree
+complete -o default -o nospace -F _git_diff_tree git-diff-tree
complete -o default -o nospace -F _git_fetch git-fetch
complete -o default -o nospace -F _git_format_patch git-format-patch
+complete -o default -o nospace -F _git_gc git-gc
complete -o default -o nospace -F _git_log git-log
-complete -o default -F _git_ls_remote git-ls-remote
+complete -o default -o nospace -F _git_ls_remote git-ls-remote
complete -o default -o nospace -F _git_ls_tree git-ls-tree
-complete -o default -F _git_merge git-merge
-complete -o default -F _git_merge_base git-merge-base
-complete -o default -F _git_name_rev git-name-rev
+complete -o default -o nospace -F _git_merge git-merge
+complete -o default -o nospace -F _git_merge_base git-merge-base
+complete -o default -o nospace -F _git_name_rev git-name-rev
complete -o default -o nospace -F _git_pull git-pull
complete -o default -o nospace -F _git_push git-push
-complete -o default -F _git_rebase git-rebase
-complete -o default -F _git_config git-config
-complete -o default -F _git_reset git-reset
+complete -o default -o nospace -F _git_rebase git-rebase
+complete -o default -o nospace -F _git_config git-config
+complete -o default -o nospace -F _git_remote git-remote
+complete -o default -o nospace -F _git_reset git-reset
complete -o default -o nospace -F _git_show git-show
complete -o default -o nospace -F _git_log git-show-branch
complete -o default -o nospace -F _git_log git-whatchanged
# included the '.exe' suffix.
#
if [ Cygwin = "$(uname -o 2>/dev/null)" ]; then
-complete -o default -F _git_add git-add.exe
-complete -o default -F _git_apply git-apply.exe
+complete -o default -o nospace -F _git_add git-add.exe
+complete -o default -o nospace -F _git_apply git-apply.exe
complete -o default -o nospace -F _git git.exe
-complete -o default -F _git_branch git-branch.exe
+complete -o default -o nospace -F _git_branch git-branch.exe
+complete -o default -o nospace -F _git_cherry git-cherry.exe
complete -o default -o nospace -F _git_diff git-diff.exe
complete -o default -o nospace -F _git_diff_tree git-diff-tree.exe
complete -o default -o nospace -F _git_format_patch git-format-patch.exe
complete -o default -o nospace -F _git_log git-log.exe
complete -o default -o nospace -F _git_ls_tree git-ls-tree.exe
-complete -o default -F _git_merge_base git-merge-base.exe
-complete -o default -F _git_name_rev git-name-rev.exe
+complete -o default -o nospace -F _git_merge_base git-merge-base.exe
+complete -o default -o nospace -F _git_name_rev git-name-rev.exe
complete -o default -o nospace -F _git_push git-push.exe
-complete -o default -F _git_config git-config
+complete -o default -o nospace -F _git_config git-config
complete -o default -o nospace -F _git_show git-show.exe
complete -o default -o nospace -F _git_log git-show-branch.exe
complete -o default -o nospace -F _git_log git-whatchanged.exe