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 |