mirror of
https://github.com/wfxr/forgit.git
synced 2026-09-10 07:16:23 -04:00
When using forgit as a subcommand of git, put 'git-forgit.bash' in one of the following places and it will be loaded automatically on tab completion of 'git forgit' or any configured git aliases of it: - /usr/share/bash-completion/completions - ~/.local/share/bash-completion/completions
107 lines
2.2 KiB
Bash
Executable file
107 lines
2.2 KiB
Bash
Executable file
# forgit completions for bash
|
|
|
|
# When using forgit as a subcommand of git, put this file in one of the
|
|
# following places and it will be loaded automatically on tab completion of
|
|
# 'git forgit' or any configured git aliases of it:
|
|
#
|
|
# /usr/share/bash-completion/completions
|
|
# ~/.local/share/bash-completion/completions
|
|
|
|
_git_branch_delete()
|
|
{
|
|
__gitcomp_nl "$(__git_heads)"
|
|
}
|
|
|
|
_git_checkout_branch()
|
|
{
|
|
__gitcomp_nl "$(__git branch -a --format '%(refname:short)')"
|
|
}
|
|
|
|
_git_checkout_file()
|
|
{
|
|
__gitcomp_nl "$(__git ls-files --modified)"
|
|
}
|
|
|
|
_git_checkout_tag()
|
|
{
|
|
__gitcomp_nl "$(__git_tags)"
|
|
}
|
|
|
|
_git_stash_show()
|
|
{
|
|
__gitcomp_nl "$(__git stash list | sed -n -e 's/:.*//p')"
|
|
}
|
|
|
|
# Completion for git-forgit
|
|
# This includes git aliases, e.g. "alias.cb=forgit checkout_branch" will
|
|
# correctly complete available branches on "git cb".
|
|
_git_forgit()
|
|
{
|
|
local subcommand cword cur prev cmds
|
|
|
|
subcommand="${COMP_WORDS[1]}"
|
|
if [[ "$subcommand" != "forgit" ]]
|
|
then
|
|
# Forgit is obviously called via a git alias. Get the original
|
|
# aliased subcommand and proceed as if it was the previous word.
|
|
prev=$(git config --get "alias.$subcommand" | cut -d' ' -f 2)
|
|
cword=$((${COMP_CWORD} + 1))
|
|
else
|
|
cword=${COMP_CWORD}
|
|
prev=${COMP_WORDS[COMP_CWORD-1]}
|
|
fi
|
|
|
|
cur=${COMP_WORDS[COMP_CWORD]}
|
|
|
|
cmds="
|
|
add
|
|
blame
|
|
branch_delete
|
|
checkout_branch
|
|
checkout_commit
|
|
checkout_file
|
|
checkout_tag
|
|
cherry_pick
|
|
cherry_pick_from_branch
|
|
clean
|
|
diff
|
|
fixup
|
|
ignore
|
|
log
|
|
rebase
|
|
reset_head
|
|
revert_commit
|
|
stash_show
|
|
stash_push
|
|
"
|
|
|
|
case ${cword} in
|
|
2)
|
|
COMPREPLY=($(compgen -W "${cmds}" -- ${cur}))
|
|
;;
|
|
3)
|
|
case ${prev} in
|
|
add) _git_add ;;
|
|
branch_delete) _git_branch_delete ;;
|
|
checkout_branch) _git_checkout_branch ;;
|
|
checkout_commit) _git_checkout ;;
|
|
checkout_file) _git_checkout_file ;;
|
|
checkout_tag) _git_checkout_tag ;;
|
|
cherry_pick) _git_cherry_pick ;;
|
|
cherry_pick_from_branch) _git_checkout_branch ;;
|
|
clean) _git_clean ;;
|
|
diff) _git_diff ;;
|
|
fixup) _git_branch ;;
|
|
log) _git_log ;;
|
|
rebase) _git_rebase ;;
|
|
reset_head) _git_reset ;;
|
|
revert_commit) _git_revert ;;
|
|
stash_show) _git_stash_show ;;
|
|
esac
|
|
;;
|
|
*)
|
|
COMPREPLY=()
|
|
;;
|
|
esac
|
|
}
|