From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6311 invoked from network); 12 Sep 2004 03:26:16 -0000 Received: from news.dotsrc.org (HELO a.mx.sunsite.dk) (130.225.247.88) by ns1.primenet.com.au with SMTP; 12 Sep 2004 03:26:16 -0000 Received: (qmail 92883 invoked from network); 12 Sep 2004 03:26:09 -0000 Received: from sunsite.dk (130.225.247.90) by a.mx.sunsite.dk with SMTP; 12 Sep 2004 03:26:09 -0000 Received: (qmail 4648 invoked by alias); 12 Sep 2004 03:25:55 -0000 Mailing-List: contact zsh-workers-help@sunsite.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 20358 Received: (qmail 4635 invoked from network); 12 Sep 2004 03:25:55 -0000 Received: from unknown (HELO a.mx.sunsite.dk) (130.225.247.88) by sunsite.dk with SMTP; 12 Sep 2004 03:25:55 -0000 Received: (qmail 91544 invoked from network); 12 Sep 2004 03:24:56 -0000 Received: from acolyte.scowler.net (216.254.112.45) by a.mx.sunsite.dk with SMTP; 12 Sep 2004 03:24:54 -0000 Received: by acolyte.scowler.net (Postfix, from userid 1000) id B2BA57004C; Sat, 11 Sep 2004 23:24:58 -0400 (EDT) Date: Sat, 11 Sep 2004 23:24:58 -0400 From: Clint Adams To: zsh-workers@sunsite.dk Cc: 271196-submitter@bugs.debian.org, 271196-forwarded@bugs.debian.org Subject: Re: [joshk@triplehelix.org: Bug#271196: makefile completion catches some delayed expansions as targets] Message-ID: <20040912032458.GA20842@scowler.net> References: <20040911231628.GA17128@scowler.net> <20040911233227.GA17389@scowler.net> <20040911234745.GA17562@scowler.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20040911234745.GA17562@scowler.net> User-Agent: Mutt/1.5.6+20040722i X-Spam-Checker-Version: SpamAssassin 2.63 on a.mx.sunsite.dk X-Spam-Level: X-Spam-Status: No, hits=0.0 required=6.0 tests=none autolearn=no version=2.63 X-Spam-Hits: 0.0 > And only under certain locales. This avoids what might be a gawk bug by not using awk. Should we move toward 20277 instead? Index: Completion/Unix/Command/_make =================================================================== RCS file: /cvsroot/zsh/zsh/Completion/Unix/Command/_make,v retrieving revision 1.8 diff -u -r1.8 _make --- Completion/Unix/Command/_make 21 Aug 2004 03:07:01 -0000 1.8 +++ Completion/Unix/Command/_make 12 Sep 2004 03:17:25 -0000 @@ -1,6 +1,6 @@ #compdef make gmake pmake dmake -local prev="$words[CURRENT-1]" file expl tmp is_gnu cmdargs useperl +local prev="$words[CURRENT-1]" file expl tmp is_gnu useperl zstyle -t ":completion:${curcontext}:" use-perl && useperl=1 _pick_variant -r is_gnu gnu=GNU unix -v -f @@ -27,11 +27,10 @@ if [[ $is_gnu = gnu ]] && zstyle -t ":completion:${curcontext}:targets" call-command; then if [[ -n $useperl ]]; then - cmdargs=(perl -ne '/^([a-zA-Z0-9][^\/\t=]+):([^=]|$)/ && print "$1\n"') + tmp=( $(_call_program targets "$words[1]" -nsp --no-print-directory -f "$file" .PHONY 2> /dev/null | perl -ne '/^([a-zA-Z0-9][^\/\t=]+):([^=]|$)/ && print "$1\n"') ) else - cmdargs=(awk '/^[a-zA-Z0-9][^\/\t=]+:([^=]|$)/ {print $1}' FS=:) + tmp=(${${(M)${(f)"$(_call_program targets "$words[1]" -nsp --no-print-directory -f /tmp/rules .PHONY 2>/dev/null)"}:#[a-zA-Z0-9][^/\t=]##:([^=]*|(#e))}%:*}) fi - tmp=( $(_call_program targets "$words[1]" -nsp --no-print-directory -f "$file" .PHONY 2> /dev/null | $cmdargs) ) elif [[ -n $useperl ]]; then tmp=( $(perl -ne '/^([a-zA-Z0-9][^\/\t=]+):([^=]|$)/ and print "$1\n"; @@ -42,11 +41,9 @@ ' $file) ) else - tmp=( - $(awk '/^[a-zA-Z0-9][^\/\t=]+:([^=]|$)/ {print $1} - /^\.include */ || /^\.include *".*mk\/bsd\.pkg\.(subdir\.)?mk"/ { - print "fetch fetch-list extract patch configure build install reinstall deinstall package describe checkpatch checksum makesum" }' \ - FS=: $file) + tmp=( ${${(M)${(f)"$(<$file)"}:#[a-zA-Z0-9][^/\t=]##:([^=]*|(#e))}%:*} + $(grep -E '^\.include *(|".*mk\/bsd\.pkg\.(subdir\.)?mk")' $file >/dev/null && + print "fetch fetch-list extract patch configure build install reinstall deinstall package describe checkpatch checksum makesum" ) ) fi _wanted targets expl 'make target' compadd -a tmp && return 0