I am trying to add autocompletion to git commit
upon hitting TabTab.
The autocomplete feature I am working on is based on a branch-naming convention. The convention is to append the PivotalTracker Id number to the end of the branch name, so a typical branch would look like foo-bar-baz-1449242
.
We can associate the commits with the PivotalTracker card by prepending [#1449242]
to the beginning of the commit message. I would like this to be auto-inserted if git commit
is typed in and the user hits TabTab.
I have already done this here: https://github.com/tlehman/dotfiles/blob/master/ptid_git_complete
(and for convenience, here is the source code):
function _ptid_git_complete_()
{
local line="${COMP_LINE}" # the entire line that is being completed
# check that the commit option was passed to git
if [[ "$line" == "git commit" ]]; then
# get the PivotalTracker Id from the branch name
ptid=`git branch | grep -e "^\*" | sed 's/^\* //g' | sed 's/\-/ /g' | awk '{ print $(NF) }'`
nodigits=$(echo $ptid | sed 's/[[:digit:]]//g')
if [ ! -z $nodigits ]; then
: # do nothing
else
COMPREPLY=("commit -m \"[#$ptid]")
fi
else
reply=()
fi
}
complete -F _ptid_git_complete_ git
The problem is that this breaks the git autocompletion features defined in git-autocompletion.bash
How can I make this function compatible with git-autocompletion.bash?
Best Answer
You could use
__git_complete
(defined ingit-autocompletion.bash
) to install your own function, and have your function fall back to the original function. Possibly like this: