Subject: Re: [PATCH v2 2/3] Fix the ':A' word modifier on paths with '..' components.
From: Daniel Shahaf <[email-masked]>
To: Mikael Magnusson <[email-masked]>
Cc: [email-masked]
Date: Mon, 27 Jun 2016 00:20:31 +0000
List-Id: Zsh Workers List <zsh-workers.zsh.org>

Mikael Magnusson wrote on Sat, Jun 25, 2016 at 18:47:58 +0200:
> On Sat, Jun 25, 2016 at 6:28 PM, Daniel Shahaf <[email-masked]> wrote:
> > Mikael Magnusson wrote on Tue, Jun 21, 2016 at 05:08:16 +0200:
> >> On Tue, Jun 21, 2016 at 3:53 AM, Daniel Shahaf <[email-masked]> wrote:
> >> > The fix is to stop calling chabspath() at the top of chrealpath().
> >> >
> >> > Preserve the old behaviour when CHASE_DOTS is set.
> >>
> >> I think this is backwards, cd symlink/.. gets you to the current dir
> >> if chasedots is unset, and to wherever symlink points' parent
> >> directory when it is set.
> >
> > True.
> >
> > However, I don't want to just flip the condition (change "if isset()" to
> > "if unset()") since I think the new behaviour (resolving symlinks before
> > '..' components) should be the default for :A.
> >
> > So how about adding a new option and having chrealpath() use the new
> > behaviour if the new option is at its default value, and the old
> > (':a'-ish) behaviour otherwise?
> 
> That sounds pretty pointless, you would still break existing scripts,

Yes, that's the whole point: I think the "new" semantics should be the
default.

> and make everyone have to versioncheck to see if they have to enable
> an option or not.

No version check is needed, people can change foo:A to foo:a:A or do

    setopt colonA_please_be_compatible_with_fivedottwo 2>/dev/null || true

once at the top.