[PATCH] Perform cumulative typesetting also on parameters with no value

Philippe Altherr <[email protected]> Thu, 23 Jul 2026 00:01:02 +0200
Newsgroups gmane.comp.shells.zsh.devel
Message-ID <CAGdYchuivBnRFCO9LEGL_JQLLnJHhGSRd750pF74iEsXCLcd6Q@mail.gmail.com>
--0000000000003abbf006573a478e
Content-Type: multipart/alternative; boundary="0000000000003abbef06573a478c"

--0000000000003abbef06573a478c
Content-Type: text/plain; charset="UTF-8"

Typesetting multiple times the same parameter with different flags but
without changing its type should be cumulative. This currently fails for
parameters declared with no value when TYPESET_TO_UNSET is enabled.

% setopt TYPESET_TO_UNSET
% typeset -u var1=foo var2
% typeset -p var1 var2
typeset -u var1=foo
typeset -u var2
% typeset -x var1 var2
% typeset -p var1 var2
export -u var1=foo
export var2

The last line should include -u, like the previous one.

- Perform cumulative typesetting also on parameters with no value
<https://github.com/zsh-users/zsh/compare/master...paltherr:zsh:typeset-use-pm-if-declared>

Philippe

--0000000000003abbef06573a478c
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div>Typesetting multiple times the same parameter with di=
fferent flags but without changing its type should be cumulative. This curr=
ently fails for parameters declared with no value when=C2=A0TYPESET_TO_UNSE=
T is enabled.</div><div><br></div><font face=3D"monospace">% setopt TYPESET=
_TO_UNSET<br>% typeset -u var1=3Dfoo var2<br>% typeset -p var1 var2<br>type=
set -u var1=3Dfoo<br>typeset -u var2<br>% typeset -x var1 var2<br>% typeset=
 -p var1 var2<br></font><div><font face=3D"monospace">export -u var1=3Dfoo<=
br>export var2</font></div><div><br></div><div>The last line should include=
 -u, like the previous one.</div><div><br></div><div>-=C2=A0<a href=3D"http=
s://github.com/zsh-users/zsh/compare/master...paltherr:zsh:typeset-use-pm-i=
f-declared">Perform cumulative typesetting also on parameters with no value=
</a></div><div><br></div><div>Philippe</div><div><br></div></div>

--0000000000003abbef06573a478c--
--0000000000003abbf006573a478e
Content-Type: text/plain; charset="US-ASCII"; name="typeset-use-pm-if-declared.txt"
Content-Disposition: attachment; filename="typeset-use-pm-if-declared.txt"
Content-Transfer-Encoding: base64
Content-ID: <f_mrwm9c3w0>
X-Attachment-Id: f_mrwm9c3w0

