aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2021-05-27 09:16:14 +0100
committerAleksey Kladov <[email protected]>2021-05-27 09:16:14 +0100
commitcabb679cbb7d94fba5bdbcfdb0dc66e9fdd47415 (patch)
tree5b0a12bb421cffa9e4b7ee0d966b9df2d1bd93bb
parent7d1653dcdc94347cccaf8d50d45d896a3c286d93 (diff)
internal: explain the motivation behind early configuration
-rw-r--r--docs/dev/lsp-extensions.md18
1 files changed, 12 insertions, 6 deletions
diff --git a/docs/dev/lsp-extensions.md b/docs/dev/lsp-extensions.md
index fbe2ce1c9..11a3dd04e 100644
--- a/docs/dev/lsp-extensions.md
+++ b/docs/dev/lsp-extensions.md
@@ -25,15 +25,21 @@ rust-analyzer supports clangd's extension for opting into UTF-8 as the coordinat
25 25
26https://clangd.llvm.org/extensions.html#utf-8-offsets 26https://clangd.llvm.org/extensions.html#utf-8-offsets
27 27
28## `initializationOptions` 28## Configuration in `initializationOptions`
29
30**Issue:** https://github.com/microsoft/language-server-protocol/issues/567
31
32The `initializationOptions` filed of the `InitializeParams` of the initialization request should contain `"rust-analyzer"` section of the configuration.
33
34`rust-analyzer` normally sends a `"workspace/configuration"` request with `{ "items": ["rust-analyzer"] }` payload.
35However, the server can't do this during initialization.
36At the same time some essential configuration parameters are needed early on, before servicing requests.
37For this reason, we ask that `initializationOptions` contains the configuration, as if the server did make a `"workspace/configuration"` request.
29 38
30For `initializationOptions`, `rust-analyzer` expects `"rust-analyzer"` section of the configuration.
31That is, `rust-analyzer` usually sends `"workspace/configuration"` request with `{ "items": ["rust-analyzer"] }` payload.
32`initializationOptions` should contain the same data that would be in the first item of the result.
33If a language client does not know about `rust-analyzer`'s configuration options it can get sensible defaults by doing any of the following: 39If a language client does not know about `rust-analyzer`'s configuration options it can get sensible defaults by doing any of the following:
34 * Not sending `initializationOptions` 40 * Not sending `initializationOptions`
35 * Send `"initializationOptions": null` 41 * Sending `"initializationOptions": null`
36 * Send `"initializationOptions": {}` 42 * Sending `"initializationOptions": {}`
37 43
38## Snippet `TextEdit` 44## Snippet `TextEdit`
39 45