{
"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 LSP server documentation
This page documents the quick-lint-js Language Server Protocol (LSP) server.
This page is written for people writing editor plugins. If you just want to use quick-lint-js in your editor, follow one of these installation guides instead:
Description
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 CLI 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.
Supported LSP features
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
Document languageId
quick-lint-js uses languageId from a textDocument/didOpen notification to determine the language of that LSP document according to the following table:
LSP languageId |
Equivalent
--language= |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
See below |
|
|
|
|
|
|
(any) |
See below |
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
languageIdwas insteadtypescriptdefinition. -
Otherwise, if the base name ends with ".tsx", then quick-lint-js interprets the document as if
languageIdwas insteadtypescriptreact. -
Otherwise, quick-lint-js interprets the document as if
languageIdwas insteadtypescriptsource.
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.
Configuration
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: