QUICK-LINT-JS-LSP(8)
π NAME π
quick-lint-js-lsp β LSP protocol for quick-lint-js(1), no cap. This is the QUICK-LINT-JS-LSP(8) manual page, bestie, and itβs literally all about the LSP era. π¦
π DESCRIPTION π
quick-lint-js supports the Language Server Protocol. That means code editors can ask quick-lint-js for diagnostics, and those diagnostics can be displayed inline. Itβs giving editor glow-up, fr fr. β¨
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. Group-chat energy, but make it JSON-RPC. π
β¨ SUPPORTED LSP FEATURES β¨
quick-lint-js can receive and handle the following LSP requests and notifications:
- Basic lifecycle π
exitinitializeinitializedshutdown
- Document sync π
textDocument/didClosetextDocument/didOpentextDocument/didChange
quick-lint-js sends the following LSP requests and notifications:
textDocument/publishDiagnosticswindow/showMessageworkspace/configuration
Thatβs the whole guest list, iykyk. π
π¦ 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. Left side = LSP languageId; right side = equivalent --language command-line option. Mapping time, bestie. π
quick-lint-jsβs interpretation of languageId
javascriptβjavascript-jsxjavascriptreactβjavascript-jsxjs-jsxβjavascript-jsxjsβjavascript-jsxtsxβtypescript-jsxtypescriptβ See belowtypescriptsourceβtypescripttypescriptdefinitionβtypescript-definitiontypescriptreactβtypescript-jsx(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.", thenquick-lint-jsinterprets the document as iflanguageIdwas insteadtypescriptdefinition. - Otherwise, if the base name ends with
".tsx", thenquick-lint-jsinterprets the document as iflanguageIdwas insteadtypescriptreact. - Otherwise,
quick-lint-jsinterprets the document as iflanguageIdwas 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. Special-case slay. π
π 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 andquick-lint-js. A timestamped subdirectory is created inside the tracing directory containing binary log files. Ifnullor 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"
}
}
}
}
Thatβs the config tea. Steep it, donβt spill it. π
π SEE ALSO π
And thatβs the page, bestie β quick-lint-js version 3.2.0, manual page QUICK-LINT-JS-LSP(8). Periodt. π π
π¦ where this page comes from
- alpine 3.24: quick-lint-js-doc 3.2.0-r1 Β· GPL-3.0-or-later
- nixos 26.05: quick-lint-js 3.2.0
- nixpkgs unstable: quick-lint-js 3.2.0
- Copyright (C) 2020 Matthew "strager" Glazar
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms