Skip to content

rust_analyzer

https://github.com/rust-analyzer/rust-analyzer

rust-analyzer (aka rls 2.0), a language server for Rust

See docs for extra settings.

Setup

require'lspconfig'.rust_analyzer.setup{}

Commands

  • CargoReload: Reload current cargo workspace

Default values

cmd = { "rust-analyzer" }
filetypes = { "rust" }
root_dir = function(fname)
      local cargo_crate_dir = util.root_pattern 'Cargo.toml'(fname)
      local cmd = 'cargo metadata --no-deps --format-version 1'
      if cargo_crate_dir ~= nil then
        cmd = cmd .. ' --manifest-path ' .. util.path.join(cargo_crate_dir, 'Cargo.toml')
      end
      local cargo_metadata = vim.fn.system(cmd)
      local cargo_workspace_dir = nil
      if vim.v.shell_error == 0 then
        cargo_workspace_dir = vim.fn.json_decode(cargo_metadata)['workspace_root']
      end
      return cargo_workspace_dir
        or cargo_crate_dir
        or util.root_pattern 'rust-project.json'(fname)
        or util.find_git_ancestor(fname)
    end,
settings = {
  ["rust-analyzer"] = {}
}

Available settings

$generated-end

null

$generated-start

null

rust-analyzer.assist.allowMergingIntoGlobImports

  • Type: boolean
  • Default: true

null

rust-analyzer.assist.importEnforceGranularity

  • Type: boolean

null

rust-analyzer.assist.importGranularity

  • Type: enum { "preserve", "crate", "module", "item" }
  • Default: "crate"

null

rust-analyzer.assist.importGroup

  • Type: boolean
  • Default: true

null

rust-analyzer.assist.importPrefix

  • Type: enum { "plain", "self", "crate" }
  • Default: "plain"

null

rust-analyzer.callInfo.full

  • Type: boolean
  • Default: true

null

rust-analyzer.cargo.allFeatures

  • Type: boolean

null

rust-analyzer.cargo.autoreload

  • Type: boolean
  • Default: true

null

rust-analyzer.cargo.features

  • Type: array
  • Default: {}
  • Array items:

null

rust-analyzer.cargo.noDefaultFeatures

  • Type: boolean

null

rust-analyzer.cargo.noSysroot

  • Type: boolean

null

rust-analyzer.cargo.runBuildScripts

  • Type: boolean
  • Default: true

null

rust-analyzer.cargo.target

  • Type: null|string
  • Default: vim.NIL

null

rust-analyzer.cargo.unsetTest

  • Type: array
  • Default: { "core" }
  • Array items:

null

rust-analyzer.cargo.useRustcWrapperForBuildScripts

  • Type: boolean
  • Default: true

null

rust-analyzer.cargoRunner

  • Type: null|string
  • Default: vim.NIL

Custom cargo runner extension ID.

rust-analyzer.checkOnSave.allFeatures

  • Type: null|boolean
  • Default: vim.NIL

null

rust-analyzer.checkOnSave.allTargets

  • Type: boolean
  • Default: true

null

rust-analyzer.checkOnSave.command

  • Type: string
  • Default: "check"

null

rust-analyzer.checkOnSave.enable

  • Type: boolean
  • Default: true

null

rust-analyzer.checkOnSave.extraArgs

  • Type: array
  • Default: {}
  • Array items:

null

rust-analyzer.checkOnSave.features

  • Type: null|array
  • Default: vim.NIL
  • Array items:

null

rust-analyzer.checkOnSave.noDefaultFeatures

  • Type: null|boolean
  • Default: vim.NIL

null

rust-analyzer.checkOnSave.overrideCommand

  • Type: null|array
  • Default: vim.NIL
  • Array items:

null

rust-analyzer.checkOnSave.target

  • Type: null|string
  • Default: vim.NIL

null

rust-analyzer.completion.addCallArgumentSnippets

  • Type: boolean
  • Default: true

null

rust-analyzer.completion.addCallParenthesis

  • Type: boolean
  • Default: true

null

rust-analyzer.completion.autoimport.enable

  • Type: boolean
  • Default: true

null

rust-analyzer.completion.autoself.enable

  • Type: boolean
  • Default: true

null

rust-analyzer.completion.postfix.enable

  • Type: boolean
  • Default: true

null

rust-analyzer.debug.engine

  • Type: enum { "auto", "vadimcn.vscode-lldb", "ms-vscode.cpptools" }
  • Default: "auto"

Preferred debug engine.

rust-analyzer.debug.engineSettings

  • Type: object
  • Default: vim.empty_dict()

null

rust-analyzer.debug.openDebugPane

  • Type: boolean

null

rust-analyzer.debug.sourceFileMap

  • Type: object|string
  • Default: { ["/rustc/<id>"] = "${env:USERPROFILE}/.rustup/toolchains/<toolchain-id>/lib/rustlib/src/rust" }

Optional source file mappings passed to the debug engine.

rust-analyzer.diagnostics.disabled

  • Type: array
  • Default: {}
  • Array items:

null

rust-analyzer.diagnostics.enable

  • Type: boolean
  • Default: true

null

rust-analyzer.diagnostics.enableExperimental

  • Type: boolean
  • Default: true

null

rust-analyzer.diagnostics.remapPrefix

  • Type: object
  • Default: vim.empty_dict()

