Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add bash completions for git-forgit (#235)
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
- Loading branch information
1 parent
548af73
commit 73aea65
Showing
2 changed files
with
108 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,106 @@ | ||
# 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 | ||
} |