ludic/tools/editors/vscode/package.json
Orkuncakilkaya e3e1bc7784 fix(tools): formatter bracket rules, LSP compiler diagnostics, vocabulary sync
- 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>
2026-09-05 01:12:26 +03:00

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"
}
}