- 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>
158 lines
4.3 KiB
JSON
158 lines
4.3 KiB
JSON
{
|
|
"name": "ludic",
|
|
"displayName": "Ludic",
|
|
"description": "Ludic language support: syntax highlighting, formatting, and the ludic-lsp language server. Also highlights ```ludic fences in Markdown.",
|
|
"version": "1.0.0",
|
|
"publisher": "ludic",
|
|
"license": "Apache-2.0",
|
|
"engines": {
|
|
"vscode": "^1.75.0"
|
|
},
|
|
"categories": [
|
|
"Programming Languages",
|
|
"Formatters",
|
|
"Linters"
|
|
],
|
|
"keywords": [
|
|
"ludic",
|
|
"ecs",
|
|
"gamedev"
|
|
],
|
|
"main": "./src/extension.js",
|
|
"activationEvents": [
|
|
"onLanguage:ludic",
|
|
"onLanguage:markdown",
|
|
"workspaceContains:**/*.ludic"
|
|
],
|
|
"contributes": {
|
|
"languages": [
|
|
{
|
|
"id": "ludic",
|
|
"aliases": [
|
|
"Ludic",
|
|
"ludic"
|
|
],
|
|
"extensions": [
|
|
".ludic"
|
|
],
|
|
"configuration": "./language-configuration.json",
|
|
"icon": {
|
|
"light": "./icons/ludic.svg",
|
|
"dark": "./icons/ludic.svg"
|
|
}
|
|
}
|
|
],
|
|
"grammars": [
|
|
{
|
|
"language": "ludic",
|
|
"scopeName": "source.ludic",
|
|
"path": "./syntaxes/ludic.tmLanguage.json"
|
|
},
|
|
{
|
|
"scopeName": "markdown.ludic.codeblock",
|
|
"path": "./syntaxes/ludic.markdown-injection.json",
|
|
"injectTo": [
|
|
"text.html.markdown"
|
|
],
|
|
"embeddedLanguages": {
|
|
"meta.embedded.block.ludic": "ludic"
|
|
}
|
|
}
|
|
],
|
|
"semanticTokenScopes": [
|
|
{
|
|
"language": "ludic",
|
|
"scopes": {
|
|
"struct": [
|
|
"entity.name.type.component.ludic"
|
|
],
|
|
"class": [
|
|
"entity.name.type.archetype.ludic"
|
|
],
|
|
"namespace": [
|
|
"entity.name.type.scene.ludic"
|
|
],
|
|
"function.defaultLibrary": [
|
|
"support.function.builtin.ludic"
|
|
],
|
|
"enumMember.readonly.defaultLibrary": [
|
|
"constant.language.phase.ludic"
|
|
],
|
|
"decorator": [
|
|
"entity.name.function.decorator.ludic"
|
|
]
|
|
}
|
|
}
|
|
],
|
|
"configuration": {
|
|
"title": "Ludic",
|
|
"properties": {
|
|
"ludic.server.path": {
|
|
"type": "string",
|
|
"default": "",
|
|
"markdownDescription": "Path to the `ludic-lsp` binary; `~` and `${workspaceFolder}` are expanded. Empty means: look in `bin/ludic-lsp` under each workspace folder, then on `PATH`."
|
|
},
|
|
"ludic.server.enabled": {
|
|
"type": "boolean",
|
|
"default": true,
|
|
"description": "Run the Ludic language server. Turn this off to keep only the static syntax highlighting."
|
|
},
|
|
"ludic.compilerPath": {
|
|
"type": "string",
|
|
"default": "",
|
|
"markdownDescription": "Path to `ludicc`; `~` and `${workspaceFolder}` are expanded. The server runs it on save for the compiler's own diagnostics. Empty means `bin/ludicc` under the workspace, then `PATH`."
|
|
},
|
|
"ludic.compilerDiagnostics": {
|
|
"type": "boolean",
|
|
"default": true,
|
|
"description": "Report errors from the Ludic compiler on save, in addition to the server's own structural checks."
|
|
},
|
|
"ludic.indentSize": {
|
|
"type": "number",
|
|
"default": 2,
|
|
"description": "Spaces per indent level used by the formatter when the editor does not say otherwise."
|
|
},
|
|
"ludic.trace.server": {
|
|
"type": "string",
|
|
"enum": [
|
|
"off",
|
|
"messages",
|
|
"verbose"
|
|
],
|
|
"default": "off",
|
|
"description": "Log the traffic between VS Code and the Ludic language server."
|
|
}
|
|
}
|
|
},
|
|
"commands": [
|
|
{
|
|
"command": "ludic.restartServer",
|
|
"title": "Ludic: Restart Language Server"
|
|
},
|
|
{
|
|
"command": "ludic.showOutput",
|
|
"title": "Ludic: Show Language Server Log"
|
|
}
|
|
],
|
|
"configurationDefaults": {
|
|
"[ludic]": {
|
|
"editor.insertSpaces": true,
|
|
"editor.tabSize": 2,
|
|
"editor.semanticHighlighting.enabled": true
|
|
}
|
|
},
|
|
"snippets": [
|
|
{
|
|
"language": "ludic",
|
|
"path": "./snippets/ludic.json"
|
|
}
|
|
]
|
|
},
|
|
"dependencies": {
|
|
"vscode-languageclient": "^9.0.1"
|
|
},
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "https://git.workshopsoft.io/workshopsoft/ludic"
|
|
}
|
|
}
|