help / color / mirror / code / Atom feed
From: Roman Perepelitsa <roman.perepelitsa@gmail.com>
To: Daniel Shahaf <d.s@daniel.shahaf.name>
Cc: Zsh Users <zsh-users@zsh.org>
Subject: Re: Disabling null elision (was: Re: Most Recent File)
Date: Mon, 25 Oct 2021 22:02:31 +0200	[thread overview]
Message-ID: <CAN=4vMpZbLxe4navMTjRaKxogemJqnqcre6NuK3v8V6xVgCzRg@mail.gmail.com> (raw)
In-Reply-To: <20211025194508.GB8612@tarpaulin.shahaf.local2>

On Mon, Oct 25, 2021 at 9:45 PM Daniel Shahaf <d.s@daniel.shahaf.name> wrote:
> Roman Perepelitsa wrote on Sun, Oct 24, 2021 at 09:22:46 +0200:
> > > It's one of the nice things about zsh that you can use the shorter
> > $foo and $#foo instead of "${foo[@]}" and ${#foo[@]}. I wish there was
> > an option to disable null elision with a corresponding expansion flag
> > to turn it on similar to no_sh_word_split and ${(=)name}
> I'm in two minds about this.
> On the one hand, null elision breaks the principle of least surprise —
> both in reference to other programming languages, and in reference to
> SH_WORD_SPLIT's default behaviour being the unlike-Bourne-shell
> behaviour.
> On the other hand, making it on by default would be backwards
> incompatible, and making it off by default would mean there's yet
> another syntax-changing option for everyone to keep in mind when they
> review random autoloaded functions' code.

How about a two-step approach with the possibility of stopping after the first?

Step 1: Add an option to disable null elision. Off by default.
Step 2: Make this option the default in native mode.

I would be 99% satisfied with step 1. I would be less satisfied if
step 2 was implemented because I hate when my scripts break. Granted,
even step 1 will break "plugins" that attempt to work with any options
but at least it won't break executable scripts. It's also nice that
this option would affect parsing, only evaluation, so it won't be
necessary to care about it when defining functions.

I do get your point about the difficulty of reading plugins when you
have to keep in mind all possible options that the code can be
evaluated with (how many plugins work with no_glob? mine don't). I
still think it's worth it to have *this* option. Dropping all those
quotes would remove noise from code and make comprehension easier. I
realise that few users would benefit from this. Not many write zsh
scripts to begin with and a small number of those would enable a new


  reply	other threads:[~2021-10-25 20:03 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-23 16:15 Most Recent File Vin Shelton
2021-10-23 16:43 ` Dominik Vogt
2021-10-23 16:58   ` Peter Stephenson
2021-10-23 17:24     ` Dominik Vogt
2021-10-23 17:32       ` Peter Stephenson
2021-10-23 18:39         ` Bart Schaefer
2021-10-23 19:07         ` Vin Shelton
2021-10-23 19:26           ` Bart Schaefer
2021-10-23 20:43             ` Vin Shelton
2021-10-23 20:56               ` Pier Paolo Grassi
2021-10-23 22:42                 ` Bart Schaefer
2021-10-24  0:24                   ` Pier Paolo Grassi
2021-10-24  0:32                     ` Paul
2021-10-24  1:45                       ` Dominik Vogt
2021-10-24  7:22                         ` Roman Perepelitsa
2021-10-25 19:45                           ` Disabling null elision (was: Re: Most Recent File) Daniel Shahaf
2021-10-25 20:02                             ` Roman Perepelitsa [this message]
2021-10-25 20:41                               ` Daniel Shahaf
2021-10-25 21:00                                 ` Ray Andrews
2021-10-25 21:09                                   ` Bart Schaefer
2021-10-25 21:05                                 ` Bart Schaefer
2021-10-25 21:20                                 ` Roman Perepelitsa
2021-10-25 20:05                             ` Bart Schaefer
2021-10-24  1:37                     ` Most Recent File Dominik Vogt
2021-10-23 16:47 ` david rayner
2021-10-23 16:54   ` Vin Shelton
2021-10-23 16:51 ` david rayner

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:

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAN=4vMpZbLxe4navMTjRaKxogemJqnqcre6NuK3v8V6xVgCzRg@mail.gmail.com' \
    --to=roman.perepelitsa@gmail.com \
    --cc=d.s@daniel.shahaf.name \
    --cc=zsh-users@zsh.org \


* 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


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).