On 12 Jun 2023, at 11:12, Hans Hagen via ntg-context <ntg-context@ntg.nl> wrote:

On 6/12/2023 10:57 AM, Hans van der Meer via ntg-context wrote:
The manual LMTX-primitives on page 21 tells me:
You can explicitly freeze an unfrozen macro.
...
A redefinition will now give: You can't redefine a frozen macro.
But is this true? The following code seems to contradict this:
\def\HOME{myhome}
\writestatus{1}{\meaning\HOME}
\letfrozen\HOME
\writestatus{2}{\meaning\HOME}
\def\HOME{other home}
\writestatus{3}{\meaning\HOME}

Is this mechanism broken? It looks so useful to prevent accidental redefinition!

here i run with

\enabledirectives[overloadmode=error]

(you can do that in cont-sys.mkxl)

\enabledirectives[overloadmode=warning]
Hans


Pity. Now I get on loading the tex file:
"csname overload > fatal error, protection level 4, control sequence 'nbsp', properties 'immutable', file 't-hvdm-text.tex', line 63

while I had hoped that frozen would give me something like:
illegal attempt to redefine \HOME

Byproduct (not unwanted) the above illegal redefinition to be solved :-)

May I ask why obviously the frozen-mechanism seems (yet?) unimplemented?

dr. Hans van der Meer