texlive[74284] Master/texmf-dist: expltools (25feb25)

commits+karl at tug.org commits+karl at tug.org
Tue Feb 25 21:42:39 CET 2025


Revision: 74284
          https://tug.org/svn/texlive?view=revision&revision=74284
Author:   karl
Date:     2025-02-25 21:42:39 +0100 (Tue, 25 Feb 2025)
Log Message:
-----------
expltools (25feb25)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/support/expltools/CHANGES.md
    trunk/Master/texmf-dist/doc/support/expltools/explcheck-config.toml
    trunk/Master/texmf-dist/doc/support/expltools/project-proposal.pdf
    trunk/Master/texmf-dist/doc/support/expltools/warnings-and-errors.pdf
    trunk/Master/texmf-dist/scripts/expltools/explcheck-cli.lua
    trunk/Master/texmf-dist/scripts/expltools/explcheck-config.lua
    trunk/Master/texmf-dist/scripts/expltools/explcheck-obsolete.lua
    trunk/Master/texmf-dist/scripts/expltools/explcheck-preprocessing.lua

Modified: trunk/Master/texmf-dist/doc/support/expltools/CHANGES.md
===================================================================
--- trunk/Master/texmf-dist/doc/support/expltools/CHANGES.md	2025-02-25 10:47:28 UTC (rev 74283)
+++ trunk/Master/texmf-dist/doc/support/expltools/CHANGES.md	2025-02-25 20:42:39 UTC (rev 74284)
@@ -1,5 +1,31 @@
 # Changes
 
