# HG changeset patch # User Oleksandr Gavenko # Date 1319619018 -10800 # Node ID a13e9cd160223ba2bdc816c53212dde9b10b95fc # Parent e1e0eeee8d5175dc2c49bce6d6d51a1efa0248de Add completion for 'make'. diff -r e1e0eeee8d51 -r a13e9cd16022 .bashrc --- a/.bashrc Wed Oct 26 02:59:36 2011 +0300 +++ b/.bashrc Wed Oct 26 11:50:18 2011 +0300 @@ -236,6 +236,27 @@ } complete -F _man man +_make() { + local mk + local cur=${COMP_WORDS[COMP_CWORD]} + [[ $COMP_CWORD > 0 ]] && prev=${COMP_WORDS[COMP_CWORD-1]} + if [[ $prev = -f ]]; then + COMPREPLY=( $(compgen -f -- "$cur") ) + return 0 + fi + for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do + if [[ ${COMP_WORDS[i]} == -f ]]; then + mk=${COMP_WORDS[i+1]} + break + fi + done + [[ ! -f $mk ]] && mk=$(eval echo [Mm]akefile) + [[ -f $mk ]] || return 0 + COMPREPLY=( $(compgen -W "$(sed -n -e '/^[[:alnum:]_-]*:/{s=^\([^:]*\):.*=\1=;p;}' $mk)" -- $cur) ) + return 0 +} +complete -F _make make gmake pmake + # Use bash-completion, if available. if [ -f /etc/bash_completion ]; then # Under Cygwin bash completition start a long time.