quick-lint-js-lsp − LSP protocol for *quick−lint−js*(1)
quick−lint−js supports the Language Server Protocol. This allows code editors to ask quick−lint−js for diagnostics which can be displayed inline.
To start the quick−lint−js LSP server, run the quick−lint−js(1) program with the −−lsp−server option. The server accepts JSON−RPC+LSP messages from the editor via standard input, and sends JSON−RPC messages to the editor via standard output.
quick−lint−js can receive and handle the following LSP requests and notifications:
• Basic lifecycle
• exit
• initialize
• initialized
• shutdown
• Document sync
• textDocument/didClose
• textDocument/didOpen
• textDocument/didChange
quick−lint−js sends the following LSP requests and notifications:
• textDocument/publishDiagnostics
• window/showMessage
• workspace/configuration
quick−lint−js uses languageId from a textDocument/didOpen notification to determine the language of that LSP document according to the following table:
quick−lint−js’s interpretation of languageId
If the languageId is equal to typescript, then quick−lint−js inspects the base name of that document’s URI to determine the language of that document:
• If the base name contains ".d.", then quick−lint−js interprets the document as if languageId was instead typescriptdefinition.
• Otherwise, if the base name ends with ".tsx", then quick−lint−js interprets the document as if languageId was instead typescriptreact.
• Otherwise, quick−lint−js interprets the document as if languageId was instead typescriptsource.
quick−lint−js interprets documents with a base name of quick−lint−js.config as a JSON config file. The document’s language ID is ignored. See quick−lint−js.config(5) for more details.
The quick−lint−js LSP server accepts the following configuration settings, communicated through workspace/configuration:
quick−lint−js.tracing−directory
Log raw LSP messages between the editor and quick−lint−js. A timestamped subdirectory is created inside the tracing directory containing binary log files. If null or an empty string, tracing is disabled.
It is also possible to configure quick−lint−js using the initialize request. To do so, set initializationOptions to an object containing a configuration object containing the settings. For example, the following initialize request sets quick−lint−js.tracing−directory:
{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"processId": null,
"rootUri": null,
"capabilities": {},
"initializationOptions": {
"configuration": {
"quick−lint−js.tracing−directory":
"/tmp/quick−lint−js−logs"
}
}
}
}
quick−lint−js(1)