GenXs Log File Highlighter
VS Code extension for GenXs trading-system log files (.log). Written from scratch (v4).
Coloring is split by how far it has to scale. The log structure — line prefix (time, thread,
ticks#hash, level, module path, method), message numbers, quoted strings, exception names and
stack-trace rows — and the digit-group colors are painted by a contributed TextMate grammar whose
scopes are mapped to your palette through editor.tokenColorCustomizations. That runs in the editor's
own tokenizer, so it works at any file size — a 100 MB log is colored like a 100 KB one. The remaining
features — digit-group marks (comma/space/underline/hairline/caret), the timestamp progress
underline, custom-pattern highlights and the selection-duration status bar — are editor
decorations over the visible lines only, so their cost is proportional to what is on screen, never to
file size.
Keeps the marketplace identity of the old fork (GenXs.GenXsLogFileHighlighter), so installing
it simply updates the previous version. Settings moved to the genxsLog.* namespace — open them
with the GenXs Log: Settings command.
Features (each has its own switch under genxsLog.feature.*)
- Syntax highlighting (
baseColoring) — grammar-driven colors for the line prefix (time, thread,
ticks#hash, level, module path, method), message numbers, quoted strings, exception names and
stack-trace rows. Works at any file size; off → log text uses the default editor color.
- Digit grouping (
numberGrouping) — readability for large numbers in the message: marks
(comma, space, underline, hairline, caret) on the visible lines, plus alternating luminance and
group colors (one color per group of three digits) painted through the grammar so they work at
any size. GenXs Log: Digit Grouping Style / ... Strength commands.
- Progress indicator — each visible timestamp is underlined proportionally to its position
within the file's time span (first to last timestamp).
- Custom patterns — user regexes (
genxsLog.customPatterns) highlighted on visible lines.
- Selection duration — status-bar time span between the first and last selected lines.
The palette is per theme kind — genxsLog.colorsDark / genxsLog.colorsLight, each defaulting to the
built-in GenXs Dark / GenXs Light templates — and is best edited in the GenXs Log: Settings panel.
Building
npm install
npm run build # bundle to dist/extension.js
npm test # unit tests (node --test), incl. grammar tokenization tests
npm run gen:grammar # regenerate syntaxes/log.groups.tmLanguage.json
npm run package # build .vsix (requires vsce)