document feature flags

This commit is contained in:
Aleksey Kladov 2019-10-25 09:00:30 +03:00
parent c02f1165ca
commit dc65219ae1
5 changed files with 20 additions and 21 deletions

View file

@ -1,4 +1,11 @@
//! FIXME: write short doc here //! Config used by the language server.
//!
//! We currently get this config from `initialize` LSP request, which is not the
//! best way to do it, but was the simplest thing we could implement.
//!
//! Of particular interest is the `feature_flags` hash map: while other fields
//! configure the server itself, feature flags are passed into analysis, and
//! tweak things like automatic insertion of `()` in completions.
use rustc_hash::FxHashMap; use rustc_hash::FxHashMap;
@ -72,10 +79,7 @@ mod test {
assert_eq!(default, serde_json::from_str(r#"{}"#).unwrap()); assert_eq!(default, serde_json::from_str(r#"{}"#).unwrap());
assert_eq!( assert_eq!(
default, default,
serde_json::from_str( serde_json::from_str(r#"{"publishDecorations":null, "lruCapacity":null}"#).unwrap()
r#"{"publishDecorations":null, "showWorkspaceLoaded":null, "lruCapacity":null}"#
)
.unwrap()
); );
} }
} }

View file

@ -83,8 +83,6 @@ host.
### Settings ### Settings
* `rust-analyzer.highlightingOn`: enables experimental syntax highlighting * `rust-analyzer.highlightingOn`: enables experimental syntax highlighting
* `rust-analyzer.showWorkspaceLoadedNotification`: to ease troubleshooting, a
notification is shown by default when a workspace is loaded
* `rust-analyzer.enableEnhancedTyping`: by default, rust-analyzer intercepts * `rust-analyzer.enableEnhancedTyping`: by default, rust-analyzer intercepts
`Enter` key to make it easier to continue comments. Note that it may conflict with VIM emulation plugin. `Enter` key to make it easier to continue comments. Note that it may conflict with VIM emulation plugin.
* `rust-analyzer.raLspServerPath`: path to `ra_lsp_server` executable * `rust-analyzer.raLspServerPath`: path to `ra_lsp_server` executable
@ -102,6 +100,17 @@ host.
* `rust-analyzer.trace.server`: enables internal logging * `rust-analyzer.trace.server`: enables internal logging
* `rust-analyzer.trace.cargo-watch`: enables cargo-watch logging * `rust-analyzer.trace.cargo-watch`: enables cargo-watch logging
* `RUST_SRC_PATH`: environment variable that overwrites the sysroot * `RUST_SRC_PATH`: environment variable that overwrites the sysroot
* `rust-analyzer.featureFlags` -- a JSON object to tweak fine-grained behavior:
```js
{
// Show diagnostics produced by rust-analyzer itself.
"lsp.diagnostics": true,
// Automatically insert `()` and `<>` when completing functions and types.
"completion.insertion.add-call-parenthesis": true,
// Show notification when workspace is fully loaded
"notifications.workspace-loaded": true,
}
```
## Emacs ## Emacs

View file

@ -229,11 +229,6 @@
"description": "A list of patterns for cargo-watch to ignore (will be passed as `--ignore`)", "description": "A list of patterns for cargo-watch to ignore (will be passed as `--ignore`)",
"default": [] "default": []
}, },
"rust-analyzer.showWorkspaceLoadedNotification": {
"type": "boolean",
"description": "Controls whether rust-analyzer displays a notification when a project is loaded.",
"default": false
},
"rust-analyzer.trace.server": { "rust-analyzer.trace.server": {
"type": "string", "type": "string",
"scope": "window", "scope": "window",

View file

@ -20,7 +20,6 @@ export class Config {
public rainbowHighlightingOn = false; public rainbowHighlightingOn = false;
public enableEnhancedTyping = true; public enableEnhancedTyping = true;
public raLspServerPath = RA_LSP_DEBUG || 'ra_lsp_server'; public raLspServerPath = RA_LSP_DEBUG || 'ra_lsp_server';
public showWorkspaceLoadedNotification = true;
public lruCapacity: null | number = null; public lruCapacity: null | number = null;
public displayInlayHints = true; public displayInlayHints = true;
public maxInlayHintLength: null | number = null; public maxInlayHintLength: null | number = null;
@ -56,12 +55,6 @@ export class Config {
) as boolean; ) as boolean;
} }
if (config.has('showWorkspaceLoadedNotification')) {
this.showWorkspaceLoadedNotification = config.get(
'showWorkspaceLoadedNotification'
) as boolean;
}
if (!this.highlightingOn && Server) { if (!this.highlightingOn && Server) {
Server.highlighter.removeHighlights(); Server.highlighter.removeHighlights();
} }

View file

@ -42,8 +42,6 @@ export class Server {
documentSelector: [{ scheme: 'file', language: 'rust' }], documentSelector: [{ scheme: 'file', language: 'rust' }],
initializationOptions: { initializationOptions: {
publishDecorations: true, publishDecorations: true,
showWorkspaceLoaded:
Server.config.showWorkspaceLoadedNotification,
lruCapacity: Server.config.lruCapacity, lruCapacity: Server.config.lruCapacity,
excludeGlobs: Server.config.excludeGlobs, excludeGlobs: Server.config.excludeGlobs,
useClientWatching: Server.config.useClientWatching, useClientWatching: Server.config.useClientWatching,