From: "Bart Schaefer" <schaefer@candle.brasslantern.com>
To: Anthony Heading <aheading@jpmorgan.com>
Cc: zsh-workers@math.gatech.edu
Subject: Re: Tag functions with shell options?
Date: Tue, 2 Jul 1996 14:31:10 -0700 [thread overview]
Message-ID: <960702143114.ZM5210@candle.brasslantern.com> (raw)
In-Reply-To: Anthony Heading <aheading@jpmorgan.com> "Re: Tag functions with shell options?" (Jul 2, 8:53pm)
On Jul 2, 8:53pm, Anthony Heading wrote:
} Subject: Re: Tag functions with shell options?
}
} The lack of context was sort-of deliberate, since I
} suspected any interest would be in the wider picture, rather than my
} particular petty problems. It seemed simply an example of something
} it would be nice to support elegantly.
This introduces a whole class of problems, which is most obvious in the
case when you *do not* know the names of the functions that should have
their local options (or whatever) changed. In that case you almost end
up needing something like Perl's "package", so that you can do e.g.:
package admin
. /etc/profile
for f in $(whence -FP admin)
do
typeset -fo ${f}=(shwordsplit globassign bsdecho nobgnice);;
done
Where I'm assuming a slew of new features:
1. `package foo' groups all functions, aliases, etc. in the package
named `foo' until the next `package' is executed
2. `whence -F' lists the names (but NOT definitions) of functions
[Aside: Why doesn't `typeset +f' do that already?]
3. `whence -P foo' lists from the package `foo'
4. `typeset -o' is equivalent to `setopt' (and `+o' to `unsetopt')
5. `typeset -fo foo=(options...)' sets local options for `foo', as
if `foo' began with `setopt localoptions options...'
6. Zoltan's (or was it Zefram's?) change to make `setopt nofoo' be
equivalent to `unsetopt foo'
} > it seems to me that a much simpler implementation of sws_fn is:
} [wrapping the function, and then aliasing the wrapper to the original]
}
} > The only drawback to this is that other functions that may already have
} > been defined won't see the alias -- but presumably those functions will
} > themselves be given the sws_fn treatment, so it's moot.
}
} Hmm. Don't understand the first point, but I'll experiment.
Example:
yfn () {
echo Y
}
zfn () {
echo Z
}
xfn1 () {
yfn
}
alias yfn=zfn
xfn2 () {
yfn
}
Now:
zsh% xfn1
Y
zsh% xfn2
Z
Because the alias for yfn was introduced *after* xfn1 was defined, xfn1
still references the "real" yfn, rather than the alias. The presumption
is that if you're going to use
sws_fn yfn
Then you are also going to use
sws_fn xfn1
sws_fn xfn2
So that it doesn't matter what "yfn" means inside of xfn*.
--
Bart Schaefer Brass Lantern Enterprises
http://www.well.com/user/barts http://www.nbn.com/people/lantern
New male in /home/schaefer:
>N 2 Justin William Schaefer Sat May 11 03:43 53/4040 "Happy Birthday"
next prev parent reply other threads:[~1996-07-02 21:36 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
1996-07-02 12:05 Anthony Heading
1996-07-02 13:36 ` Zefram
1996-07-02 14:12 ` Anthony Heading
1996-07-02 15:17 ` Zefram
1996-07-02 15:37 ` Peter Stephenson
1996-07-02 16:57 ` Anthony Heading
1996-07-02 19:07 ` Bart Schaefer
1996-07-02 19:53 ` Anthony Heading
1996-07-02 21:31 ` Bart Schaefer [this message]
1996-07-02 22:27 ` Anthony Heading
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=960702143114.ZM5210@candle.brasslantern.com \
--to=schaefer@candle.brasslantern.com \
--cc=aheading@jpmorgan.com \
--cc=schaefer@nbn.com \
--cc=zsh-workers@math.gatech.edu \
/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).