Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: BUG: locals remove setopt autonamedirs
- X-seq: zsh-workers 54328
- From: Philippe Altherr <philippe.altherr@xxxxxxxxx>
- To: zsh-workers@xxxxxxx
- Subject: Re: BUG: locals remove setopt autonamedirs
- Date: Sat, 11 Apr 2026 00:59:53 +0200
- Arc-authentication-results: i=1; mx.google.com; arc=none
- Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=m/k1mfJYdnUcNv8p9kjVZMMBKkBM5NHA4b1JMwkrAHo=; fh=SbTlPuNNxBzTkRlwWtqw/TXBY0HvGvtE97RpPp3sJPM=; b=lkECzw3NCo+ZIiH+8++xcU3fdPdcfQyc9gHnmZyTMrf6Szj0MvUxdm7va/3PRNckSJ +a/bNlYQ9Rd5xdwDN/mbrsYl3bNDvcLRgQrxPxKmvplENVdp+LZab48x0kXeG8MTytch s2XwXoqjZR8OmPzhaIPg7QtkLViZFj/xJxmraiIm8IkNSmW4j1xonJeBRLG3qXqyObZR EbPZuu9+tuAf3iRQMlthwGUWLtedtwnTbfBGT9qRkxBwUIRqIVO5PMS5uowQVI+JiOV2 nG8ccQGqOGyoVMOiijCoteers+OS+tYYjz1cbmsF3F44cFYo4rku/qlLbtTk6WV3NaDA 5/Ew==; darn=zsh.org
- Arc-seal: i=1; a=rsa-sha256; t=1775862004; cv=none; d=google.com; s=arc-20240605; b=kDYv4bWflukMSTvMdOu1NWtM2QBr4KIlmeZmUh7429BfgTJX31b2iN9PJEAD9YPrUy t210MQHi8Ye6ms+zQR1A0dasenLd1t4lBSB3BBOr7U8hUZuZa0QEYkNAUNkFmNTkpjRp LP4pqaW+EewhkMizaoUfYSi1qcIRZfUa4+YSmOuvPhi2ODS1ab8Fj5jjnWvfhLmUqOw3 eJHD6xglkN9J1LC5HV6H3rXOt7aXNguVBHHi1zFW+dvl412fe3FLmx49Ry4cO0wpDLwQ l+wy3/mMz2BDz3+ZbbaXM1P270ETEHF9FwfEfmnnKvvqWbTWWkxCUxELHBcXZb3zYZ2g hsRg==
- Archived-at: <https://zsh.org/workers/54328>
- In-reply-to: <CAGdYchsa3q+cGW1JBHZ8_fC9WxdRByzqeRuxddNeWX0TUED+oQ@mail.gmail.com>
- List-id: <zsh-workers.zsh.org>
- References: <CAKiz1a_8twDjS7PdLDBfeWbk3VnhQkjg5vDcr-HUtpHw67AKBQ@mail.gmail.com> <CAH+w=7aFZSbPHHcWMmNzUWUjtFD9-SkPj5z9a7QARJqzzepbYQ@mail.gmail.com> <CAKiz1a9TG5u4LDd7BbLBVj3Pw3MOAmj6OUe65xt1nLPsgEEu2A@mail.gmail.com> <CAHYJk3QTffbmgHZrtN6RBH7rDJ5nzND=kW7DOreA0aKVp-FooQ@mail.gmail.com> <CAGdYchtOPsn0=71A4frqopNyRU4m35izZWzttNqceXpsRTLpeQ@mail.gmail.com> <CAKiz1a9x32U_Z_EgZ6t_oKOHWv_xAdPfBx1UONR-TRE0ruqciQ@mail.gmail.com> <CAGdYchsa3q+cGW1JBHZ8_fC9WxdRByzqeRuxddNeWX0TUED+oQ@mail.gmail.com>
Here is a patch that restricts AND to global parameters that doesn't depend on
workers/54299:
Philippe
diff --git a/Doc/Zsh/options.yo b/Doc/Zsh/options.yo
index a7e862c70..85bf0b28a 100644
--- a/Doc/Zsh/options.yo
+++ b/Doc/Zsh/options.yo
@@ -240,7 +240,7 @@ pindex(AUTONAMEDIRS)
pindex(NOAUTONAMEDIRS)
cindex(directories, named)
item(tt(AUTO_NAME_DIRS))(
-Any parameter that is set to the absolute name of a directory
+Any global parameter that is set to the absolute name of a directory
immediately becomes a name for that directory, that will be used
by the `tt(%~)'
and related prompt sequences, and will be available when completion
diff --git a/Src/params.c b/Src/params.c
index 461e02acf..d29481923 100644
--- a/Src/params.c
+++ b/Src/params.c
@@ -2783,7 +2783,7 @@ assignstrvalue(Value v, char *val, int flags)
* overwriting bytes in already allocated string */
memcpy(z + v->start, val, vlen);
/* Implement remainder of strsetfn */
- if (!(pm->node.flags & PM_HASHELEM) &&
+ if (!(pm->node.flags & PM_HASHELEM) && !pm->level &&
((pm->node.flags & PM_NAMEDDIR) ||
isset(AUTONAMEDIRS))) {
pm->node.flags |= PM_NAMEDDIR;
@@ -3940,11 +3940,6 @@ unsetparam_pm(Param pm, int altflag, int exp)
if (pm->old) {
oldpm = pm->old;
paramtab->addnode(paramtab, oldpm->node.nam, oldpm);
- if ((PM_TYPE(oldpm->node.flags) == PM_SCALAR) &&
- !(pm->node.flags & PM_HASHELEM) &&
- (oldpm->node.flags & PM_NAMEDDIR) &&
- oldpm->gsu.s == &stdscalar_gsu)
- adduserdir(oldpm->node.nam, oldpm->u.str, 0, 0);
if (oldpm->node.flags & PM_EXPORTED) {
/*
* Re-export the old value which we removed in typeset_single().
@@ -4061,7 +4056,7 @@ strsetfn(Param pm, char *x)
{
zsfree(pm->u.str);
pm->u.str = x;
- if (!(pm->node.flags & PM_HASHELEM) &&
+ if (!(pm->node.flags & PM_HASHELEM) && !pm->level &&
((pm->node.flags & PM_NAMEDDIR) || isset(AUTONAMEDIRS))) {
pm->node.flags |= PM_NAMEDDIR;
adduserdir(pm->node.nam, x, 0, 0);
diff --git a/Src/utils.c b/Src/utils.c
index a1d7c8cc2..eb48e2b0f 100644
--- a/Src/utils.c
+++ b/Src/utils.c
@@ -1257,7 +1257,7 @@ getnameddir(char *name)
/* Check if there is a scalar parameter with this name whose value *
* begins with a `/'. If there is, add it to the hash table and *
* return the new value. */
- if ((pm = (Param) paramtab->getnode(paramtab, name)) &&
+ if ((pm = (Param) paramtab->getnode(paramtab, name)) && !pm->level &&
(PM_TYPE(pm->node.flags) == PM_SCALAR) &&
(str = getsparam(name)) && *str == '/') {
pm->node.flags |= PM_NAMEDDIR;
Messages sorted by:
Reverse Date,
Date,
Thread,
Author