+## expltools 2025-02-25
+
+### explcheck v0.7.1
+
+#### Development
+
+- Add support for config file sections `[package.…]` for specifying
+  package-specific configuration. (#32, #57, #62, #63)
+
+  For example, here is how you might configure the file `expl3-code.tex` from
+  the package `l3kernel` in your configuration file `.explcheckrc`:
+
+  ``` toml
+  [package.l3kernel]
+  expl3_detection_strategy = "always"
+  ignored_issues = ["w200", "w202", "e208", "e209"]
+  max_line_length = 140
+  ```
+
+- Add value `"never"` for the command-line option `--expl3-detection-strategy`
+  and the Lua option `expl3_detection_strategy`. (#63)
+
+- Pre-configure all remaining expl3 files from current TeX Live with more than
+  1 error in <https://koppor.github.io/explcheck-issues/>. (#32, #57, #62, #63,
+  4bf5597e, d074dbef)
+
 ## expltools 2025-02-24
 
 ### explcheck v0.7.0
@@ -15,12 +41,13 @@
 - Add support for config file sections `[filename."…"]` for specifying
   file-specific configuration. (#32, #57, #62)
 
-  For example, here is how you might configure a file `expl3-code.tex`:
+  For example, here is how you might configure a file `expl3-code.tex` from
+  your configuration file `.explcheckrc`:
 
   ``` toml
   [filename."expl3-code.tex"]
   expl3_detection_strategy = "always"
-  ignored_issues = ["w200", "w202", "e209"]
+  ignored_issues = ["w200", "w202", "e208", "e209"]
   max_line_length = 140
   ```
 
@@ -77,7 +104,8 @@
 - Exclude "weird" argument specifiers (`:w`) from warning W200. (reported by
   @muzimuzhi in #25, fixed in #45)
 
-- Remove error E203. (reported by @koppor in #53, fixed in #54)
+- Remove error E203 (Removed control sequences). (reported by @koppor in #53,
+  fixed in #54)
 
 - Fix two instances of explcheck crashing while processing input files.
   (reported by @koppor in #31, fixed in #52 and #59)

Modified: trunk/Master/texmf-dist/doc/support/expltools/explcheck-config.toml
===================================================================
--- trunk/Master/texmf-dist/doc/support/expltools/explcheck-config.toml	2025-02-25 10:47:28 UTC (rev 74283)
+++ trunk/Master/texmf-dist/doc/support/expltools/explcheck-config.toml	2025-02-25 20:42:39 UTC (rev 74284)
@@ -7,9 +7,9 @@
 porcelain = false
 warnings_are_errors = false
 
-[filename."expl3-code.tex"]
+[package.l3kernel]
 expl3_detection_strategy = "always"
-ignored_issues = ["w200", "w202", "e209"]
+ignored_issues = ["e208", "e209"]
 max_line_length = 140
 
 [filename."tex4ht.sty"]
@@ -18,25 +18,19 @@
 [filename."nicematrix.sty"]
 expl3_detection_strategy = "always"
 
-[filename."xintexpr.sty"]
+[package.xint]
 expl3_detection_strategy = "precision"
 
-[filename."xinttools.sty"]
-expl3_detection_strategy = "precision"
-
 [filename."xCJK2uni.sty"]
 expl3_detection_strategy = "always"
 ignored_issues = ["e209"]
 
-[filename."stex.sty"]
-expl3_detection_strategy = "always"
-
 [filename."spath3.sty"]
 expl3_detection_strategy = "always"
 
-[filename."xparse-generic.tex"]
+[package.xparse]
 expl3_detection_strategy = "always"
-ignored_issues = ["e209", "w200"]
+ignored_issues = ["e209"]
 max_line_length = 90
 
 [filename."functional.sty"]
@@ -63,54 +57,186 @@
 expl3_detection_strategy = "always"
 max_line_length = 100
 
-[filename."problem.sty"]
+[filename."interlinear.sty"]
+expl3_detection_strategy = "precision"
+
+[filename."skrapport.cls"]
 expl3_detection_strategy = "always"
+max_line_length = 150
+
+[filename."namedef.sty"]
+expl3_detection_strategy = "always"
+
+[filename."tikzlibrarytikzmark.code.tex"]
+expl3_detection_strategy = "always"
+
+[package.ctex]
+expl3_detection_strategy = "always"
+max_line_length = 100
+
+[filename."knowledge.sty"]
+ignored_issues = ["e201"]
+
+[filename."grading-scheme.sty"]
+ignored_issues = ["e201"]
+
+[filename."scontents.tex"]
+expl3_detection_strategy = "always"
 max_line_length = 90
 
-[filename."xunicode-addon.sty"]
+[package.stex]
 expl3_detection_strategy = "always"
+max_line_length = 110
+
+[filename."qrbill.sty"]
+expl3_detection_strategy = "always"
+max_line_length = 180
+
+[filename."cleveref-forward.sty"]
+expl3_detection_strategy = "always"
+max_line_length = 160
+
+[filename."latexrelease.sty"]
+expl3_detection_strategy = "never"
+
+[package.mathtools]
+expl3_detection_strategy = "precision"
+
+[filename."lltjp-unicode-math.sty"]
+expl3_detection_strategy = "always"
+max_line_length = 90
+
+[filename."unravel.sty"]
+expl3_detection_strategy = "always"
 max_line_length = 100
+ignored_issues = ["e209"]
 
-[filename."interlinear.sty"]
+[filename."polexprcore.tex"]
 expl3_detection_strategy = "precision"
 
-[filename."skrapport.cls"]
+[filename."timechart.sty"]
+ignored_issues = ["e201"]
+
+[filename."csvsimple-l3.sty"]
 expl3_detection_strategy = "always"
+max_line_length = 110
+
+[package.unicode-math]
+ignored_issues = ["e209"]
+max_line_length = 130
+
+[package.fontspec]
+ignored_issues = ["e201"]
+
+[filename."letgut.cls"]
+ignored_issues = ["e209"]
+
+[filename."interchar.sty"]
+expl3_detection_strategy = "always"
+max_line_length = 90
+
+[filename."bangla.sty"]
+ignored_issues = ["e209"]
+
+[filename."simurgh-empheq.sty"]
+expl3_detection_strategy = "precision"
+
+[filename."exam-zh.cls"]
+ignored_issues = ["e209"]
 max_line_length = 150
 
-[filename."namedef.sty"]
+[filename."lwarp-statistics.sty"]
 expl3_detection_strategy = "always"
 
-[filename."tikzlibrarytikzmark.code.tex"]
+[filename."platexrelease.sty"]
 expl3_detection_strategy = "always"
+max_line_length = 90
 
-[filename."ctexart.cls"]
+[filename."luamml-patches-mathtools.sty"]
+expl3_detection_strategy = "never"
+
+[package.xecjk]
 expl3_detection_strategy = "always"
+ignored_issues = ["e209"]
 max_line_length = 100
 
-[filename."ctexrep.cls"]
+[filename."luaprogtable.sty"]
 expl3_detection_strategy = "always"
+max_line_length = 110
+
+[filename."flexisym.sty"]
+ignored_issues = ["e209"]
+max_line_length = 110
+
+[filename."fduthesis.cls"]
+ignored_issues = ["e209"]
 max_line_length = 100
 
-[filename."ctexbook.cls"]
+[filename."nwafuthesis.cls"]
+ignored_issues = ["e209"]
+max_line_length = 130
+
+[filename."zxjatype.sty"]
+ignored_issues = ["e209"]
+max_line_length = 90
+
+[filename."cfntinst.sty"]
+ignored_issues = ["e209"]
+
+[filename."xfntinst.sty"]
+ignored_issues = ["e209"]
+
+[filename."fontinst.sty"]
+ignored_issues = ["e209"]
+
+[filename."beamerouterthemeUR.sty"]
 expl3_detection_strategy = "always"
+max_line_length = 140
+
+[filename."denisbdoc.sty"]
+expl3_detection_strategy = "always"
+
+[package.whatsnote]
+expl3_detection_strategy = "always"
+
+[filename."robust-externalize.sty"]
+expl3_detection_strategy = "always"
+
+[filename."multicolrule.sty"]
+expl3_detection_strategy = "always"
 max_line_length = 100
 
-[filename."ctexpatch.sty"]
+[package.minimalist]
 expl3_detection_strategy = "always"
+
+[filename."xtemplate.sty"]
+expl3_detection_strategy = "always"
 max_line_length = 100
 
-[filename."ctexbeamer.cls"]
+[package.ocgx2]
 expl3_detection_strategy = "always"
 max_line_length = 100
 
-[filename."grading-scheme.sty"]
-ignored_issues = ["e201"]
+[package.tuda-ci]
+expl3_detection_strategy = "always"
 
-[filename."scontents.tex"]
+[filename."xob-dotemph.sty"]
+ignored_issues = ["e209"]
+
+[package.media9]
 expl3_detection_strategy = "always"
-max_line_length = 90
+max_line_length = 140
 
-[filename."hwexam.sty"]
+[filename."nwejm.cls"]
 expl3_detection_strategy = "always"
+
+[package.hduthesis]
+expl3_detection_strategy = "always"
+max_line_length = 120
+
+[filename."letterswitharrows.sty"]
+expl3_detection_strategy = "always"
 max_line_length = 110
+
+[filename."ufrgscca.cls"]
+expl3_detection_strategy = "always"

Modified: trunk/Master/texmf-dist/doc/support/expltools/project-proposal.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/support/expltools/warnings-and-errors.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/scripts/expltools/explcheck-cli.lua
===================================================================
--- trunk/Master/texmf-dist/scripts/expltools/explcheck-cli.lua	2025-02-25 10:47:28 UTC (rev 74283)
+++ trunk/Master/texmf-dist/scripts/expltools/explcheck-cli.lua	2025-02-25 20:42:39 UTC (rev 74284)
@@ -137,8 +137,9 @@
     "Options:\n\n"
     .. "\t--error-format=FORMAT      The Vim's quickfix errorformat used for the output with --porcelain enabled.\n"
     .. "\t                           The default format is FORMAT=\"" .. get_option("error_format") .. "\".\n\n"
-    .. "\t--expl3-detection-strategy={always|precision|recall|auto}\n\n"
+    .. "\t--expl3-detection-strategy={never|always|precision|recall|auto}\n\n"
     .. "\t                           The strategy for detecting expl3 parts of the input files:\n\n"
+    .. '\t                           - "never": Assume that no part of the input files is in expl3.\n'
     .. '\t                           - "always": Assume that the whole input files are in expl3.\n'
     .. '\t                           - "precision", "recall", and "auto": Analyze standard delimiters such as \n'
     .. '\t                             \\ExplSyntaxOn and Off. If no standard delimiters exist, assume either that:\n'
@@ -163,7 +164,7 @@
 end
 
 local function print_version()
-  print("explcheck (expltools 2025-02-24) v0.7.0")
+  print("explcheck (expltools 2025-02-25) v0.7.1")
   print("Copyright (c) 2024-2025 Vít Starý Novotný")
   print("Licenses: LPPL 1.3 or later, GNU GPL v2 or later")
 end

Modified: trunk/Master/texmf-dist/scripts/expltools/explcheck-config.lua
===================================================================
--- trunk/Master/texmf-dist/scripts/expltools/explcheck-config.lua	2025-02-25 10:47:28 UTC (rev 74283)
+++ trunk/Master/texmf-dist/scripts/expltools/explcheck-config.lua	2025-02-25 20:42:39 UTC (rev 74284)
@@ -30,11 +30,16 @@
   -- Otherwise, try the user-defined configuration first, if it exists, and then the default configuration.
   for _, config in ipairs({user_config, default_config}) do
     if pathname ~= nil then
-      -- If a a pathname is provided and the current configuration specifies the option for the provided filename, use it.
+      -- If a pathname is provided and the current configuration specifies the option for this filename, use it.
       local filename = utils.get_basename(pathname)
       if config["filename"] and config["filename"][filename] ~= nil and config["filename"][filename][key] ~= nil then
         return config["filename"][filename][key]
       end
+      -- If a pathname is provided and the current configuration specifies the option for this package, use it.
+      local package = utils.get_basename(utils.get_parent(pathname))
+      if config["package"] and config["package"][package] ~= nil and config["package"][package][key] ~= nil then
+        return config["package"][package][key]
+      end
     end
     -- If the current configuration specifies the option in the defaults, use it.
     for _, section in ipairs({"defaults", "options"}) do  -- TODO: Remove `[options]` in v1.0.0.

Modified: trunk/Master/texmf-dist/scripts/expltools/explcheck-obsolete.lua
===================================================================
--- trunk/Master/texmf-dist/scripts/expltools/explcheck-obsolete.lua	2025-02-25 10:47:28 UTC (rev 74283)
+++ trunk/Master/texmf-dist/scripts/expltools/explcheck-obsolete.lua	2025-02-25 20:42:39 UTC (rev 74284)
@@ -9,7 +9,7 @@
 
 -- luacheck: push no max line length
 local obsolete = {}
-obsolete.deprecated_csname = (P("k") * (P("e") * (P("y") * (P("s") * (P("_") * (P("s") * (P("e") * (P("t") * (P("_") * (P("f") * (P("i") * (P("l") * (P("t") * (P("e") * (P("r") * (P(":") * (P("n") * (P("n") * (P("o") * (P("nN") + P("N")) + P("v") * (P("nN") + P("N")) + P("V") * (P("nN") + P("N")) + P("n") * (P("nN") + P("N")) + P("n") + P("V") + P("v") + P("o"))))))))))))))))))) + P("l") * (P("_") * (P("k") * (P("e") * (P("y") * (P("s") * (P("_") * (P("key_tl") + P("path_tl")))))) + P("t") * (P("e") * (P("x") * (P("t") * (P("_") * (P("accents_tl") + P("letterlike_tl")))))))) + P("m") * (P("s") * (P("g") * (P("_") * (P("g") * (P("s") * (P("e") * (P("t") * (P(":") * (P("n") * (P("n") * (P("nn") + P("n")))))))))))) + P("t") * (P("e") * (P("x") * (P("t") * (P("_") * (P("t") * (P("i") * (P("t") * (P("l") * (P("e") * (P("c") * (P("a") * (P("s") * (P("e") * (P(":") * (P("nn") + P("n"))))))))))))))) + P("l") * (P("_") * (P("c") * (P("a") * (P("s") * (P("e") * (P(":") * (P("c") * (P("n") * (P("TF") + P("F") + P("T")) + P("n")) + P("N") * (P("n") * (P("TF") + P("F") + P("T")) + P("n"))))))) + P("l") * (P("o") * (P("w") * (P("e") * (P("r") * (P("_") * (P("c") * (P("a") * (P("s") * (P("e") * (P(":") * (P("nn") + P("n")))))))))))) + P("m") * (P("i") * (P("x") * (P("e") * (P("d") * (P("_") * (P("c") * (P("a") * (P("s") * (P("e") * (P(":") * (P("nn") + P("n")))))))))))) + P("u") * (P("p") * (P("p") * (P("e") * (P("r") * (P("_") * (P("c") * (P("a") * (P("s") * (P("e") * (P(":") * (P("nn") + P("n")))))))))))) + P("b") * (P("u") * (P("i") * (P("l") * (P("d") * (P("_") * (P("clear:N") + P("g") * (P("clear:N") + P("et:NN"))))))))))) + P("s") * (P("t") * (P("r") * (P("_") * (P("l") * (P("o") * (P("w") * (P("e") * (P("r") * (P("_") * (P("c") * (P("a") * (P("s") * (P("e") * (P(":") * (P("f") + P("n")))))))))))) + P("declare_eight_bit_encoding:nnn") + P("u") * (P("p") * (P("p") * (P("e") * (P("r") * (P("_") * (P("c") * (P("a") * (P("s") * (P("e") * (P(":") * (P("f") + P("n")))))))))))) + P("f") * (P("o") * (P("l") * (P("d") * !
 (P("_") * (P("c") * (P("a") * (P("s") * (P("e") * (P(":") * (P("n") + P("V"))))))) + P("c") * (P("a") * (P("s") * (P("e") * (P(":") * (P("n") + P("V"))))))))))))) + P("e") * (P("q") * (P("_") * (P("gset_map_x:NNn") + P("i") * (P("n") * (P("d") * (P("e") * (P("x") * (P("e") * (P("d") * (P("_") * (P("m") * (P("a") * (P("p") * (P("_") * (P("inline:Nn") + P("function:NN"))))))))))))) + P("set_map_x:NNn")))) + P("ys_load_deprecation:")) + P("p") * (P("d") * (P("f") * (P("_") * (P("o") * (P("b") * (P("j") * (P("e") * (P("c") * (P("t") * (P("_") * (P("w") * (P("r") * (P("i") * (P("t") * (P("e") * (P(":") * (P("n") * (P("n") + P("x")))))))) + P("new:nn"))))))))))) + P("e") * (P("e") * (P("k") * (P("_") * (P("c") * (P("a") * (P("t") * (P("c") * (P("o") * (P("d") * (P("e") * (P("_") * (P("ignore_spaces:N") + P("remove_ignore_spaces:N")))))))) + P("h") * (P("a") * (P("r") * (P("c") * (P("o") * (P("d") * (P("e") * (P("_") * (P("ignore_spaces:N") + P("remove_ignore_spaces:N")))))))))) + P("m") * (P("e") * (P("a") * (P("n") * (P("i") * (P("n") * (P("g") * (P("_") * (P("ignore_spaces:N") + P("remove_ignore_spaces:N"))))))))))))) + P("r") * (P("o") * (P("p") * (P("_") * (P("g") * (P("p") * (P("u") * (P("t") * (P("_") * (P("i") * (P("f") * (P("_") * (P("n") * (P("e") * (P("w") * (P(":") * (P("c") * (P("Vn") + P("n") * (P("n") + P("V"))) + P("N") * (P("Vn") + P("n") * (P("n") + P("V"))))))))))))))) + P("p") * (P("u") * (P("t") * (P("_") * (P("i") * (P("f") * (P("_") * (P("n") * (P("e") * (P("w") * (P(":") * (P("c") * (P("Vn") + P("n") * (P("n") + P("V"))) + P("N") * (P("Vn") + P("n") * (P("n") + P("V"))))))))))))))))))) + P("i") * (P("o") * (P("w") * (P("_") * (P("s") * (P("h") * (P("i") * (P("p") * (P("o") * (P("u") * (P("t") * (P("_") * (P("x") * (P(":") * (P("c") * (P("n") + P("x")) + P("N") * (P("n") + P("x")))))))))))))))) + P("c") * (P("s_argument_spec:N") + P("h") * (P("a") * (P("r") * (P("_") * (P("s") * (P("t") * (P("r") * (P("_") * (P("l") * (P("o") * (P("w") * (P("e") * (P("r") * (P("_case:N") + P("case:N")))))) + P("m!
 ixed_case:N") + P("f") * (P("o") * (P("l") * (P("d") * (P("_case:N") + P("case:N"))))) + P("u") * (P("p") * (P("p") * (P("e") * (P("r") * (P("_case:N") + P("case:N")))))) + P("titlecase:N"))))) + P("l") * (P("o") * (P("w") * (P("e") * (P("r") * (P("_case:N") + P("case:N")))))) + P("mixed_case:N") + P("f") * (P("o") * (P("l") * (P("d") * (P("_case:N") + P("case:N"))))) + P("u") * (P("p") * (P("p") * (P("e") * (P("r") * (P("_case:N") + P("case:N")))))) + P("t") * (P("itlecase:N") + P("o") * (P("_") * (P("utfviii_bytes:n") + P("nfd:N")))))))))) * eof
+obsolete.deprecated_csname = (P("k") * (P("e") * (P("y") * (P("s") * (P("_") * (P("s") * (P("e") * (P("t") * (P("_") * (P("f") * (P("i") * (P("l") * (P("t") * (P("e") * (P("r") * (P(":") * (P("n") * (P("n") * (P("o") * (P("nN") + P("N")) + P("v") * (P("nN") + P("N")) + P("V") * (P("nN") + P("N")) + P("n") * (P("nN") + P("N")) + P("n") + P("V") + P("v") + P("o"))))))))))))))))))) + P("l") * (P("_") * (P("k") * (P("e") * (P("y") * (P("s") * (P("_") * (P("key_tl") + P("path_tl")))))) + P("t") * (P("e") * (P("x") * (P("t") * (P("_") * (P("accents_tl") + P("letterlike_tl")))))))) + P("i") * (P("o") * (P("w") * (P("_") * (P("s") * (P("h") * (P("i") * (P("p") * (P("o") * (P("u") * (P("t") * (P("_") * (P("x") * (P(":") * (P("c") * (P("n") + P("x")) + P("N") * (P("n") + P("x")))))))))))))))) + P("t") * (P("e") * (P("x") * (P("t") * (P("_") * (P("t") * (P("i") * (P("t") * (P("l") * (P("e") * (P("c") * (P("a") * (P("s") * (P("e") * (P(":") * (P("nn") + P("n"))))))))))))))) + P("l") * (P("_") * (P("c") * (P("a") * (P("s") * (P("e") * (P(":") * (P("c") * (P("n") * (P("TF") + P("F") + P("T")) + P("n")) + P("N") * (P("n") * (P("TF") + P("F") + P("T")) + P("n"))))))) + P("l") * (P("o") * (P("w") * (P("e") * (P("r") * (P("_") * (P("c") * (P("a") * (P("s") * (P("e") * (P(":") * (P("nn") + P("n")))))))))))) + P("b") * (P("u") * (P("i") * (P("l") * (P("d") * (P("_") * (P("clear:N") + P("g") * (P("clear:N") + P("et:NN")))))))) + P("m") * (P("i") * (P("x") * (P("e") * (P("d") * (P("_") * (P("c") * (P("a") * (P("s") * (P("e") * (P(":") * (P("nn") + P("n")))))))))))) + P("u") * (P("p") * (P("p") * (P("e") * (P("r") * (P("_") * (P("c") * (P("a") * (P("s") * (P("e") * (P(":") * (P("nn") + P("n"))))))))))))))) + P("s") * (P("t") * (P("r") * (P("_") * (P("l") * (P("o") * (P("w") * (P("e") * (P("r") * (P("_") * (P("c") * (P("a") * (P("s") * (P("e") * (P(":") * (P("f") + P("n")))))))))))) + P("declare_eight_bit_encoding:nnn") + P("u") * (P("p") * (P("p") * (P("e") * (P("r") * (P("_") * (P("c") * (P("a") * (P("s") * (P("e") * (P(":")!
  * (P("f") + P("n")))))))))))) + P("f") * (P("o") * (P("l") * (P("d") * (P("_") * (P("c") * (P("a") * (P("s") * (P("e") * (P(":") * (P("n") + P("V"))))))) + P("c") * (P("a") * (P("s") * (P("e") * (P(":") * (P("n") + P("V"))))))))))))) + P("e") * (P("q") * (P("_") * (P("gset_map_x:NNn") + P("i") * (P("n") * (P("d") * (P("e") * (P("x") * (P("e") * (P("d") * (P("_") * (P("m") * (P("a") * (P("p") * (P("_") * (P("inline:Nn") + P("function:NN"))))))))))))) + P("set_map_x:NNn")))) + P("ys_load_deprecation:")) + P("p") * (P("d") * (P("f") * (P("_") * (P("o") * (P("b") * (P("j") * (P("e") * (P("c") * (P("t") * (P("_") * (P("w") * (P("r") * (P("i") * (P("t") * (P("e") * (P(":") * (P("n") * (P("n") + P("x")))))))) + P("new:nn"))))))))))) + P("e") * (P("e") * (P("k") * (P("_") * (P("c") * (P("a") * (P("t") * (P("c") * (P("o") * (P("d") * (P("e") * (P("_") * (P("ignore_spaces:N") + P("remove_ignore_spaces:N")))))))) + P("h") * (P("a") * (P("r") * (P("c") * (P("o") * (P("d") * (P("e") * (P("_") * (P("ignore_spaces:N") + P("remove_ignore_spaces:N")))))))))) + P("m") * (P("e") * (P("a") * (P("n") * (P("i") * (P("n") * (P("g") * (P("_") * (P("ignore_spaces:N") + P("remove_ignore_spaces:N"))))))))))))) + P("r") * (P("o") * (P("p") * (P("_") * (P("g") * (P("p") * (P("u") * (P("t") * (P("_") * (P("i") * (P("f") * (P("_") * (P("n") * (P("e") * (P("w") * (P(":") * (P("c") * (P("Vn") + P("n") * (P("n") + P("V"))) + P("N") * (P("Vn") + P("n") * (P("n") + P("V"))))))))))))))) + P("p") * (P("u") * (P("t") * (P("_") * (P("i") * (P("f") * (P("_") * (P("n") * (P("e") * (P("w") * (P(":") * (P("c") * (P("Vn") + P("n") * (P("n") + P("V"))) + P("N") * (P("Vn") + P("n") * (P("n") + P("V"))))))))))))))))))) + P("m") * (P("s") * (P("g") * (P("_") * (P("g") * (P("s") * (P("e") * (P("t") * (P(":") * (P("n") * (P("n") * (P("nn") + P("n")))))))))))) + P("c") * (P("s_argument_spec:N") + P("h") * (P("a") * (P("r") * (P("_") * (P("s") * (P("t") * (P("r") * (P("_") * (P("l") * (P("o") * (P("w") * (P("e") * (P("r") * (P("_case:N") + P("case:N")))))) + P("u!
 ") * (P("p") * (P("p") * (P("e") * (P("r") * (P("_case:N") + P("case:N")))))) + P("titlecase:N") + P("mixed_case:N") + P("f") * (P("o") * (P("l") * (P("d") * (P("_case:N") + P("case:N"))))))))) + P("l") * (P("o") * (P("w") * (P("e") * (P("r") * (P("_case:N") + P("case:N")))))) + P("u") * (P("p") * (P("p") * (P("e") * (P("r") * (P("_case:N") + P("case:N")))))) + P("t") * (P("itlecase:N") + P("o") * (P("_") * (P("utfviii_bytes:n") + P("nfd:N")))) + P("mixed_case:N") + P("f") * (P("o") * (P("l") * (P("d") * (P("_case:N") + P("case:N"))))))))))) * eof
 -- luacheck: pop
 
 return obsolete

Modified: trunk/Master/texmf-dist/scripts/expltools/explcheck-preprocessing.lua
===================================================================
--- trunk/Master/texmf-dist/scripts/expltools/explcheck-preprocessing.lua	2025-02-25 10:47:28 UTC (rev 74283)
+++ trunk/Master/texmf-dist/scripts/expltools/explcheck-preprocessing.lua	2025-02-25 20:42:39 UTC (rev 74284)
@@ -113,7 +113,7 @@
   local num_provides = 0
   local Opener, Closer = parsers.fail, parsers.fail
   local expl3_detection_strategy = get_option('expl3_detection_strategy', options, pathname)
-  if expl3_detection_strategy ~= 'always' then
+  if expl3_detection_strategy ~= 'never' and expl3_detection_strategy ~= 'always' then
     Opener = (
       parsers.expl_syntax_on
       + unexpected_pattern(
@@ -189,7 +189,7 @@
   -- If no expl3 parts were detected, decide whether no part or the whole input file is in expl3.
   if(#expl_ranges == 0 and #content > 0) then
     issues:ignore('e102')
-    if expl3_detection_strategy == "precision" then
+    if expl3_detection_strategy == "precision" or expl3_detection_strategy == "never" then
       -- Assume that no part of the input file is in expl3.
     elseif expl3_detection_strategy == "recall" or expl3_detection_strategy == "always" then
       -- Assume that the whole input file is in expl3.



More information about the tex-live-commits mailing list.