scaffold: VSCode/VSCodium extension wrapping testium lsp

A thin LSP client that spawns `testium lsp` and forwards messages to
VSCode. All language intelligence lives in the testium repo, so this
extension only needs republishing for editor-side UX changes.

  - package.json: declares the .tum language, registers the LSP client,
    exposes testium.serverPath and testium.trace.server settings.
  - src/extension.ts: vscode-languageclient setup over stdio, surfaces a
    user-visible error if `testium lsp` can't start.
  - syntaxes/tum.tmLanguage.json: TextMate grammar embedding source.yaml
    plus tum-specific tokens for $(name), <| python |>, {% jinja %},
    {{ jinja }}.
  - language-configuration.json: comment char, bracket pairs, auto-close
    for $(/), <|/|>, {%/%}, {{/}}.
  - README.md: install (incl. testium[lsp] extra), settings, packaging
    via vsce, publish to both VS Marketplace and Open VSX (the latter
    is what VSCodium / Cursor / Gitpod use — same .vsix artifact).

Works identically on VSCode and VSCodium — no Microsoft-proprietary
API surface used.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-29 14:59:22 +02:00
parent c6aa6bb07a
commit 770e4cacf1
9 changed files with 514 additions and 0 deletions

View File

@@ -0,0 +1,38 @@
{
"comments": {
"lineComment": "#"
},
"brackets": [
["{", "}"],
["[", "]"],
["(", ")"]
],
"autoClosingPairs": [
{ "open": "{", "close": "}" },
{ "open": "[", "close": "]" },
{ "open": "(", "close": ")" },
{ "open": "\"", "close": "\"", "notIn": ["string"] },
{ "open": "'", "close": "'", "notIn": ["string"] },
{ "open": "$(", "close": ")" },
{ "open": "<|", "close": "|>" },
{ "open": "{%", "close": "%}" },
{ "open": "{{", "close": "}}" }
],
"surroundingPairs": [
["{", "}"],
["[", "]"],
["(", ")"],
["\"", "\""],
["'", "'"]
],
"indentationRules": {
"increaseIndentPattern": "^.*:\\s*$",
"decreaseIndentPattern": "^\\s+[}\\]].*$"
},
"onEnterRules": [
{
"beforeText": "^\\s*-\\s+[^:]*:\\s*$",
"action": { "indent": "indent" }
}
]
}