Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: PATCH: function copy
- X-seq: zsh-workers 44545
- From: Peter Stephenson <p.stephenson@xxxxxxxxxxx>
- To: <zsh-workers@xxxxxxx>
- Subject: Re: PATCH: function copy
- Date: Tue, 16 Jul 2019 09:56:13 +0100
- Cms-type: 201P
- Dkim-filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20190716085616euoutp0223ee2e931f8336b83726d584125328bc~x12V2WeUr1852518525euoutp02B
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1563267376; bh=L+KB/wvH4JUVDBAQ1bhZG/BUs/QnJxLh+IiOjjY+54Y=; h=Subject:From:To:Date:In-Reply-To:References:From; b=WKarnpzbabt1V4hP0NGl852GwIbafkkuzP3DJHcqf9FGnZi2QQKBlJOwLjeG+E91n S9TIJiG3IcLMLxm7XMddfWrirtbli6a5g8SkXtvDflE4oLfUvt5tdP9rIWG65e1LuZ cBqHZKduXVOmILGqP8HWGS/hkNZuZe2U7MyZ2oMQ=
- In-reply-to: <CAH+w=7b=AaS1s6_v8hBp6gqrJvY4ST28-XW85+qvK2sqoBojDg@mail.gmail.com>
- List-help: <mailto:zsh-workers-help@zsh.org>
- List-id: Zsh Workers List <zsh-workers.zsh.org>
- List-post: <mailto:zsh-workers@zsh.org>
- List-unsubscribe: <mailto:zsh-workers-unsubscribe@zsh.org>
- Mailing-list: contact zsh-workers-help@xxxxxxx; run by ezmlm
- References: <b80d50af30a0e94f5335d3deeb2bd7d4594ba112.camel@ntlworld.com> <CGME20190715214328epcas2p153c44d86e62004db0d2bc67fc6ad5a66@epcas2p1.samsung.com> <CAH+w=7b=AaS1s6_v8hBp6gqrJvY4ST28-XW85+qvK2sqoBojDg@mail.gmail.com>
On Mon, 2019-07-15 at 14:42 -0700, Bart Schaefer wrote:
> On Mon, Jul 15, 2019 at 1:00 PM Peter Stephenson
> <p.w.stephenson@xxxxxxxxxxxx> wrote:
> >
> >
> > I've had this lying around for a while, wondering if there's more to it,
> > but I can't think of it.
> >
> > The point is that it's very easy internally to provide an interface to
> > tweak standard functions to add arbitrary code before and after --- we
> > have most of the support for this internally, and just lack the means to
> > add a different name for a function, which this adds.
> Emacs calls this "advice" and allows before/around/after variations
> which can be added without having to redefine the existing function.
> I have a half-finished (that may be optimistic) module to provide this
> for ZLE widgets. Handling the before/after is not too bad, but for
> "around" you need a way to say "call the original function HERE" which
> you can then embed in another function that becomes the "around" (and
> which is called in place of the original everywhere except HERE).
That's basically what I showed in my example.
functions -c _std_fn _my_fn
_std_fn() {
# do stuff here
_my_fn "$@"
# do stuff here
}
I think you're implying you'd rather not have an additional function
name to deal with, i.e. the HERE is indicated in some other fashion.
That's quite hard to fit into zsh syntax.
> The other thing that would be really helpful in order to do it "your
> way" would be local functions, so that when the calling context exits,
> _std_fn reverts to its old definition and _my_fn disappears. Hacking
> this by making the entire $functions array local is error-prone.
That's another feature that's also quite bug-prone to implement ---
we've had a zillion problems just with local variables which have
been there for ages --- but at least if it's internal it's just
a single implementation.
pws
Messages sorted by:
Reverse Date,
Date,
Thread,
Author