diff --git a/bashrc b/bashrc index 0e8c84f..3558f71 100644 --- a/bashrc +++ b/bashrc @@ -28,10 +28,29 @@ unset GREEN unset RESET # Completion +_comp_git() { + local IFS=$'\n' + # $1 is the name of the command whose arguments are being completed + # $2 is the word being completed + # $3 is the word preceding the word being completed + + # branch names + COMPREPLY=( $(git branch -a --format "%(refname:short)" | grep "^$2") ) + + # remotes + COMPREPLY+=( $(git remote | grep "^$2") ) + + # subcommands + if [ "$3" = "git" ]; then + COMPREPLY+=( $({ compgen -c "git-"; command ls /usr/libexec/git-core; } | sed -n 's/^git-//p' | grep "^$2") ) + fi +} + complete -c man complete -cf sudo complete -cf exec complete -cf run +complete -fF _comp_git git # history export HISTCONTROL=ignorespace:erasedups diff --git a/gitconfig b/gitconfig index fbf339c..d408f22 100644 --- a/gitconfig +++ b/gitconfig @@ -18,3 +18,4 @@ pushf = push --force-with-lease lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit ff = merge --ff-only + co = checkout