Kornel Benko schrieb am 10.03.2026 11:49 (GMT +01:00):
> I made a dummy latexcolors.layout to input "latexcolors.module".
> With
>        $ check_layout latexcolors
> I get now:
> LyX: Unknown LaTeXColor tag `airforceblue' [around line 11 of file
> [layouts/latexcolors.module] current token: 'airforceblue' context: ''] LyX: 
> No
> EndColor

Oh, I see. Better with the attached?

Jürgen
diff --git a/src/tests/dummy4checklayout.cpp b/src/tests/dummy4checklayout.cpp
index 77335b1e91..ffc8da089a 100644
--- a/src/tests/dummy4checklayout.cpp
+++ b/src/tests/dummy4checklayout.cpp
@@ -25,6 +25,7 @@
 #include "output_xhtml.h"
 #include "xml.h"
 
+#include "support/Lexer.h"
 #include "support/Messages.h"
 
 #include <iostream>
@@ -64,9 +65,89 @@ LaTeXColor LaTeXColors::getLaTeXColor(string const & /* name */)
 	return LaTeXColor();
 }
 
-bool LaTeXColor::read(lyx::support::Lexer&)
+bool LaTeXColor::read(lyx::support::Lexer & lex)
 {
+	if (!lex.next()) {
+		lex.printError("No name given for LaTeX color: `$$Token'.");
+		return false;
+	}
+
+	if (!readColor(lex)) {
+		lex.printError("Error parsing Color: `$$Token'.");
+		return false;
+	}
+
 	return true;
 }
 
+
+bool LaTeXColor::readColor(lyx::support::Lexer & lex)
+{
+	enum LaTeXColorTags {
+		LC_CATEGORY = 1,
+		LC_CMYK,
+		LC_COLOR_MODEL,
+		LC_END,
+		LC_GUINAME,
+		LC_HEXNAME,
+		LC_LATEXNAME,
+		LC_REQUIRES,
+		LC_SVG_CLASH
+	};
+
+	// Keep these sorted alphabetically!
+	lyx::support::LexerKeyword latexColorTags[] = {
+		{ "category",             LC_CATEGORY },
+		{ "cmyk",                 LC_CMYK },
+		{ "colormodel",           LC_COLOR_MODEL },
+		{ "endcolor",             LC_END },
+		{ "guiname",              LC_GUINAME },
+		{ "hexname",              LC_HEXNAME },
+		{ "latexname",            LC_LATEXNAME },
+		{ "requires",             LC_REQUIRES },
+		{ "svgclash",             LC_SVG_CLASH },
+	};
+
+	bool error = false;
+	bool finished = false;
+	lex.pushTable(latexColorTags);
+	// parse style section
+	while (!finished && lex.isOK() && !error) {
+		int le = lex.lex();
+		// See comment in LyXRC.cpp.
+		switch (le) {
+		case lyx::support::Lexer::LEX_FEOF:
+			continue;
+
+		case lyx::support::Lexer::LEX_UNDEF: // parse error
+			lex.printError("Unknown LaTeXColor tag `$$Token'");
+			error = true;
+			continue;
+
+		default:
+			break;
+		}
+		switch (static_cast<LaTeXColorTags>(le)) {
+		case LC_END: // end of structure
+			finished = true;
+			break;
+		case LC_GUINAME:
+		case LC_HEXNAME:
+		case LC_CATEGORY:
+		case LC_CMYK:
+		case LC_COLOR_MODEL:
+		case LC_LATEXNAME: 
+		case LC_SVG_CLASH:
+		case LC_REQUIRES:
+			break;
+		}
+	}
+	if (!finished) {
+		lex.printError("No EndColor tag found for LaTeXColor tag `$$Token'");
+		return false;
+	}
+	lex.popTable();
+	return finished && !error;
+}
+
 } // namespace lyx
-- 
lyx-devel mailing list
[email protected]
https://lists.lyx.org/mailman/listinfo/lyx-devel

Reply via email to