.bashrc
changeset 263 9a0fc755c9f9
parent 262 fd0adcd27f18
child 264 ba2b44143421
equal deleted inserted replaced
262:fd0adcd27f18 263:9a0fc755c9f9
   242 }
   242 }
   243 complete -F _man man
   243 complete -F _man man
   244 
   244 
   245 _make() {
   245 _make() {
   246   local i mk
   246   local i mk
       
   247   local dir=.
   247   local cur=${COMP_WORDS[COMP_CWORD]}
   248   local cur=${COMP_WORDS[COMP_CWORD]}
       
   249   if [[ $cur = -* ]]; then
       
   250     COMPREPLY=( $(compgen -W "-C -f" -- "$cur") )
       
   251     return 0
       
   252   fi
   248   [[ $COMP_CWORD > 0 ]] && prev=${COMP_WORDS[COMP_CWORD-1]}
   253   [[ $COMP_CWORD > 0 ]] && prev=${COMP_WORDS[COMP_CWORD-1]}
   249   if [[ $prev = -f ]]; then
   254   for (( i=1; i < ${#COMP_WORDS[@]}-1; i++ )); do
   250     COMPREPLY=( $(compgen -f -- "$cur") )
   255     case ${COMP_WORDS[i]} in
   251     return 0
   256       -f) mk=${COMP_WORDS[i+1]} ;;
   252   fi
   257       -C) dir=${COMP_WORDS[i+1]} ;;
       
   258     esac
       
   259   done
   253   if [[ $prev = -C ]]; then
   260   if [[ $prev = -C ]]; then
   254     COMPREPLY=( $(compgen -d -- "$cur") )
   261     COMPREPLY=( $(compgen -d -- "$cur") )
   255     return 0
   262     return 0
   256   fi
   263   fi
   257   for (( i=1; i < ${#COMP_WORDS[@]}-1; i++ )); do
   264   if [[ $prev = -f ]]; then
   258     if [[ ${COMP_WORDS[i]} == -f ]]; then
   265     COMPREPLY=( $(cd $dir >/dev/null 2>&1; compgen -f -- "$cur") )
   259       mk=${COMP_WORDS[i+1]}
   266     return 0
   260       break
   267   fi
   261     fi
   268   mk=$dir/$mk
   262   done
   269   [[ -f $mk ]] || mk=$(eval echo $dir/[Mm]akefile)
   263   [[ ! -f $mk ]] && mk=$(eval echo [Mm]akefile)
   270   [[ -f $mk ]] || return 1
   264   [[ -f $mk ]] || return 0
       
   265   COMPREPLY=( $(compgen -W "$(sed -n -e '/^[[:alnum:]_-]*:/{s=^\([^:]*\):.*=\1=;p;}' $mk)" -- $cur) )
   271   COMPREPLY=( $(compgen -W "$(sed -n -e '/^[[:alnum:]_-]*:/{s=^\([^:]*\):.*=\1=;p;}' $mk)" -- $cur) )
   266   return 0
   272   return 0
   267 }
   273 }
   268 complete -F _make make gmake pmake
   274 complete -F _make make gmake pmake
   269 
   275