npm.io
0.1.2 • Published 19h agoCLI

@tabnas/lsp

Licence
MIT
Version
0.1.2
Deps
2
Size
160 kB
Vulns
0
Weekly
0

@tabnas/lsp

The tabnas language server and language-server generator.

One LSP server serves every tabnas grammar — fleet plugins, serialized GrammarSpec data, or BNF-dialect text added dynamically through workspace configuration — and the same machinery generates standalone single-language servers (Node packages or Go binaries) plus the editor plugins to use them, from one parser module or grammar.

# the unified server, over stdio
npx --package=@tabnas/lsp tabnas-lsp --stdio

# a branded single-language server + editor plugins
npx --package=@tabnas/lsp tabnas-lsp-gen \
  --spec my-grammar.json --language-id mydsl --out mydsl-tools

--package is required either way: this package ships two binaries and neither is named @tabnas/lsp, so the package-name form of npx cannot pick one, and a bare npx tabnas-lsp-gen would fetch an unrelated registry package.

What it provides

Diagnostics, semantic tokens, document symbols (outline) and completion, over incremental didChange sync, for any grammar the registry can reach. Grammars can be added without rebuilding the server: an installed plugin module, a serialized GrammarSpec, or a BNF dialect compiled at load time, declared per workspace folder and reloaded when the file changes.

Engine

Requires a @tabnas/parser providing the LSP engine contract — recovery, ruleDone and continuations — which ships from 0.9.0.

The peer range is deliberately open (>=0), the fleet convention, so an install resolves the newest published engine. That is what satisfies the contract in practice: install this package and npm gives you 0.9.0 or later. Pinning an older engine by hand is the one way to get a resolution that installs cleanly and then cannot serve — completion returns nothing.

Documentation

Full design, the dynamism ladder, the generator matrix and the security model are in doc/design.md. Contributor and agent guidance is in AGENTS.md.

License

MIT

Keywords