Zsh Mailing List Archive
Messages sorted by:
Re: PATCH: function copy
- X-seq: zsh-workers 44537
- From: Bart Schaefer <schaefer@xxxxxxxxxxxxxxxx>
- To: Zsh hackers list <zsh-workers@xxxxxxx>
- Subject: Re: PATCH: function copy
- Date: Mon, 15 Jul 2019 14:42:28 -0700
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=brasslantern-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=JvjUA+yRUWndXO6orK1ACKMLfBZn/1XCeoobv+oJuw8=; b=LgFnDpIH0Vuz7d4cOvvJHmIKVxc86yJ6v2HNCAGm0ifRfYnWA9rth+KQ4Y7wIzSG+b g/t799Hb+XZWTdBDvkKcMhk1QxpwPUZwW/Sw+PMatFlQgvGza6lfsz8MBXPk1p63Db+k gCMWscMfSn2qIdGAOh4+VdYpytgkY07Hm48rMqauYtGBl+H9Jmq97y5iK9fxvOQPwkRr QRZakfZf6jAX/5L0BV5JxLkcBWo4TSfubjUaS1KsMBzNpZaPy4o/Udw8K4Ej0XDHGn73 63rQqfSWgiQFx5qGPE8ZcpKMxkkU7v1DU4Wcd7PbBRTkNnvinOebVzB0jCRmd1aoSugx RopA==
- In-reply-to: <email@example.com>
- List-help: <mailto:firstname.lastname@example.org>
- List-id: Zsh Workers List <zsh-workers.zsh.org>
- List-post: <mailto:email@example.com>
- List-unsubscribe: <mailto:firstname.lastname@example.org>
- Mailing-list: contact zsh-workers-help@xxxxxxx; run by ezmlm
- References: <email@example.com>
On Mon, Jul 15, 2019 at 1:00 PM Peter Stephenson
> 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).
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.
Messages sorted by: