zsh-workers
 help / color / mirror / code / Atom feed
From: Bart Schaefer <schaefer@zanshin.com>
To: Zsh hackers list <zsh-workers@sunsite.dk>
Subject: Re: PATCH: `try' syntax
Date: Tue, 15 Jun 2004 13:21:25 -0700 (PDT)	[thread overview]
Message-ID: <Pine.LNX.4.44.0406151254190.29762-100000@toltec.zanshin.com> (raw)
In-Reply-To: <200406151333.i5FDX275000620@news01.csr.com>

On Tue, 15 Jun 2004, Oliver Kiddle wrote:

> Bart wrote:
> > * Rather than putting colons or some other unlikely character in front
> > of the name, use plain words and start with them "disable"d, so that
> > in order to use this syntax one must first "enable -r try always
> > tried".  (This technique could apply to other extension syntax as
> > well.)
> 
> That would be quite a good way of handling it. My main reservation
> concerns the fact that it isn't possible to make the enabled/disabled
> state of builtins local.

Hmm, good point.  You'd have to do something like

	enable try always tried
	try
          # ...
        always
	  disable try always tried
        tried

(which should work, because the entire "try ... tried" must be parsed
before the disable executes), but one would also have to store the initial
state of the keywords and then test whether to disable them.

> Consider _approximate. It'd be nice to use a try/always block to do the
> job currently performed by a trap to unfunction compadd. So how do you
> enable try and always but restore their original state when completion
> exits.

Maybe the "enable" command should have a -L option like "emulate", that
works like "setopt localoptions".  There could even be an option for it,
"localenable".  (This begs the question of whether "localdisable" is a
synonym or ...)

> It's possible using the parameters module but would get fairly messy.

Hmm ... wouldn't

	local -a +h reswords dis_reswords

cover all possible cases?  (Hmm, again; no, it seems it does not, because
either the values aren't restored and/or assigning to these arrays doesn't
accomplish enable/disable.  Odd, but oh, well.)

On Tue, 15 Jun 2004, Peter Stephenson wrote:

> Bart Schaefer wrote:
> > * A "shortloops" form "try { ... }" might be nice, or maybe should be the
> > only form.
> 
> It's rather nonstandard.

So is the whole "try" concept, at least for shells.

> Oliver wrote:
> > Or, thinking along those lines, you could use something like
> > { ... } always { ... }
> > That currently finds a syntax error at always.
> 
> Syntactically, it's still a bit tricky.  Either `always' is a keyword,
> or it isn't.

Not unprecedented; "in" behaves like a keyword in certain positions, but
is not one.

> The other part is that we don't know till we get to the `always'
> whether there is an always present.  Possibly it could just be
> tacked onto ordinary current-shell structures.

In the case of "in" there's always an introducer ("case", "for", etc.),
which would argue for leaving the "try" somewhere.

On a different tangent, maybe the whole thing should parse more like
"coproc" does, and perhaps "always" should be replaced with something
like the ";&" from "case".

> As things stand I'm not sure I'm going to have any free time before
> 2008, but if I do is this worth trying?  (In other words, is it
> reasonably agreeable to everyone interested?)

It's definitely getting close.


  reply	other threads:[~2004-06-15 20:21 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-06-14 11:23 Peter Stephenson
2004-06-14 12:58 ` Oliver Kiddle
2004-06-14 13:52   ` Peter Stephenson
2004-06-14 16:55     ` Oliver Kiddle
2004-06-14 17:27       ` Peter Stephenson
2004-06-14 18:14       ` Bart Schaefer
2004-06-15 10:31         ` Oliver Kiddle
2004-06-15 10:51         ` DervishD
2004-06-15 13:33         ` Peter Stephenson
2004-06-15 20:21           ` Bart Schaefer [this message]
2004-06-16 14:33             ` Oliver Kiddle
2004-06-16 17:21               ` Bart Schaefer
2004-06-18 11:05                 ` PATCH: second go at `always' blocks 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=Pine.LNX.4.44.0406151254190.29762-100000@toltec.zanshin.com \
    --to=schaefer@zanshin.com \
    --cc=zsh-workers@sunsite.dk \
    /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).