On 8/25/2022 2:19 AM, Max Chernoff via ntg-context wrote:
Hi all,

If you load a non-existent module, ConTeXt issues a minor warning, but
otherwise proceeds as normal:

MWE:

    \usemodule[doesnt-exist]
\starttext
    Hello world!
    \stoptext
I think that this behaviour should be changed so that a fatal error is
issued when a loaded module cannot be found. Plain TeX, LaTeX, and OpTeX
all throw an error whenever their versions of modules cannot be found, so
ConTeXt is the odd one out here.

There are 3 scenarios that I can think of for when you attempt to load a
module, but it cannot be found:

1. A module provides some new command "\somecommand"

    In this case, loading the module will quietly fail, but an undefined
    control sequence error will be issued whenever you use
    "\somecommand". This disguises the root problem, which is that the
    module was never loaded, potentially confusing users.

It doesn't tell you where to look unless we parse all files.

2. A module changes the layout of a document

    In this case, the layout of the document would be unchanged by the
    module. If you're looking at every document, then this would be
    obvious; however, if you're using some batch processing system, you
    could unknowingly send out incorrectly-styled documents quite easily.

Ah ... but texies claim to see the difference so it's an exercise!

3. You load a module that provides some command, then never use it

    This is the only case where the new error would break any documents.
    However, this case should hopefully be pretty rare since it's
    pointless to load a module then never use any of its features.

Indeed harmless.

Making this change could potentially break some documents that currently
work, but I think that this change is worth it, since I'd rather have
something break loudly (throwing an error) rather than silently (producing
a semi-corrupt document).
But ... you can already do

\enabledirectives[logs.errors=*]

or

\enabledirectives[logs.errors=missing modules]

and if needed can add that line to a local cont-loc.mkxl file so that it always kicks in.

However, more dangerous is when a user overloads a system macro so if you realy want to play safe:

\enabledirectives[overloadmode=error] % or warning

is yuour friend.

Hans

-----------------------------------------------------------------
                                          Hans Hagen | PRAGMA ADE
              Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
       tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
-----------------------------------------------------------------
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / https://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : https://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : https://contextgarden.net
___________________________________________________________________________________

Reply via email to