PATCH: hiding of specials and namerefs
Bart Schaefer <[email protected]> Fri, 24 Jul 2026 20:17:47 -0700
| Newsgroups | gmane.comp.shells.zsh.devel |
|---|---|
| Message-ID | <CAH+w=7b1ABbVRAhtxW3iDtnh1g4Ea2mvjndy-aY2qAF-gv=cVA@mail.gmail.com> |
--000000000000acfd89065766ef7b Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sun, Jul 19, 2026 at 1:34=E2=80=AFPM Bart Schaefer <schaefer@brasslanter= n.com> wrote: > > -- `typeset -hn ...` is not allowed, but can be worked around, so > probably should be allowed? > -- the ZLE parameters are already implicitly local on entry to a > widget function, so declaring them local again (even with -h) doesn't > change anything without introducing another scope. Attached patch addresses these. On Wed, Jul 22, 2026 at 4:42=E2=80=AFPM Philippe Altherr <[email protected]> wrote: > > [Regarding the second point above] > > I assume that -h is a rather rarely used flag. It's probably even more ra= rely used in cases where it fails to hide the targeted parameter. So, while= an error changes the behavior, there are probably extremely few existing s= cripts where this would make a difference. On the other hand, while you dev= elop a new script, an error is somewhat more likely to grab your attention. The patch makes this an error, and therefore I've updated the tests after applying workers/55024 (pushed but not yet in ChangeLog). I put the related code in an #if to make it easy to try either variation. On Thu, Jul 23, 2026 at 7:12=E2=80=AFPM Philippe Altherr <[email protected]> wrote: >> >> % typeset -gn SRANDOM >> zsh: invalid variable name: zsh/random > > I have code that fixes this -> changes the error to "SRANDOM: can't chan= ge type of autoloaded parameter". Given that mention, I've stopped short of digging into this myself, this patch does not cover it. --000000000000acfd89065766ef7b Content-Type: text/plain; charset="US-ASCII"; name="hiding-specials-namerefs.txt" Content-Disposition: attachment; filename="hiding-specials-namerefs.txt" Content-Transfer-Encoding: base64 Content-ID: <f_mrzsm98o0> X-Attachment-Id: f_mrzsm98o0 ZGlmZiAtLWdpdCBhL1NyYy9idWlsdGluLmMgYi9TcmMvYnVpbHRpbi5jCmluZGV4IDJlM2U1NzUy YS4uNzlhNzY3OGFiIDEwMDY0NAotLS0gYS9TcmMvYnVpbHRpbi5jCisrKyBiL1NyYy9idWlsdGlu LmMKQEAgLTIyMDksNiArMjIwOSwxNyBAQCB0eXBlc2V0X3NpbmdsZShjaGFyICpjbmFtZSwgY2hh ciAqcG5hbWUsIFBhcmFtIHBtLCBpbnQgZnVuYywKIAkgICAgb24gfD0gUE1fRVhQT1JURUQ7CiAJ Ki8KICAgICB9CisgICAgaWYgKHVzZXBtICYmIChvbiAmIFBNX0hJREUpICYmCisJKHBtLT5ub2Rl LmZsYWdzICYgKFBNX1NQRUNJQUx8UE1fQVVUT0xPQUQpKSAmJgorCXBtLT5sZXZlbCA8PSBsb2Nh bGxldmVsKSB7CisjaWYgMAorCXp3YXJubmFtKGNuYW1lLCAiJXM6IGNhbid0IGNoYW5nZSBwYXJh bWV0ZXIgYXR0cmlidXRlIiwgcG5hbWUpOworCS8qIHJldHVybiBOVUxMOyAqLwkvKiB0aGlzIGhh cyBhbHdheXMgYmVlbiBhIG5vLW9wICovCisjZWxzZQorCXplcnJuYW0oY25hbWUsICIlczogY2Fu J3QgY2hhbmdlIHBhcmFtZXRlciBhdHRyaWJ1dGUiLCBwbmFtZSk7CisJcmV0dXJuIE5VTEw7CS8q IHRoaXMgd2FzIHByZXZpb3VzbHkgYSBuby1vcCAqLworI2VuZGlmCisgICAgfQogCiAgICAgLyoK ICAgICAgKiBBIHBhcmFtZXRlciB3aWxsIGJlIGxvY2FsIGlmCkBAIC0yNTE2LDggKzI1MjcsOCBA QCB0eXBlc2V0X3NpbmdsZShjaGFyICpjbmFtZSwgY2hhciAqcG5hbWUsIFBhcmFtIHBtLCBpbnQg ZnVuYywKIAlwbSA9IGNyZWF0ZXBhcmFtKHBuYW1lLCBvbiAmIH5QTV9SRUFET05MWSk7CiAJaWYg KCFwbSkgewogCSAgICBpZiAob24gJiAoUE1fTEVGVCB8IFBNX1JJR0hUX0IgfCBQTV9SSUdIVF9a IHwKLQkJICAgICAgUE1fSU5URUdFUiB8IFBNX0VGTE9BVCB8IFBNX0ZGTE9BVCkpCi0JCXplcnJu YW0oY25hbWUsICJjYW4ndCBjaGFuZ2UgdmFyaWFibGUgYXR0cmlidXRlOiAlcyIsIHBuYW1lKTsK KwkJICAgICAgUE1fSU5URUdFUiB8IFBNX0VGTE9BVCB8IFBNX0ZGTE9BVCB8IFBNX05BTUVSRUYp KQorCQl6ZXJybmFtKGNuYW1lLCAiJXM6IGNhbid0IGNoYW5nZSBwYXJhbWV0ZXIgYXR0cmlidXRl IiwgcG5hbWUpOwogCSAgICByZXR1cm4gTlVMTDsKIAl9CiAJaWYgKG9uICYgKFBNX0xFRlQgfCBQ TV9SSUdIVF9CIHwgUE1fUklHSFRfWikpIHsKQEAgLTI2ODksMTQgKzI3MDAsMTQgQEAgYmluX3R5 cGVzZXQoY2hhciAqbmFtZSwgY2hhciAqKmFyZ3YsIExpbmtMaXN0IGFzc2lnbnMsIE9wdGlvbnMg b3BzLCBpbnQgZnVuYykKIAllbHNlCiAJICAgIGNvbnRpbnVlOwogCWlmIChPUFRfTUlOVVMob3Bz LCduJykpIHsKLQkgICAgaWYgKGJpdCAmIH4oUE1fUkVBRE9OTFl8UE1fVVBQRVJ8UE1fSElERVZB TCkpIHsKKwkgICAgaWYgKGJpdCAmIH4oUE1fUkVBRE9OTFl8UE1fVVBQRVJ8UE1fSElERVZBTHxQ TV9ISURFKSkgewogCQl6d2Fybm5hbShuYW1lLCAiLSVjIG5vdCBhbGxvd2VkIHdpdGggLW4iLCBv cHR2YWwpOwogCQkvKiByZXR1cm4gMTsgKi8KIAkgICAgfQogCX0KICAgICB9CiAgICAgaWYgKE9Q VF9NSU5VUyhvcHMsJ24nKSkgewotCWlmICgob258b2ZmKSAmIH4oUE1fUkVBRE9OTFl8UE1fVVBQ RVJ8UE1fSElERVZBTCkpIHsKKwlpZiAoKG9ufG9mZikgJiB+KFBNX1JFQURPTkxZfFBNX1VQUEVS fFBNX0hJREVWQUx8UE1fSElERSkpIHsKIAkgICAgLyogendhcm5uYW0obmFtZSwgIm5vIG90aGVy IGF0dHJpYnV0ZXMgYWxsb3dlZCB3aXRoIC1uIik7ICovCiAJICAgIHJldHVybiAxOwogCX0KZGlm ZiAtLWdpdCBhL1Rlc3QvQjAydHlwZXNldC56dHN0IGIvVGVzdC9CMDJ0eXBlc2V0Lnp0c3QKaW5k ZXggZmU5ZWI1NWViLi5iNDVhZDAyN2YgMTAwNjQ0Ci0tLSBhL1Rlc3QvQjAydHlwZXNldC56dHN0 CisrKyBiL1Rlc3QvQjAydHlwZXNldC56dHN0CkBAIC0xMTMzLDkgKzExMzMsOSBAQAogIGVjaG8g dj0ke1NSQU5ET00vPC0+L2ludGVnZXJ9CiAgdHlwZXNldCAtZ2ggU1JBTkRPTQogIGVjaG8gdj0k e1NSQU5ET00vPC0+L2ludGVnZXJ9Ci0wOkdsb2JhbCAtaCB2YXJpYWJsZSBkb2Vzbid0IGhpZGUg c3BlY2lhbCB2YXJpYWJsZQotPnY9aW50ZWdlcgorMTpHbG9iYWwgLWggdmFyaWFibGUgZG9lc24n dCBoaWRlIHNwZWNpYWwgdmFyaWFibGUKID52PWludGVnZXIKKz8oZXZhbCk6dHlwZXNldDozOiBT UkFORE9NOiBjYW4ndCBjaGFuZ2UgcGFyYW1ldGVyIGF0dHJpYnV0ZQogCiAgem1vZGxvYWQgLXUg enNoL3JhbmRvbQogIGVjaG8gdj0ke1NSQU5ET00vPC0+L2ludGVnZXJ9CkBAIC0xMTY4LDEwICsx MTY4LDkgQEAKICB0eXBlc2V0IC1naCBTUkFORE9NCiAgZWNobyB6PSR7KE0pJHsoZikkeyB6bW9k bG9hZCAtYXB9fTojKlNSQU5ET00qfQogIGVjaG8gdj0ke1NSQU5ET00vPC0+L2ludGVnZXJ9Ci0w Okdsb2JhbCAtaCB2YXJpYWJsZSBkb2Vzbid0IGhpZGUgYXV0b2xvYWQgdmFyaWFibGUKLT56PVNS QU5ET00gKHpzaC9yYW5kb20pCisxOkdsb2JhbCAtaCB2YXJpYWJsZSBkb2Vzbid0IGhpZGUgYXV0 b2xvYWQgdmFyaWFibGUKID56PVNSQU5ET00gKHpzaC9yYW5kb20pCi0+dj1pbnRlZ2VyCis/KGV2 YWwpOnR5cGVzZXQ6MzogU1JBTkRPTTogY2FuJ3QgY2hhbmdlIHBhcmFtZXRlciBhdHRyaWJ1dGUK IAogIHptb2Rsb2FkIC11IHpzaC9yYW5kb20KICBlY2hvIHo9JHsoTSkkeyhmKSR7IHptb2Rsb2Fk IC1hcH19OiMqU1JBTkRPTSp9Cg== --000000000000acfd89065766ef7b--