From: Mikael Magnusson <mikachu@gmail.com>
To: zsh-workers@zsh.org
Subject: PATCH: _make: put body in _make() and don't redefine helpers every time
Date: Tue, 24 May 2011 03:38:33 +0200 [thread overview]
Message-ID: <1306201113-26434-1-git-send-email-mikachu@gmail.com> (raw)
In-Reply-To: <BANLkTikky8dzzE9U_JOjyq__aU1JeCw3cw@mail.gmail.com>
Here's the diff without reindent, full patch below.
+++ b/Completion/Unix/Command/_make
@@ -3,10 +3,6 @@
# TODO: Based on targets given on the command line, show only variables that
# are used in those targets and their dependencies.
-local prev="$words[CURRENT-1]" file expl tmp is_gnu dir incl match
-local -A TARGETS VARIABLES
-local ret=1
-
_make-expandVars() {
local open close var val front ret tmp=$1
@@ -149,6 +145,11 @@ _make-findBasedir () {
print -- $basedir
}
+_make () {
+ local prev="$words[CURRENT-1]" file expl tmp is_gnu dir incl match
+ local -A TARGETS VARIABLES
+ local ret=1
+
_pick_variant -r is_gnu gnu=GNU unix -v -f
if [[ $is_gnu == gnu ]]
@@ -223,3 +224,6 @@ else
fi
return ret
+}
+
+_make "$@"
---
Completion/Unix/Command/_make | 136 +++++++++++++++++++++--------------------
1 files changed, 70 insertions(+), 66 deletions(-)
diff --git a/Completion/Unix/Command/_make b/Completion/Unix/Command/_make
index 322414b..09f44a3 100644
--- a/Completion/Unix/Command/_make
+++ b/Completion/Unix/Command/_make
@@ -3,10 +3,6 @@
# TODO: Based on targets given on the command line, show only variables that
# are used in those targets and their dependencies.
-local prev="$words[CURRENT-1]" file expl tmp is_gnu dir incl match
-local -A TARGETS VARIABLES
-local ret=1
-
_make-expandVars() {
local open close var val front ret tmp=$1
@@ -149,77 +145,85 @@ _make-findBasedir () {
print -- $basedir
}
-_pick_variant -r is_gnu gnu=GNU unix -v -f
-
-if [[ $is_gnu == gnu ]]
-then
- incl="(-|)include"
-else
- incl=.include
-fi
-
-if [[ "$prev" == -[CI] ]]
-then
- _files -W ${(q)$(_make-findBasedir ${words[1,CURRENT-1]})} -/ && ret=0
-elif [[ "$prev" == -[foW] ]]
-then
- _files -W ${(q)$(_make-findBasedir $words)} && ret=0
-else
- file="$words[(I)-f]"
- if (( file ))
+_make () {
+ local prev="$words[CURRENT-1]" file expl tmp is_gnu dir incl match
+ local -A TARGETS VARIABLES
+ local ret=1
+
+ _pick_variant -r is_gnu gnu=GNU unix -v -f
+
+ if [[ $is_gnu == gnu ]]
then
- file=${~words[file+1]}
- [[ $file == [^/]* ]] && file=${(q)$(_make-findBasedir $words)}/$file
- [[ -r $file ]] || file=
+ incl="(-|)include"
else
- local basedir
- basedir=${(q)$(_make-findBasedir $words)}
- if [[ $is_gnu == gnu && -r $basedir/GNUmakefile ]]
- then
- file=$basedir/GNUmakefile
- elif [[ -r $basedir/makefile ]]
- then
- file=$basedir/makefile
- elif [[ -r $basedir/Makefile ]]
+ incl=.include
+ fi
+
+ if [[ "$prev" == -[CI] ]]
+ then
+ _files -W ${(q)$(_make-findBasedir ${words[1,CURRENT-1]})} -/ && ret=0
+ elif [[ "$prev" == -[foW] ]]
+ then
+ _files -W ${(q)$(_make-findBasedir $words)} && ret=0
+ else
+ file="$words[(I)-f]"
+ if (( file ))
then
- file=$basedir/Makefile
+ file=${~words[file+1]}
+ [[ $file == [^/]* ]] && file=${(q)$(_make-findBasedir $words)}/$file
+ [[ -r $file ]] || file=
else
- file=''
+ local basedir
+ basedir=${(q)$(_make-findBasedir $words)}
+ if [[ $is_gnu == gnu && -r $basedir/GNUmakefile ]]
+ then
+ file=$basedir/GNUmakefile
+ elif [[ -r $basedir/makefile ]]
+ then
+ file=$basedir/makefile
+ elif [[ -r $basedir/Makefile ]]
+ then
+ file=$basedir/Makefile
+ else
+ file=''
+ fi
fi
- fi
- if [[ -n "$file" ]]
- then
- if [[ $is_gnu == gnu ]] && zstyle -t ":completion:${curcontext}:targets" call-command
+ if [[ -n "$file" ]]
+ then
+ if [[ $is_gnu == gnu ]] && zstyle -t ":completion:${curcontext}:targets" call-command
+ then
+ _make-parseMakefile $PWD < <(_call_program targets "$words[1]" -nsp --no-print-directory -f "$file" .PHONY 2> /dev/null)
+ else
+ case "$OSTYPE" in
+ freebsd*)
+ _make-parseMakefile $PWD < <(_call_program targets "$words[1]" -nsp -f "$file" .PHONY 2> /dev/null)
+ ;;
+ *)
+ _make-parseMakefile $PWD < $file
+ esac
+ fi
+ fi
+
+ if [[ $PREFIX == *'='* ]]
then
- _make-parseMakefile $PWD < <(_call_program targets "$words[1]" -nsp --no-print-directory -f "$file" .PHONY 2> /dev/null)
+ # Complete make variable as if shell variable
+ compstate[parameter]="${PREFIX%%\=*}"
+ compset -P 1 '*='
+ _value "$@" && ret=0
else
- case "$OSTYPE" in
- freebsd*)
- _make-parseMakefile $PWD < <(_call_program targets "$words[1]" -nsp -f "$file" .PHONY 2> /dev/null)
- ;;
- *)
- _make-parseMakefile $PWD < $file
- esac
+ _tags targets variables
+ while _tags
+ do
+ _requested targets expl 'make targets' \
+ compadd -- ${(k)TARGETS} && ret=0
+ _requested variables expl 'make variables' \
+ compadd -S '=' -- ${(k)VARIABLES} && ret=0
+ done
fi
fi
- if [[ $PREFIX == *'='* ]]
- then
- # Complete make variable as if shell variable
- compstate[parameter]="${PREFIX%%\=*}"
- compset -P 1 '*='
- _value "$@" && ret=0
- else
- _tags targets variables
- while _tags
- do
- _requested targets expl 'make targets' \
- compadd -- ${(k)TARGETS} && ret=0
- _requested variables expl 'make variables' \
- compadd -S '=' -- ${(k)VARIABLES} && ret=0
- done
- fi
-fi
+ return ret
+}
-return ret
+_make "$@"
--
1.7.4-rc1
prev parent reply other threads:[~2011-05-24 1:38 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-21 18:03 _make doesn't work in dirs with spaces Mikael Magnusson
2011-05-23 1:10 ` Bart Schaefer
2011-05-24 1:36 ` Mikael Magnusson
2011-05-24 1:38 ` Mikael Magnusson [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1306201113-26434-1-git-send-email-mikachu@gmail.com \
--to=mikachu@gmail.com \
--cc=zsh-workers@zsh.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).