rust-analyzer for Vim/Neovim, works as an extension with coc.nvim.
:CocInstall coc-rust-analyzer
remove
rust-analyzer
config fromcoc-settings.json
if you've setNOTE: For Apple Silicon users, you shouldn't use Node.js v15, checkout #975 for more.
It's recommended to add $CARGO_HOME
to workspace.ignoredFolders
to stop rust-analyzer runs cargo check
on sysroot crates:
"workspace.ignoredFolders": [
"$HOME",
"$HOME/.cargo/**",
"$HOME/.rustup/**"
],
This extension is configured using a jsonc file. You can open this configuration file using the command :CocConfig
, and it is typically located at $HOME/.config/nvim/coc-settings.json
.
Configuration | Description | Default |
---|---|---|
rust-analyzer.enable |
Enable coc-rust-analyzer |
true |
rust-analyzer.assist.emitMustUse |
Whether to insert #[mustuse] when generating `as` methods for enum variants. | false |
rust-analyzer.assist.expressionFillDefault |
Placeholder expression to use for missing expressions in assists. | todo |
rust-analyzer.cachePriming.enable |
Warm up caches on project load. | true |
rust-analyzer.cachePriming.numThreads |
How many worker threads to handle priming caches. The default 0 means to pick automatically. |
0 |
rust-analyzer.cargo.autoreload |
Automatically refresh project info via cargo metadata on Cargo.toml or .cargo/config.toml changes. |
true |
rust-analyzer.cargo.buildScripts.enable |
Run build scripts (build.rs ) for more precise code analysis. |
true |
rust-analyzer.cargo.buildScripts.invocationLocation |
Specifies the working directory for running build scripts. | workspace |
rust-analyzer.cargo.buildScripts.invocationStrategy |
Specifies the invocation strategy to use when running the build scripts command. | null |
rust-analyzer.cargo.buildScripts.useRustcWrapper |
Use RUSTC_WRAPPER=rust-analyzer when running build scripts to avoid checking unnecessary things. |
true |
rust-analyzer.cargo.extraEnv |
Extra environment variables that will be set when running cargo, rustc or other commands within the workspace. Useful for setting RUSTFLAGS. | null |
rust-analyzer.cargo.features |
List of features to activate. Set this to "all" to pass --all-features to cargo. |
`` |
rust-analyzer.cargo.noDefaultFeatures |
Whether to pass --no-default-features to cargo. |
false |
rust-analyzer.cargo.sysroot |
Relative path to the sysroot, or "discover" to try to automatically find it via "rustc --print sysroot". | discover |
rust-analyzer.cargo.sysrootSrc |
Relative path to the sysroot library sources. If left unset, this will default to {cargo.sysroot}/lib/rustlib/src/rust/library . |
null |
rust-analyzer.cargo.target |
Compilation target override (target triple). | null |
rust-analyzer.cargo.unsetTest |
Unsets #[cfg(test)] for the specified crates. |
core |
rust-analyzer.check.allTargets |
Check all targets and tests (--all-targets ). |
true |
rust-analyzer.check.command |
Cargo command to use for cargo check . |
check |
rust-analyzer.check.extraArgs |
Extra arguments for cargo check . |
[] |
rust-analyzer.check.extraEnv |
Extra environment variables that will be set when running cargo check . Extends #rust-analyzer.cargo.extraEnv# . |
{} |
rust-analyzer.check.features |
List of features to activate. Defaults to #rust-analyzer.cargo.features# . Set to "all" to pass --all-features to Cargo. |
null |
rust-analyzer.check.invocationLocation |
Specifies the working directory for running checks. | workspace |
rust-analyzer.check.invocationStrategy |
Specifies the invocation strategy to use when running the checkOnSave command. | per_workspace |
rust-analyzer.check.noDefaultFeatures |
Whether to pass --no-default-features to Cargo. Defaults to #rust-analyzer.cargo.noDefaultFeatures# . |
null |
rust-analyzer.check.overrideCommand |
Override the command rust-analyzer uses instead of cargo check for diagnostics on save. |
null |
rust-analyzer.check.targets |
Check for specific targets. Defaults to #rust-analyzer.cargo.target# if empty. |
null |
rust-analyzer.checkOnSave |
Run the check command for diagnostics on save. | true |
rust-analyzer.completion.autoimport.enable |
Toggles the additional completions that automatically add imports when completed | true |
rust-analyzer.completion.autoself.enable |
Toggles the additional completions that automatically show method calls and field accesses with self prefixed to them when inside a method. |
true |
rust-analyzer.completion.callable.snippets |
Whether to add parenthesis and argument snippets when completing function. | fill_arguments |
rust-analyzer.completion.limit |
Maximum number of completions to return. If None , the limit is infinite. |
null |
rust-analyzer.completion.postfix.enable |
Whether to show postfix snippets like dbg , if , not , etc. |
true |
rust-analyzer.completion.privateEditable.enable |
Enables completions of private items and fields that are defined in the current workspace even if they are not visible at the current position. | false |
rust-analyzer.completion.snippets.custom |
Custom completion snippets. | |
rust-analyzer.debug.runtime |
Choose which debug runtime to use | termdebug |
rust-analyzer.debug.vimspector.configuration.name |
Specify the name of the vimspector configuration name. The following args will be passed to the configuration: Executable and Args (both strings) |
launch |
rust-analyzer.debug.nvimdap.configuration.template |
Configuration template used to invoked dap.run(conf). The template will be instantiate like thie: $exe will be replaced with executable path, $args will be replaced with arguments. An example template: { name = \"Debug (with args)\", type = \"codelldb\", request = \"launch\", program = $exe, args = $args, cwd = \"${workspaceFolder}\", stopOnEntry = false, terminal = \"integrated\" } |
"" |
rust-analyzer.diagnostics.disabled |
List of rust-analyzer diagnostics to disable. | `` |
rust-analyzer.diagnostics.enable |
Whether to show native rust-analyzer diagnostics. | true |
rust-analyzer.diagnostics.experimental.enable |
Whether to show experimental rust-analyzer diagnostics that might have more false positives than usual. | false |
rust-analyzer.diagnostics.remapPrefix |
Map of prefixes to be substituted when parsing diagnostic file paths. This should be the reverse mapping of what is passed to rustc as --remap-path-prefix . |
{} |
rust-analyzer.diagnostics.warningsAsHint |
List of warnings that should be displayed with hint severity. | `` |
rust-analyzer.diagnostics.warningsAsInfo |
List of warnings that should be displayed with info severity. | `` |
rust-analyzer.disableProgressNotifications |
Disable initialization and workdone progress notifications | false |
rust-analyzer.files.excludeDirs |
These directories will be ignored by rust-analyzer. | `` |
rust-analyzer.files.watcher |
Controls file watching implementation. | client |
rust-analyzer.highlightRelated.breakPoints.enable |
Enables highlighting of related references while the cursor is on break , loop , while , or for keywords. |
true |
rust-analyzer.highlightRelated.exitPoints.enable |
Enables highlighting of all exit points while the cursor is on any return , ? , fn , or return type arrow (-> ). |
true |
rust-analyzer.highlightRelated.references.enable |
Enables highlighting of related references while the cursor is on any identifier. | true |
rust-analyzer.highlightRelated.yieldPoints.enable |
Enables highlighting of all break points for a loop or block context while the cursor is on any async or await keywords. |
true |
rust-analyzer.hover.documentation.enable |
Whether to show documentation on hover. | true |
rust-analyzer.hover.documentation.keywords.enable |
Whether to show keyword hover popups. Only applies when #rust-analyzer.hover.documentation.enable# is set. |
true |
rust-analyzer.hover.links.enable |
Use markdown syntax for links in hover. | true |
rust-analyzer.imports.granularity.enforce |
Whether to enforce the import granularity setting for all files. If set to false rust-analyzer will try to keep import styles consistent per file. | false |
rust-analyzer.imports.granularity.group |
How imports should be grouped into use statements. | crate |
rust-analyzer.imports.group.enable |
Group inserted imports by the https://rust-analyzer.github.io/manual.html#auto-import[following order]. Groups are separated by newlines. | true |
rust-analyzer.imports.merge.glob |
Whether to allow import insertion to merge new imports into single path glob imports like use std::fmt::*; . |
true |
rust-analyzer.imports.prefer.no.std |
Prefer to unconditionally use imports of the core and alloc crate, over the std crate. | false |
rust-analyzer.imports.prefix |
The path structure for newly inserted paths to use. | plain |
rust-analyzer.inlayHints.bindingModeHints.enable |
Whether to show inlay type hints for binding modes. | false |
rust-analyzer.inlayHints.chainingHints.enable |
Whether to show inlay type hints for method chains. | true |
rust-analyzer.inlayHints.closingBraceHints.enable |
Whether to show inlay hints after a closing } to indicate what item it belongs to. |
true |
rust-analyzer.inlayHints.closingBraceHints.minLines |
Minimum number of lines required before the } until the hint is shown (set to 0 or 1 to always show them). |
25 |
rust-analyzer.inlayHints.closureReturnTypeHints.enable |
Whether to show inlay type hints for return types of closures. | never |
rust-analyzer.inlayHints.discriminantHints.enable |
Whether to show enum variant discriminant hints. | never |
rust-analyzer.inlayHints.expressionAdjustmentHints.enable |
Whether to show inlay hints for type adjustments. | never |
rust-analyzer.inlayHints.expressionAdjustmentHints.hideOutsideUnsafe |
Whether to hide inlay hints for type adjustments outside of unsafe blocks. |
false |
rust-analyzer.inlayHints.expressionAdjustmentHints.mode |
Whether to show inlay hints as postfix ops (.* instead of * , etc). |
prefix |
rust-analyzer.inlayHints.lifetimeElisionHints.enable |
Whether to show inlay type hints for elided lifetimes in function signatures. | never |
rust-analyzer.inlayHints.lifetimeElisionHints.useParameterNames |
Whether to prefer using parameter names as the name for elided lifetime hints if possible. | false |
rust-analyzer.inlayHints.maxLength |
Maximum length for inlay hints. Set to null to have an unlimited length. | 25 |
rust-analyzer.inlayHints.parameterHints.enable |
Whether to show function parameter name inlay hints at the call site. | true |
rust-analyzer.inlayHints.reborrowHints.enable |
Whether to show inlay hints for compiler inserted reborrows. This setting is deprecated in favor of #rust-analyzer.inlayHints.expressionAdjustmentHints.enable#. | never |
rust-analyzer.inlayHints.renderColons |
Whether to render leading colons for type hints, and trailing colons for parameter hints. | true |
rust-analyzer.inlayHints.typeHints.enable |
Whether to show inlay type hints for variables. | true |
rust-analyzer.inlayHints.typeHints.hideClosureInitialization |
Whether to hide inlay type hints for let statements that initialize to a closure. Only applies to closures with blocks, same as #rust-analyzer.inlayHints.closureReturnTypeHints.enable# . |
false |
rust-analyzer.inlayHints.typeHints.hideNamedConstructor |
Whether to hide inlay type hints for constructors. | false |
rust-analyzer.joinLines.joinAssignments |
Join lines merges consecutive declaration and initialization of an assignment. | true |
rust-analyzer.joinLines.joinElseIf |
Join lines inserts else between consecutive ifs. | true |
rust-analyzer.joinLines.removeTrailingComma |
Join lines removes trailing commas. | true |
rust-analyzer.joinLines.unwrapTrivialBlock |
Join lines unwraps trivial blocks. | true |
rust-analyzer.lens.debug.enable |
Whether to show Debug lens. Only applies when #rust-analyzer.lens.enable# is set. |
true |
rust-analyzer.lens.enable |
Whether to show CodeLens in Rust files. | true |
rust-analyzer.lens.forceCustomCommands |
Internal config: use custom client-side commands even when the client doesn't set the corresponding capability. | true |
rust-analyzer.lens.implementations.enable |
Whether to show Implementations lens. Only applies when #rust-analyzer.lens.enable# is set. |
true |
rust-analyzer.lens.location |
Where to render annotations. | above_name |
rust-analyzer.lens.references.adt.enable |
Whether to show References lens for Struct, Enum, and Union. Only applies when #rust-analyzer.lens.enable# is set. |
false |
rust-analyzer.lens.references.enumVariant.enable |
Whether to show References lens for Enum Variants. Only applies when #rust-analyzer.lens.enable# is set. |
false |
rust-analyzer.lens.references.method.enable |
Whether to show Method References lens. Only applies when #rust-analyzer.lens.enable# is set. |
false |
rust-analyzer.lens.references.trait.enable |
Whether to show References lens for Trait. Only applies when #rust-analyzer.lens.enable# is set. |
false |
rust-analyzer.lens.run.enable |
Whether to show Run lens. Only applies when #rust-analyzer.lens.enable# is set. |
true |
rust-analyzer.linkedProjects |
Disable project auto-discovery in favor of explicitly specified set of projects. | `` |
rust-analyzer.lru.capacity |
Number of syntax trees rust-analyzer keeps in memory. Defaults to 128. | null |
rust-analyzer.notifications.cargoTomlNotFound |
Whether to show can't find Cargo.toml error message. |
true |
rust-analyzer.numThreads |
How many worker threads in the main loop. The default null means to pick automatically. |
null |
rust-analyzer.procMacro.attributes.enable |
Expand attribute macros. Requires #rust-analyzer.procMacro.enable# to be set. |
true |
rust-analyzer.procMacro.enable |
Enable support for procedural macros, implies #rust-analyzer.cargo.buildScripts.enable# . |
true |
rust-analyzer.procMacro.ignored |
These proc-macros will be ignored when trying to expand them. | {} |
rust-analyzer.procMacro.server |
Internal config, path to proc-macro server executable (typically, this is rust-analyzer itself, but we override this in tests). | null |
rust-analyzer.references.excludeImports |
Exclude imports from find-all-references. | false |
rust-analyzer.restartServerOnConfigChange |
Whether to restart the server automatically when certain settings that require a restart are changed. | false |
rust-analyzer.runnables.command |
Command to be executed instead of 'cargo' for runnables. | null |
rust-analyzer.runnables.extraArgs |
Additional arguments to be passed to cargo for runnables such as tests or binaries. For example, it may be --release . |
`` |
rust-analyzer.rustc.source |
Path to the Cargo.toml of the rust compiler workspace, for usage in rustc_private projects, or "discover" to try to automatically find it if the rustc-dev component is installed. |
null |
rust-analyzer.rustfmt.extraArgs |
Additional arguments to rustfmt . |
`` |
rust-analyzer.rustfmt.overrideCommand |
Advanced option, fully override the command rust-analyzer uses for formatting. | null |
rust-analyzer.rustfmt.rangeFormatting.enable |
Enables the use of rustfmt's unstable range formatting command for the textDocument/rangeFormatting request. The rustfmt option is unstable and only available on a nightly build. |
false |
rust-analyzer.semanticHighlighting.doc.comment.inject.enable |
Inject additional highlighting into doc comments. | true |
rust-analyzer.semanticHighlighting.operator.enable |
Use semantic tokens for operators. | true |
rust-analyzer.semanticHighlighting.operator.specialization.enable |
Use specialized semantic tokens for operators. | false |
rust-analyzer.semanticHighlighting.punctuation.enable |
Use semantic tokens for punctuations. | false |
rust-analyzer.semanticHighlighting.punctuation.separate.macro.bang |
When enabled, rust-analyzer will emit a punctuation semantic token for the ! of macro calls. |
false |
rust-analyzer.semanticHighlighting.punctuation.specialization.enable |
Use specialized semantic tokens for punctuations. | false |
rust-analyzer.semanticHighlighting.strings.enable |
Use semantic tokens for strings. | true |
rust-analyzer.server.extraEnv |
Extra environment variables that will be passed to the rust-analyzer executable. Useful for passing e.g. RA_LOG for debugging. |
null |
rust-analyzer.server.path |
Path to rust-analyzer executable (points to bundled binary by default). If this is set, then "rust-analyzer.updates.channel" setting is not used | null |
rust-analyzer.signatureInfo.detail |
Show full signature of the callable. Only shows parameters if disabled. | full |
rust-analyzer.signatureInfo.documentation.enable |
Show documentation. | true |
rust-analyzer.terminal.startinsert |
Enter insert mode after terminal displayed | false |
rust-analyzer.trace.server |
Trace requests to the rust-analyzer | off |
rust-analyzer.typing.autoClosingAngleBrackets.enable |
Whether to insert closing angle brackets when typing an opening angle bracket of a generic argument list. | false |
rust-analyzer.updates.channel |
Choose "nightly" updates to get the latest features and bug fixes every day. While "stable" releases occur weekly and don't contain cutting-edge features from VSCode proposed APIs |
stable |
rust-analyzer.updates.checkOnStartup |
Auto-check rust-analyzer updates on startup | true |
rust-analyzer.updates.prompt |
Prompt the user before downloading rust-analyzer | true |
rust-analyzer.workspace.symbol.search.kind |
Workspace symbol search kind. | only_types |
rust-analyzer.workspace.symbol.search.limit |
Limits the number of items returned from a workspace symbol search (Defaults to 128). | 128 |
rust-analyzer.workspace.symbol.search.scope |
Workspace symbol search scope. | workspace |
You can use these commands by :CocCommand XYZ
.
Command | Description |
---|---|
rust-analyzer.analyzerStatus | Show rust-analyzer status |
rust-analyzer.debug | List available runnables of current file and debug the selected one |
rust-analyzer.expandMacro | Expand macro recursively |
rust-analyzer.explainError | Explain the currently hovered error message |
rust-analyzer.joinLines | Join lines |
rust-analyzer.matchingBrace | Find matching brace |
rust-analyzer.memoryUsage | Memory Usage (Clears Database) |
rust-analyzer.moveItemUp | Move item up |
rust-analyzer.moveItemDown | Move item down |
rust-analyzer.openDocs | Open docs under cursor |
rust-analyzer.parentModule | Locate parent module |
rust-analyzer.peekTests | Peek related tests |
rust-analyzer.reload | Restart rust-analyzer server |
rust-analyzer.reloadWorkspace | Reload workspace |
rust-analyzer.run | List available runnables of current file and run the selected one |
rust-analyzer.serverVersion | Show current Rust Analyzer server version |
rust-analyzer.ssr | Structural Search Replace |
rust-analyzer.syntaxTree | Show syntax tree |
rust-analyzer.testCurrent | Test Current |
rust-analyzer.install | Install latest rust-analyzer from GitHub release |
rust-analyzer.upgrade | Download latest rust-analyzer from GitHub release |
rust-analyzer.viewHir | View Hir |
rust-analyzer.viewMir | View Mir |
rust-analyzer.viewFileText | View File Text |
rust-analyzer.viewCrateGraph | View Crate Graph |
rust-analyzer.viewFullCrateGraph | View Crate Graph (Full) |
rust-analyzer.shuffleCrateGraph | Shuffle Crate Graph |
rust-analyzer.runFlycheck | Run flycheck |
rust-analyzer.cancelFlycheck | Cancel running flychecks |
rust-analyzer.clearFlycheck | Clear flycheck diagnostics |
rust-analyzer.rebuildProcMacros | Rebuild proc macros and build scripts |
rust-analyzer.interpretFunction | Interpret Function |
MIT
This extension is built with create-coc-extension