null

rust-analyzer.diagnostics.warningsAsHint

  • Type: array
  • Default: {}
  • Array items:

null

rust-analyzer.diagnostics.warningsAsInfo

  • Type: array
  • Default: {}
  • Array items:

null

rust-analyzer.experimental.procAttrMacros

  • Type: boolean

null

rust-analyzer.files.excludeDirs

  • Type: array
  • Default: {}
  • Array items:

null

rust-analyzer.files.watcher

  • Type: string
  • Default: "client"

null

rust-analyzer.highlightRelated.breakPoints

  • Type: boolean
  • Default: true

null

rust-analyzer.highlightRelated.exitPoints

  • Type: boolean
  • Default: true

null

rust-analyzer.highlightRelated.references

  • Type: boolean
  • Default: true

null

rust-analyzer.highlightRelated.yieldPoints

  • Type: boolean
  • Default: true

null

rust-analyzer.highlighting.strings

  • Type: boolean
  • Default: true

null

rust-analyzer.hover.documentation

  • Type: boolean
  • Default: true

null

rust-analyzer.hover.linksInHover

  • Type: boolean
  • Default: true

null

rust-analyzer.hoverActions.debug

  • Type: boolean
  • Default: true

null

rust-analyzer.hoverActions.enable

  • Type: boolean
  • Default: true

null

rust-analyzer.hoverActions.gotoTypeDef

  • Type: boolean
  • Default: true

null

rust-analyzer.hoverActions.implementations

  • Type: boolean
  • Default: true

null

rust-analyzer.hoverActions.references

  • Type: boolean

null

rust-analyzer.hoverActions.run

  • Type: boolean
  • Default: true

null

rust-analyzer.inlayHints.chainingHints

  • Type: boolean
  • Default: true

null

rust-analyzer.inlayHints.enable

  • Type: boolean
  • Default: true

Whether to show inlay hints.

rust-analyzer.inlayHints.maxLength

  • Type: null|integer
  • Default: 25

null

rust-analyzer.inlayHints.parameterHints

  • Type: boolean
  • Default: true

null

rust-analyzer.inlayHints.smallerHints

  • Type: boolean
  • Default: true

Whether inlay hints font size should be smaller than editor\'s font size.

rust-analyzer.inlayHints.typeHints

  • Type: boolean
  • Default: true

null

rust-analyzer.joinLines.joinElseIf

  • Type: boolean
  • Default: true

null

rust-analyzer.joinLines.removeTrailingComma

  • Type: boolean
  • Default: true

null

rust-analyzer.joinLines.unwrapTrivialBlock

  • Type: boolean
  • Default: true

null

rust-analyzer.lens.debug

  • Type: boolean
  • Default: true

null

rust-analyzer.lens.enable

  • Type: boolean
  • Default: true

null

rust-analyzer.lens.implementations

  • Type: boolean
  • Default: true

null

rust-analyzer.lens.methodReferences

  • Type: boolean

null

rust-analyzer.lens.references

  • Type: boolean

null

rust-analyzer.lens.run

  • Type: boolean
  • Default: true

null

rust-analyzer.linkedProjects

  • Type: array
  • Default: {}
  • Array items:

null

rust-analyzer.lruCapacity

  • Type: null|integer
  • Default: vim.NIL

null

rust-analyzer.notifications.cargoTomlNotFound

  • Type: boolean
  • Default: true

null

rust-analyzer.procMacro.enable

  • Type: boolean
  • Default: true

null

rust-analyzer.procMacro.server

  • Type: null|string
  • Default: vim.NIL

null

rust-analyzer.runnableEnv

  • Default: vim.NIL

null

rust-analyzer.runnables.cargoExtraArgs

  • Type: array
  • Default: {}
  • Array items:

null

rust-analyzer.runnables.overrideCargo

  • Type: null|string
  • Default: vim.NIL

null

rust-analyzer.rustcSource

  • Type: null|string
  • Default: vim.NIL

null

rust-analyzer.rustfmt.enableRangeFormatting

  • Type: boolean

null

rust-analyzer.rustfmt.extraArgs

  • Type: array
  • Default: {}
  • Array items:

null

rust-analyzer.rustfmt.overrideCommand

  • Type: null|array
  • Default: vim.NIL
  • Array items:

null

rust-analyzer.server.extraEnv

  • Type: null|object
  • Default: vim.NIL

null

rust-analyzer.server.path

  • Type: null|string
  • Default: vim.NIL

null

rust-analyzer.trace.extension

  • Type: boolean

Enable logging of VS Code extensions itself.

rust-analyzer.trace.server

  • Type: enum { "off", "messages", "verbose" }
  • Default: "off"

Trace requests to the rust-analyzer (this is usually overly verbose and not recommended for regular users).

rust-analyzer.updates.askBeforeDownload

  • Type: boolean

Whether to ask for permission before downloading any files from the Internet.

rust-analyzer.updates.channel

  • Type: enum { "stable", "nightly" }
  • Default: "stable"

null

rust-analyzer.workspace.symbol.search.kind

  • Type: enum { "only_types", "all_symbols" }
  • Default: "only_types"

null

rust-analyzer.workspace.symbol.search.scope

  • Type: enum { "workspace", "workspace_and_dependencies" }
  • Default: "workspace"

null

Back to top