From ae4e92065cdef4b1793ab242e8ba8e4dfa59401a Mon Sep 17 00:00:00 2001 From: Bryce Kwon Date: Sat, 31 Oct 2026 15:43:42 -0700 Subject: Find a capitalised extension's lexer again Scintillua's detect() matches an extension by its case, and the fallback e1960f0 dropped had lowercased it, so MAIN.C and SETUP.PY lost their colour. The fake lexer now answers only for the suffixes it knows, as Scintillua does, which is what lets the check see it. --- tests/extensions/fake-lexers/lexer.lua | 13 ++++++++----- tests/extensions/test-syntax-highlight.lua | 4 ++++ 2 files changed, 12 insertions(+), 5 deletions(-) (limited to 'tests/extensions') diff --git a/tests/extensions/fake-lexers/lexer.lua b/tests/extensions/fake-lexers/lexer.lua index dd7545f..bb869de 100644 --- a/tests/extensions/fake-lexers/lexer.lua +++ b/tests/extensions/fake-lexers/lexer.lua @@ -1,9 +1,10 @@ -- A miniature stand-in for the Scintillua lexer module, just enough for the -- syntax-highlight checks to drive every path through the filter without the --- real collection installed. detect() names a lexer after the filename's --- suffix, or fake for a shebang naming it, and load() hands out the toy lexer --- of that name. Besides fake there is one that stops short and one that --- raises, and any other name fails to load. +-- real collection installed. detect() answers for the suffixes it knows, +-- matched by case as Scintillua's own does, or fake for a shebang naming it, +-- and load() hands out the toy lexer of that name. Besides fake there is one +-- that stops short and one that raises, and python, which detect() knows but +-- load() cannot find, as a collection missing a lexer would answer. local M = {} @@ -67,11 +68,13 @@ function M.load(name) return lexer end +local suffixes = { fake = "fake", short = "short", badlex = "badlex", py = "python" } + function M.detect(filename, line) if line ~= nil and line:match("^#!.*fake") then return "fake" end - return filename:match("%.([^.]+)$") + return suffixes[filename:match("%.([^.]+)$") or ""] end return M diff --git a/tests/extensions/test-syntax-highlight.lua b/tests/extensions/test-syntax-highlight.lua index 5fc6ea3..a0debc6 100644 --- a/tests/extensions/test-syntax-highlight.lua +++ b/tests/extensions/test-syntax-highlight.lua @@ -70,6 +70,10 @@ h.equals("a lexer stopping early leaves an escaped tail", out, "if") + out = render("post-receive", "#!/usr/bin/fake\nif") h.contains("a shebang picks the lexer of a file with no extension", out, "if") -- cgit