zsh-workers
 help / color / mirror / code / Atom feed
From: Peter Stephenson <p.stephenson@samsung.com>
To: <zsh-workers@zsh.org>
Subject: Re: PATCH: function copy
Date: Tue, 16 Jul 2019 09:56:13 +0100	[thread overview]
Message-ID: <1563267373.6702.5.camel@samsung.com> (raw)
In-Reply-To: <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@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).

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



  parent reply	other threads:[~2019-07-16  8:57 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
2019-07-15 21:51   ` Sebastian Gniazdowski
2019-07-15 22:08     ` Bart Schaefer
2019-07-16  8:56   ` Peter Stephenson [this message]
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=1563267373.6702.5.camel@samsung.com \
    --to=p.stephenson@samsung.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).