zsh-workers
 help / color / mirror / code / Atom feed
From: Bart Schaefer <schaefer@brasslantern.com>
To: Zsh hackers list <zsh-workers@zsh.org>
Subject: Re: PATCH: function copy
Date: Mon, 15 Jul 2019 14:42:28 -0700	[thread overview]
Message-ID: <CAH+w=7b=AaS1s6_v8hBp6gqrJvY4ST28-XW85+qvK2sqoBojDg@mail.gmail.com> (raw)
In-Reply-To: <b80d50af30a0e94f5335d3deeb2bd7d4594ba112.camel@ntlworld.com>

On Mon, Jul 15, 2019 at 1:00 PM Peter Stephenson
<p.w.stephenson@ntlworld.com> 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).

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.

  parent reply	other threads:[~2019-07-15 21:43 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-07-15 20:00 Peter Stephenson
2019-07-15 20:23 ` Sebastian Gniazdowski
2019-07-15 21:25   ` Peter Stephenson
2019-07-15 21:42 ` Bart Schaefer [this message]
2019-07-15 21:51   ` Sebastian Gniazdowski
2019-07-15 22:08     ` Bart Schaefer
2019-07-16  8:56   ` Peter Stephenson
2019-07-16 16:55     ` Philippe Troin
2019-07-16 19:06     ` Bart Schaefer
2019-07-16 19:11       ` Bart Schaefer
2019-08-03 18:58 ` Peter Stephenson

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='CAH+w=7b=AaS1s6_v8hBp6gqrJvY4ST28-XW85+qvK2sqoBojDg@mail.gmail.com' \
    --to=schaefer@brasslantern.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).