diff options
author | Bart Schaefer <barts@users.sourceforge.net> | 2000-04-10 23:40:43 +0000 |
---|---|---|
committer | Bart Schaefer <barts@users.sourceforge.net> | 2000-04-10 23:40:43 +0000 |
commit | 37012f06a7e5e8a64614dbf9032c77cff1bcfcfb (patch) | |
tree | 1f02eb83e5e9835997a9f4d6d2d801c970557a9d /Completion | |
parent | 3153dbb321717deb374fcf3cb86098b5b1ca3654 (diff) | |
download | zsh-37012f06a7e5e8a64614dbf9032c77cff1bcfcfb.tar.gz zsh-37012f06a7e5e8a64614dbf9032c77cff1bcfcfb.tar.xz zsh-37012f06a7e5e8a64614dbf9032c77cff1bcfcfb.zip |
10628: Check for GNU make using "_call version ..." as was done for GNU diff.
Diffstat (limited to 'Completion')
-rw-r--r-- | Completion/User/_make | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/Completion/User/_make b/Completion/User/_make index 9a8a7ac44..5161e6689 100644 --- a/Completion/User/_make +++ b/Completion/User/_make @@ -1,7 +1,18 @@ -#compdef make gmake pmake +#compdef make gmake pmake dmake local prev="$words[CURRENT-1]" file expl tmp +(( $+_is_gnu )) || typeset -gA _is_gnu + +if (( ! $+_is_gnu[$1] )); then + if [[ $(_call version $1 -v -f /dev/null </dev/null 2>/dev/null) = *GNU* ]] + then + _is_gnu[$1]=yes + else + _is_gnu[$1]= + fi +fi + if [[ "$prev" = -[CI] ]]; then _files -/ elif [[ "$prev" = -[foW] ]]; then @@ -14,17 +25,23 @@ else file=Makefile elif [[ -e makefile ]]; then file=makefile + elif [[ -e GNUmakefile ]]; then + file=GNUmakefile else file='' fi if [[ -n "$file" ]] && _wanted targets; then - tmp=( - $(awk '/^[a-zA-Z0-9][^\/\t]+:/ {print $1} + if [[ -n "$_is_gnu[$1]" ]]; then + tmp=( $(make -nsp --no-print-directory -f "$file" .PHONY | awk '/^[a-zA-Z0-9][^\/\t=]+:/ {print $1}' FS=:) ) + else + tmp=( + $(awk '/^[a-zA-Z0-9][^\/\t=]+:/ {print $1} /^\.include *<bsd\.port\.(subdir\.|pre\.)?mk>/ || /^\.include *".*mk\/bsd\.pkg\.(subdir\.)?mk"/ { print "fetch fetch-list extract patch configure build install reinstall deinstall package describe checkpatch checksum makesum" }' \ FS=: $file) - ) + ) + fi _all_labels targets expl 'make target' compadd "$tmp[@]" && return 0 fi compset -P 1 '*=' |