@danielx/civet-language-server
v0.3.41
Published
Civet Language Server (standalone, editor-agnostic)
Downloads
1,051
Readme
Civet Language Server
Standalone, editor-agnostic Language Server Protocol implementation for Civet.
It also answers grammar-level requests (definition, references, document
symbols, completions, hover) for Hera grammar files (.hera), parsed with the
project's @danielx/hera.
Install
npm install -g @danielx/civet-language-serverFor repository development:
pnpm -C lsp/server build
pnpm -C lsp/server testCommand Line
The package installs civet-lsp, which speaks LSP over stdio:
civet-lsp --stdioUse this from editors or tools that can launch a standard LSP server process.
Browser Worker
The package also publishes browser-oriented entries for Monaco or other in-browser clients:
import { createCivetLspWorker } from '@danielx/civet-language-server/worker'
const worker = createCivetLspWorker({
civetUrl: new URL('@danielx/civet/browser.min', import.meta.url),
serverUrl: new URL('@danielx/civet-language-server/browser', import.meta.url),
})civetUrl should point to a browser build that installs globalThis.Civet in
the worker. serverUrl should point to @danielx/civet-language-server/browser
or an equivalent browser bundle of this package.
For a working example, see the Playground and its source code.
Package Entries
| Entry | Purpose |
|-------|---------|
| @danielx/civet-language-server | Conditional default entry: browser builds use the browser worker server; Node uses the Node stdio server |
| @danielx/civet-language-server/node | Explicit Node stdio server entry |
| @danielx/civet-language-server/browser | Explicit browser worker LSP server entry |
| @danielx/civet-language-server/worker | Browser helper for creating and talking to the worker |
Use /node or /browser when a bundler's package conditions are not the
runtime you want. The command-line civet-lsp wrapper always launches the Node
entry.
Source Layout
| Path | Purpose |
|------|---------|
| source/server.civet | Shared LSP server implementation |
| source/node.civet | Node stdio entrypoint |
| source/browser.civet | Browser worker entrypoint |
| source/worker.civet | Browser-side worker helpers |