ZGlmZiAtLWdpdCBhL1NyYy9idWlsdGluLmMgYi9TcmMvYnVpbHRpbi5jCmluZGV4IDJlM2U1NzUy
YS4uNjFkMmEyNzMwIDEwMDY0NAotLS0gYS9TcmMvYnVpbHRpbi5jCisrKyBiL1NyYy9idWlsdGlu
LmMKQEAgLTIwNTUsNyArMjA1NSw4IEBAIHR5cGVzZXRfc2luZ2xlKGNoYXIgKmNuYW1lLCBjaGFy
ICpwbmFtZSwgUGFyYW0gcG0sIGludCBmdW5jLAogICAgICAqIFBPU0lYQlVJTFRJTlMgaG9ycm9y
OiB3ZSBuZWVkIHRvIHJldGFpbiB0aGUgJ3JlYWRvbmx5JyBvciAnZXhwb3J0JwogICAgICAqIGZs
YWdzIG9mIGFuIHVuc2V0IHBhcmFtZXRlci4KICAgICAgKi8KLSAgICB1c2VwbSA9IHBtICYmICgh
KHBtLT5ub2RlLmZsYWdzICYgUE1fVU5TRVQpIHx8IE9QVF9JU1NFVChvcHMsICdwJykgfHwKKyAg
ICB1c2VwbSA9IHBtICYmICghKHBtLT5ub2RlLmZsYWdzICYgUE1fVU5TRVQpIHx8CisJCSAgIChw
bS0+bm9kZS5mbGFncyAmIFBNX0RFQ0xBUkVEKSB8fCBPUFRfSVNTRVQob3BzLCAncCcpIHx8CiAJ
CSAgIChpc3NldChQT1NJWEJVSUxUSU5TKSAmJgogCQkgICAgKHBtLT5ub2RlLmZsYWdzICYgKFBN
X1JFQURPTkxZfFBNX0VYUE9SVEVEKSkpKTsKIApAQCAtMjI3OSw3ICsyMjgwLDggQEAgdHlwZXNl
dF9zaW5nbGUoY2hhciAqY25hbWUsIGNoYXIgKnBuYW1lLCBQYXJhbSBwbSwgaW50IGZ1bmMsCiAJ
LyoKIAkgKiBLZWVwIHVuc2V0IGlmIHVzaW5nIHJlYWRvbmx5IGluIFBPU0lYIG1vZGUgdW5sZXNz
IHNwZWNpZmllZCBvdGhlcndpc2UuCiAJICovCi0JaWYgKCh1c2VwbSAhPSAyKSAmJiAhKChvbiAm
IFBNX1JFQURPTkxZKSAmJiBpc3NldChQT1NJWEJVSUxUSU5TKSkpCisJaWYgKCh1c2VwbSAhPSAy
KSAmJiAhKChvbiAmIFBNX1JFQURPTkxZKSAmJiBpc3NldChQT1NJWEJVSUxUSU5TKSkgJiYKKwkg
ICAgIShwbS0+bm9kZS5mbGFncyAmIFBNX0RFQ0xBUkVEKSkKIAkgICAgb2ZmIHw9IFBNX1VOU0VU
OwogCXBtLT5ub2RlLmZsYWdzID0gKHBtLT5ub2RlLmZsYWdzIHwgKG9uICYgflBNX1JFQURPTkxZ
KSkgJiB+b2ZmOwogCWlmIChvbiAmIChQTV9MRUZUIHwgUE1fUklHSFRfQiB8IFBNX1JJR0hUX1op
KSB7CmRpZmYgLS1naXQgYS9UZXN0L0IwMnR5cGVzZXQuenRzdCBiL1Rlc3QvQjAydHlwZXNldC56
dHN0CmluZGV4IDMyZTc5Y2VkMi4uN2JjNDRkYmRjIDEwMDY0NAotLS0gYS9UZXN0L0IwMnR5cGVz
ZXQuenRzdAorKysgYi9UZXN0L0IwMnR5cGVzZXQuenRzdApAQCAtMTc0LDYgKzE3NCwzNCBAQAog
PmlubmVyCiA+b3V0ZXIKIAorIGFkZGZsYWdzKCkgeworICAgc2V0b3B0IGxvY2Fsb3B0aW9ucyB0
eXBlc2V0X3RvX3Vuc2V0CisgICBpZiAoKEFSR0MgPT0gMikpOyB0aGVuIHR5cGVzZXQgJDE9JDI7
IGVsc2UgdHlwZXNldCAkMTsgZmkKKyAgIHR5cGVzZXQgLXAgJDEKKyAgIHR5cGVzZXQgLVI1ICQx
CisgICB0eXBlc2V0IC1wICQxCisgICB0eXBlc2V0IC11ICQxCisgICB0eXBlc2V0IC1wICQxCisg
ICB0eXBlc2V0IC14ICQxCisgICB0eXBlc2V0IC1wICQxCisgfQorIGFkZGZsYWdzIHZhcjEgZm9v
CisgYWRkZmxhZ3MgdmFyMiAiIgorIGFkZGZsYWdzIHZhcjMKKzA6VHlwZXNldHRpbmcgaXMgY3Vt
dWxhdGl2ZQorPnR5cGVzZXQgdmFyMT1mb28KKz50eXBlc2V0IC1SNSB2YXIxPWZvbworPnR5cGVz
ZXQgLVI1IC11IHZhcjE9Zm9vCis+bG9jYWwgLVI1IC11eCB2YXIxPWZvbworPnR5cGVzZXQgdmFy
Mj0nJworPnR5cGVzZXQgLVI1IHZhcjI9JycKKz50eXBlc2V0IC1SNSAtdSB2YXIyPScnCis+bG9j
YWwgLVI1IC11eCB2YXIyPScnCis+dHlwZXNldCB2YXIzCis+dHlwZXNldCAtUjUgdmFyMworPnR5
cGVzZXQgLVI1IC11IHZhcjMKKz5sb2NhbCAtUjUgLXV4IHZhcjMKKwogIGZsb2F0IGY9My4xNDE1
OQogIHR5cGVzZXQgK20gZgogIGZsb2F0IC1FMyBmCg==
--0000000000003abbf006573a478e--