- ludic-fmt: `rows[i]`, `new []int`, `s[a..b]`, `emit(`, `~x`, list-literal
and query-tag braces stay tight; member calls hug their paren
(`Date.new(`, `Prefab.spawn(`); `<< >> & | ^ ~` are operators and
`&& ||` are not — mirrored in ludic_syntax.h, LudicLexer.kt and the
TextMate grammar. 149 of 274 tracked sources failed --check before.
- ludic-lsp: `initializationOptions.compilerDiagnostics` / `compilerPath`
are honoured — on save the document's compilation unit is compiled and
`file:line: error: msg` is published as a "ludicc" diagnostic (the
option had been documented but never implemented); the workspace scan
file is per process; bracket codes spelled as char literals
- Overlay added to LUDIC_PHASES, LudicTokens.kt, ludic-mode.el and the
grammar (the game uses it; check-vocabulary flagged the drift)
- editors: VS Code snippets/package.json/extension.js (`${workspaceFolder}`
and `~` expansion, PATH lookup, Apache-2.0, real repo URL), Neovim root
markers, Helix/Zed/Sublime bin/ paths, Emacs vocabulary, JetBrains
comments; tools/editors/README.md no longer describes C tooling
- .forgejo workflows clone `${{ github.server_url }}/${{ github.repository }}`
so a fork or mirror tests itself; the docs publish pushes the same way
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| README.md | ||
Ludic for Zed
Zed extensions want a Tree-sitter grammar for highlighting, which this toolchain deliberately does not ship — the vocabulary lives in one shared header and is exposed through the language server's semantic tokens instead, so there is no second grammar to keep honest.
That is enough for Zed: point it at ludic-lsp and highlighting, completion,
diagnostics and formatting all arrive over LSP.
Add to ~/.config/zed/settings.json:
{
"lsp": {
"ludic-lsp": {
"binary": { "path": "/path/to/gpp/bin/ludic-lsp", "arguments": ["--stdio"] },
"initialization_options": {
"compilerPath": "/path/to/gpp/bin/ludicc",
"compilerDiagnostics": true,
"indentSize": 2
}
}
},
"file_types": { "Ludic": ["ludic"] },
"languages": {
"Ludic": {
"language_servers": ["ludic-lsp"],
"tab_size": 2,
"hard_tabs": false,
"format_on_save": "on"
}
}
}
If you would rather have static highlighting too, the TextMate grammar in
tools/editors/shared/ludic.tmLanguage.json can be dropped into a Zed extension
that declares a grammars entry — but it is not required.