Some new metadata features have been committed to Lexilla in the test/Metadata directory.
A C++ program 'Metadata' will load a given Lexilla shared library, instantiate each lexer, and print out the results from the metadata calls. This includes the keyword lists, options and styles supported by each lexer when that lexer provides metadata through calls. Old-style function lexers provide less metadata. Metadata can be built with gcc or clang with the provided makefile. There are instructions for building with Visual C++ in the source.
A file test/Metadata/lexerMetadata.txt contains the results of running the Metadata program on the standard Lexilla shared library in bin.
The resulting text can be viewed by users or processed by scripts that want to generate styling configuration files or dialogs. If projects would like this to be formatted into YAML, JSON, or similar, that could be an option to Metadata.
Running 'Metadata -check` checks that the Lexilla shared library in bin produces the same output as lexerMetadata.txt, then exits with a failure status and produces
lexerMetadata.txt.new with the new results if they differ. This will be used to ensure there are no regressions from changes to Lexilla and that any changes are consistent.
A python program test/Metadata/CheckMeta.py checks for consistency between include/LexicalStyles.iface, test/Metadata/lexerMetadata.txt, and lexer source code files lexers/Lex*.cxx.
Neil