{ "name": "rust-analyzer", "displayName": "rust-analyzer", "description": "An alternative rust language server to the RLS", "preview": true, "private": true, "icon": "icon.png", "version": "0.4.0-dev", "releaseTag": null, "publisher": "matklad", "repository": { "url": "https://github.com/rust-analyzer/rust-analyzer.git", "type": "git" }, "homepage": "https://rust-analyzer.github.io/", "license": "MIT OR Apache-2.0", "keywords": [ "rust" ], "categories": [ "Programming Languages" ], "engines": { "vscode": "^1.57.0" }, "enableProposedApi": true, "scripts": { "vscode:prepublish": "npm run build-base -- --minify", "package": "vsce package -o rust-analyzer.vsix", "build-base": "esbuild ./src/main.ts --bundle --outfile=out/main.js --external:vscode --format=cjs --platform=node --target=node14", "build": "npm run build-base -- --sourcemap", "watch": "npm run build-base -- --sourcemap --watch", "lint": "tsfmt --verify && eslint -c .eslintrc.js --ext ts ./src ./tests", "fix": " tsfmt -r && eslint -c .eslintrc.js --ext ts ./src ./tests --fix", "pretest": "tsc && npm run build", "test": "node ./out/tests/runTests.js" }, "dependencies": { "https-proxy-agent": "^5.0.0", "node-fetch": "^2.6.1", "vscode-languageclient": "8.0.0-next.2", "d3": "^7.1.0", "d3-graphviz": "^4.0.0" }, "devDependencies": { "@types/node": "~14.17.5", "@types/node-fetch": "^2.5.11", "@types/vscode": "^1.57.0", "@typescript-eslint/eslint-plugin": "^4.28.2", "@typescript-eslint/parser": "^4.28.2", "@vscode/test-electron": "^1.6.2", "esbuild": "^0.12.19", "eslint": "^7.30.0", "tslib": "^2.3.0", "typescript": "^4.3.5", "typescript-formatter": "^7.2.2", "vsce": "^1.95.1" }, "activationEvents": [ "onLanguage:rust", "onCommand:rust-analyzer.analyzerStatus", "onCommand:rust-analyzer.memoryUsage", "onCommand:rust-analyzer.reloadWorkspace", "workspaceContains:*/Cargo.toml", "workspaceContains:*/rust-project.json" ], "main": "./out/main", "contributes": { "taskDefinitions": [ { "type": "cargo", "required": [ "command" ], "properties": { "label": { "type": "string" }, "command": { "type": "string" }, "args": { "type": "array", "items": { "type": "string" } }, "env": { "type": "object", "patternProperties": { ".+": { "type": "string" } } } } } ], "commands": [ { "command": "rust-analyzer.syntaxTree", "title": "Show Syntax Tree", "category": "Rust Analyzer" }, { "command": "rust-analyzer.viewHir", "title": "View Hir", "category": "Rust Analyzer" }, { "command": "rust-analyzer.viewItemTree", "title": "Debug ItemTree", "category": "Rust Analyzer" }, { "command": "rust-analyzer.viewCrateGraph", "title": "View Crate Graph", "category": "Rust Analyzer" }, { "command": "rust-analyzer.viewFullCrateGraph", "title": "View Crate Graph (Full)", "category": "Rust Analyzer" }, { "command": "rust-analyzer.expandMacro", "title": "Expand macro recursively", "category": "Rust Analyzer" }, { "command": "rust-analyzer.matchingBrace", "title": "Find matching brace", "category": "Rust Analyzer" }, { "command": "rust-analyzer.parentModule", "title": "Locate parent module", "category": "Rust Analyzer" }, { "command": "rust-analyzer.joinLines", "title": "Join lines", "category": "Rust Analyzer" }, { "command": "rust-analyzer.run", "title": "Run", "category": "Rust Analyzer" }, { "command": "rust-analyzer.copyRunCommandLine", "title": "Copy Run Command Line", "category": "Rust Analyzer" }, { "command": "rust-analyzer.debug", "title": "Debug", "category": "Rust Analyzer" }, { "command": "rust-analyzer.newDebugConfig", "title": "Generate launch configuration", "category": "Rust Analyzer" }, { "command": "rust-analyzer.analyzerStatus", "title": "Status", "category": "Rust Analyzer" }, { "command": "rust-analyzer.memoryUsage", "title": "Memory Usage (Clears Database)", "category": "Rust Analyzer" }, { "command": "rust-analyzer.reloadWorkspace", "title": "Reload workspace", "category": "Rust Analyzer" }, { "command": "rust-analyzer.reload", "title": "Restart server", "category": "Rust Analyzer" }, { "command": "rust-analyzer.updateGithubToken", "title": "Update Github API token", "category": "Rust Analyzer" }, { "command": "rust-analyzer.onEnter", "title": "Enhanced enter key", "category": "Rust Analyzer" }, { "command": "rust-analyzer.ssr", "title": "Structural Search Replace", "category": "Rust Analyzer" }, { "command": "rust-analyzer.serverVersion", "title": "Show RA Version", "category": "Rust Analyzer" }, { "command": "rust-analyzer.toggleInlayHints", "title": "Toggle inlay hints", "category": "Rust Analyzer" }, { "command": "rust-analyzer.openDocs", "title": "Open docs under cursor", "category": "Rust Analyzer" }, { "command": "rust-analyzer.openCargoToml", "title": "Open Cargo.toml", "category": "Rust Analyzer" }, { "command": "rust-analyzer.peekTests", "title": "Peek related tests", "category": "Rust Analyzer" }, { "command": "rust-analyzer.moveItemUp", "title": "Move item up", "category": "Rust Analyzer" }, { "command": "rust-analyzer.moveItemDown", "title": "Move item down", "category": "Rust Analyzer" } ], "keybindings": [ { "command": "rust-analyzer.parentModule", "key": "ctrl+shift+u", "when": "editorTextFocus && editorLangId == rust" }, { "command": "rust-analyzer.matchingBrace", "key": "ctrl+shift+m", "when": "editorTextFocus && editorLangId == rust" }, { "command": "rust-analyzer.joinLines", "key": "ctrl+shift+j", "when": "editorTextFocus && editorLangId == rust" } ], "configuration": { "type": "object", "title": "Rust Analyzer", "properties": { "rust-analyzer.cargoRunner": { "type": [ "null", "string" ], "default": null, "description": "Custom cargo runner extension ID." }, "rust-analyzer.runnableEnv": { "anyOf": [ { "type": "null" }, { "type": "array", "items": { "type": "object", "properties": { "mask": { "type": "string", "description": "Runnable name mask" }, "env": { "type": "object", "description": "Variables in form of { \"key\": \"value\"}" } } } }, { "type": "object", "description": "Variables in form of { \"key\": \"value\"}" } ], "default": null, "markdownDescription": "Environment variables passed to the runnable launched using `Test` or `Debug` lens or `rust-analyzer.run` command." }, "rust-analyzer.inlayHints.enable": { "type": "boolean", "default": true, "description": "Whether to show inlay hints." }, "rust-analyzer.inlayHints.smallerHints": { "type": "boolean", "default": true, "description": "Whether inlay hints font size should be smaller than editor's font size." }, "rust-analyzer.updates.channel": { "type": "string", "enum": [ "stable", "nightly" ], "default": "stable", "markdownEnumDescriptions": [ "`stable` updates are shipped weekly, they don't contain cutting-edge features from VSCode proposed APIs but have less bugs in general.", "`nightly` updates are shipped daily (extension updates automatically by downloading artifacts directly from GitHub), they contain cutting-edge features and latest bug fixes. These releases help us get your feedback very quickly and speed up rust-analyzer development **drastically**." ], "markdownDescription": "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." }, "rust-analyzer.updates.askBeforeDownload": { "type": "boolean", "default": false, "description": "Whether to ask for permission before downloading any files from the Internet." }, "rust-analyzer.server.path": { "type": [ "null", "string" ], "scope": "machine-overridable", "default": null, "markdownDescription": "Path to rust-analyzer executable (points to bundled binary by default). If this is set, then `#rust-analyzer.updates.channel#` setting is not used" }, "rust-analyzer.server.extraEnv": { "type": [ "null", "object" ], "default": null, "markdownDescription": "Extra environment variables that will be passed to the rust-analyzer executable. Useful for passing e.g. `RA_LOG` for debugging." }, "rust-analyzer.trace.server": { "type": "string", "scope": "window", "enum": [ "off", "messages", "verbose" ], "enumDescriptions": [ "No traces", "Error only", "Full log" ], "default": "off", "description": "Trace requests to the rust-analyzer (this is usually overly verbose and not recommended for regular users)." }, "rust-analyzer.trace.extension": { "description": "Enable logging of VS Code extensions itself.", "type": "boolean", "default": false }, "rust-analyzer.debug.engine": { "type": "string", "enum": [ "auto", "vadimcn.vscode-lldb", "ms-vscode.cpptools" ], "default": "auto", "description": "Preferred debug engine.", "markdownEnumDescriptions": [ "First try to use [CodeLLDB](https://marketplace.visualstudio.com/items?itemName=vadimcn.vscode-lldb), if it's not installed try to use [MS C++ tools](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools).", "Use [CodeLLDB](https://marketplace.visualstudio.com/items?itemName=vadimcn.vscode-lldb)", "Use [MS C++ tools](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools)" ] }, "rust-analyzer.debug.sourceFileMap": { "type": [ "object", "string" ], "const": "auto", "description": "Optional source file mappings passed to the debug engine.", "default": { "/rustc/": "${env:USERPROFILE}/.rustup/toolchains//lib/rustlib/src/rust" } }, "rust-analyzer.debug.openDebugPane": { "markdownDescription": "Whether to open up the `Debug Panel` on debugging start.", "type": "boolean", "default": false }, "rust-analyzer.debug.engineSettings": { "type": "object", "default": {}, "markdownDescription": "Optional settings passed to the debug engine. Example: `{ \"lldb\": { \"terminal\":\"external\"} }`" }, "$generated-start": {}, "rust-analyzer.assist.importGranularity": { "markdownDescription": "How imports should be grouped into use statements.", "default": "crate", "type": "string", "enum": [ "preserve", "crate", "module", "item" ], "enumDescriptions": [ "Do not change the granularity of any imports and preserve the original structure written by the developer.", "Merge imports from the same crate into a single use statement. Conversely, imports from different crates are split into separate statements.", "Merge imports from the same module into a single use statement. Conversely, imports from different modules are split into separate statements.", "Flatten imports so that each has its own use statement." ] }, "rust-analyzer.assist.importEnforceGranularity": { "markdownDescription": "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.", "default": false, "type": "boolean" }, "rust-analyzer.assist.importPrefix": { "markdownDescription": "The path structure for newly inserted paths to use.", "default": "plain", "type": "string", "enum": [ "plain", "self", "crate" ], "enumDescriptions": [ "Insert import paths relative to the current module, using up to one `super` prefix if the parent module contains the requested item.", "Insert import paths relative to the current module, using up to one `super` prefix if the parent module contains the requested item. Prefixes `self` in front of the path if it starts with a module.", "Force import paths to be absolute by always starting them with `crate` or the extern crate name they come from." ] }, "rust-analyzer.assist.importGroup": { "markdownDescription": "Group inserted imports by the [following order](https://rust-analyzer.github.io/manual.html#auto-import). Groups are separated by newlines.", "default": true, "type": "boolean" }, "rust-analyzer.assist.allowMergingIntoGlobImports": { "markdownDescription": "Whether to allow import insertion to merge new imports into single path glob imports like `use std::fmt::*;`.", "default": true, "type": "boolean" }, "rust-analyzer.cache.warmup": { "markdownDescription": "Warm up caches on project load.", "default": true, "type": "boolean" }, "rust-analyzer.callInfo.full": { "markdownDescription": "Show function name and docs in parameter hints.", "default": true, "type": "boolean" }, "rust-analyzer.cargo.autoreload": { "markdownDescription": "Automatically refresh project info via `cargo metadata` on\n`Cargo.toml` changes.", "default": true, "type": "boolean" }, "rust-analyzer.cargo.allFeatures": { "markdownDescription": "Activate all available features (`--all-features`).", "default": false, "type": "boolean" }, "rust-analyzer.cargo.unsetTest": { "markdownDescription": "Unsets `#[cfg(test)]` for the specified crates.", "default": [ "core" ], "type": "array", "items": { "type": "string" } }, "rust-analyzer.cargo.features": { "markdownDescription": "List of features to activate.", "default": [], "type": "array", "items": { "type": "string" } }, "rust-analyzer.cargo.runBuildScripts": { "markdownDescription": "Run build scripts (`build.rs`) for more precise code analysis.", "default": true, "type": "boolean" }, "rust-analyzer.cargo.useRustcWrapperForBuildScripts": { "markdownDescription": "Use `RUSTC_WRAPPER=rust-analyzer` when running build scripts to\navoid compiling unnecessary things.", "default": true, "type": "boolean" }, "rust-analyzer.cargo.noDefaultFeatures": { "markdownDescription": "Do not activate the `default` feature.", "default": false, "type": "boolean" }, "rust-analyzer.cargo.target": { "markdownDescription": "Compilation target (target triple).", "default": null, "type": [ "null", "string" ] }, "rust-analyzer.cargo.noSysroot": { "markdownDescription": "Internal config for debugging, disables loading of sysroot crates.", "default": false, "type": "boolean" }, "rust-analyzer.checkOnSave.enable": { "markdownDescription": "Run specified `cargo check` command for diagnostics on save.", "default": true, "type": "boolean" }, "rust-analyzer.checkOnSave.allFeatures": { "markdownDescription": "Check with all features (`--all-features`).\nDefaults to `#rust-analyzer.cargo.allFeatures#`.", "default": null, "type": [ "null", "boolean" ] }, "rust-analyzer.checkOnSave.allTargets": { "markdownDescription": "Check all targets and tests (`--all-targets`).", "default": true, "type": "boolean" }, "rust-analyzer.checkOnSave.command": { "markdownDescription": "Cargo command to use for `cargo check`.", "default": "check", "type": "string" }, "rust-analyzer.checkOnSave.noDefaultFeatures": { "markdownDescription": "Do not activate the `default` feature.", "default": null, "type": [ "null", "boolean" ] }, "rust-analyzer.checkOnSave.target": { "markdownDescription": "Check for a specific target. Defaults to\n`#rust-analyzer.cargo.target#`.", "default": null, "type": [ "null", "string" ] }, "rust-analyzer.checkOnSave.extraArgs": { "markdownDescription": "Extra arguments for `cargo check`.", "default": [], "type": "array", "items": { "type": "string" } }, "rust-analyzer.checkOnSave.features": { "markdownDescription": "List of features to activate. Defaults to\n`#rust-analyzer.cargo.features#`.", "default": null, "type": [ "null", "array" ], "items": { "type": "string" } }, "rust-analyzer.checkOnSave.overrideCommand": { "markdownDescription": "Advanced option, fully override the command rust-analyzer uses for\nchecking. The command should include `--message-format=json` or\nsimilar option.", "default": null, "type": [ "null", "array" ], "items": { "type": "string" } }, "rust-analyzer.completion.addCallArgumentSnippets": { "markdownDescription": "Whether to add argument snippets when completing functions.\nOnly applies when `#rust-analyzer.completion.addCallParenthesis#` is set.", "default": true, "type": "boolean" }, "rust-analyzer.completion.addCallParenthesis": { "markdownDescription": "Whether to add parenthesis when completing functions.", "default": true, "type": "boolean" }, "rust-analyzer.completion.snippets": { "markdownDescription": "Custom completion snippets.", "default": {}, "type": "object" }, "rust-analyzer.completion.postfix.enable": { "markdownDescription": "Whether to show postfix snippets like `dbg`, `if`, `not`, etc.", "default": true, "type": "boolean" }, "rust-analyzer.completion.autoimport.enable": { "markdownDescription": "Toggles the additional completions that automatically add imports when completed.\nNote that your client must specify the `additionalTextEdits` LSP client capability to truly have this feature enabled.", "default": true, "type": "boolean" }, "rust-analyzer.completion.autoself.enable": { "markdownDescription": "Toggles the additional completions that automatically show method calls and field accesses\nwith `self` prefixed to them when inside a method.", "default": true, "type": "boolean" }, "rust-analyzer.diagnostics.enable": { "markdownDescription": "Whether to show native rust-analyzer diagnostics.", "default": true, "type": "boolean" }, "rust-analyzer.diagnostics.enableExperimental": { "markdownDescription": "Whether to show experimental rust-analyzer diagnostics that might\nhave more false positives than usual.", "default": true, "type": "boolean" }, "rust-analyzer.diagnostics.disabled": { "markdownDescription": "List of rust-analyzer diagnostics to disable.", "default": [], "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "rust-analyzer.diagnostics.remapPrefix": { "markdownDescription": "Map of prefixes to be substituted when parsing diagnostic file paths.\nThis should be the reverse mapping of what is passed to `rustc` as `--remap-path-prefix`.", "default": {}, "type": "object" }, "rust-analyzer.diagnostics.warningsAsHint": { "markdownDescription": "List of warnings that should be displayed with hint severity.\n\nThe warnings will be indicated by faded text or three dots in code\nand will not show up in the `Problems Panel`.", "default": [], "type": "array", "items": { "type": "string" } }, "rust-analyzer.diagnostics.warningsAsInfo": { "markdownDescription": "List of warnings that should be displayed with info severity.\n\nThe warnings will be indicated by a blue squiggly underline in code\nand a blue icon in the `Problems Panel`.", "default": [], "type": "array", "items": { "type": "string" } }, "rust-analyzer.experimental.procAttrMacros": { "markdownDescription": "Expand attribute macros.", "default": true, "type": "boolean" }, "rust-analyzer.files.watcher": { "markdownDescription": "Controls file watching implementation.", "default": "client", "type": "string" }, "rust-analyzer.files.excludeDirs": { "markdownDescription": "These directories will be ignored by rust-analyzer. They are\nrelative to the workspace root, and globs are not supported. You may\nalso need to add the folders to Code's `files.watcherExclude`.", "default": [], "type": "array", "items": { "type": "string" } }, "rust-analyzer.highlightRelated.references": { "markdownDescription": "Enables highlighting of related references while hovering your mouse above any identifier.", "default": true, "type": "boolean" }, "rust-analyzer.highlightRelated.exitPoints": { "markdownDescription": "Enables highlighting of all exit points while hovering your mouse above any `return`, `?`, or return type arrow (`->`).", "default": true, "type": "boolean" }, "rust-analyzer.highlightRelated.breakPoints": { "markdownDescription": "Enables highlighting of related references while hovering your mouse `break`, `loop`, `while`, or `for` keywords.", "default": true, "type": "boolean" }, "rust-analyzer.highlightRelated.yieldPoints": { "markdownDescription": "Enables highlighting of all break points for a loop or block context while hovering your mouse above any `async` or `await` keywords.", "default": true, "type": "boolean" }, "rust-analyzer.highlighting.strings": { "markdownDescription": "Use semantic tokens for strings.\n\nIn some editors (e.g. vscode) semantic tokens override other highlighting grammars.\nBy disabling semantic tokens for strings, other grammars can be used to highlight\ntheir contents.", "default": true, "type": "boolean" }, "rust-analyzer.hover.documentation": { "markdownDescription": "Whether to show documentation on hover.", "default": true, "type": "boolean" }, "rust-analyzer.hover.linksInHover": { "markdownDescription": "Use markdown syntax for links in hover.", "default": true, "type": "boolean" }, "rust-analyzer.hoverActions.debug": { "markdownDescription": "Whether to show `Debug` action. Only applies when\n`#rust-analyzer.hoverActions.enable#` is set.", "default": true, "type": "boolean" }, "rust-analyzer.hoverActions.enable": { "markdownDescription": "Whether to show HoverActions in Rust files.", "default": true, "type": "boolean" }, "rust-analyzer.hoverActions.gotoTypeDef": { "markdownDescription": "Whether to show `Go to Type Definition` action. Only applies when\n`#rust-analyzer.hoverActions.enable#` is set.", "default": true, "type": "boolean" }, "rust-analyzer.hoverActions.implementations": { "markdownDescription": "Whether to show `Implementations` action. Only applies when\n`#rust-analyzer.hoverActions.enable#` is set.", "default": true, "type": "boolean" }, "rust-analyzer.hoverActions.references": { "markdownDescription": "Whether to show `References` action. Only applies when\n`#rust-analyzer.hoverActions.enable#` is set.", "default": false, "type": "boolean" }, "rust-analyzer.hoverActions.run": { "markdownDescription": "Whether to show `Run` action. Only applies when\n`#rust-analyzer.hoverActions.enable#` is set.", "default": true, "type": "boolean" }, "rust-analyzer.inlayHints.chainingHints": { "markdownDescription": "Whether to show inlay type hints for method chains.", "default": true, "type": "boolean" }, "rust-analyzer.inlayHints.maxLength": { "markdownDescription": "Maximum length for inlay hints. Set to null to have an unlimited length.", "default": 25, "type": [ "null", "integer" ], "minimum": 0 }, "rust-analyzer.inlayHints.parameterHints": { "markdownDescription": "Whether to show function parameter name inlay hints at the call\nsite.", "default": true, "type": "boolean" }, "rust-analyzer.inlayHints.typeHints": { "markdownDescription": "Whether to show inlay type hints for variables.", "default": true, "type": "boolean" }, "rust-analyzer.inlayHints.hideNamedConstructorHints": { "markdownDescription": "Whether to hide inlay hints for constructors.", "default": false, "type": "boolean" }, "rust-analyzer.joinLines.joinElseIf": { "markdownDescription": "Join lines inserts else between consecutive ifs.", "default": true, "type": "boolean" }, "rust-analyzer.joinLines.removeTrailingComma": { "markdownDescription": "Join lines removes trailing commas.", "default": true, "type": "boolean" }, "rust-analyzer.joinLines.unwrapTrivialBlock": { "markdownDescription": "Join lines unwraps trivial blocks.", "default": true, "type": "boolean" }, "rust-analyzer.joinLines.joinAssignments": { "markdownDescription": "Join lines merges consecutive declaration and initialization of an assignment.", "default": true, "type": "boolean" }, "rust-analyzer.lens.debug": { "markdownDescription": "Whether to show `Debug` lens. Only applies when\n`#rust-analyzer.lens.enable#` is set.", "default": true, "type": "boolean" }, "rust-analyzer.lens.enable": { "markdownDescription": "Whether to show CodeLens in Rust files.", "default": true, "type": "boolean" }, "rust-analyzer.lens.implementations": { "markdownDescription": "Whether to show `Implementations` lens. Only applies when\n`#rust-analyzer.lens.enable#` is set.", "default": true, "type": "boolean" }, "rust-analyzer.lens.run": { "markdownDescription": "Whether to show `Run` lens. Only applies when\n`#rust-analyzer.lens.enable#` is set.", "default": true, "type": "boolean" }, "rust-analyzer.lens.methodReferences": { "markdownDescription": "Whether to show `Method References` lens. Only applies when\n`#rust-analyzer.lens.enable#` is set.", "default": false, "type": "boolean" }, "rust-analyzer.lens.references": { "markdownDescription": "Whether to show `References` lens for Struct, Enum, Union and Trait.\nOnly applies when `#rust-analyzer.lens.enable#` is set.", "default": false, "type": "boolean" }, "rust-analyzer.lens.enumVariantReferences": { "markdownDescription": "Whether to show `References` lens for Enum Variants.\nOnly applies when `#rust-analyzer.lens.enable#` is set.", "default": false, "type": "boolean" }, "rust-analyzer.lens.forceCustomCommands": { "markdownDescription": "Internal config: use custom client-side commands even when the\nclient doesn't set the corresponding capability.", "default": true, "type": "boolean" }, "rust-analyzer.linkedProjects": { "markdownDescription": "Disable project auto-discovery in favor of explicitly specified set\nof projects.\n\nElements must be paths pointing to `Cargo.toml`,\n`rust-project.json`, or JSON objects in `rust-project.json` format.", "default": [], "type": "array", "items": { "type": [ "string", "object" ] } }, "rust-analyzer.lruCapacity": { "markdownDescription": "Number of syntax trees rust-analyzer keeps in memory. Defaults to 128.", "default": null, "type": [ "null", "integer" ], "minimum": 0 }, "rust-analyzer.notifications.cargoTomlNotFound": { "markdownDescription": "Whether to show `can't find Cargo.toml` error message.", "default": true, "type": "boolean" }, "rust-analyzer.procMacro.enable": { "markdownDescription": "Enable support for procedural macros, implies `#rust-analyzer.cargo.runBuildScripts#`.", "default": true, "type": "boolean" }, "rust-analyzer.procMacro.server": { "markdownDescription": "Internal config, path to proc-macro server executable (typically,\nthis is rust-analyzer itself, but we override this in tests).", "default": null, "type": [ "null", "string" ] }, "rust-analyzer.runnables.overrideCargo": { "markdownDescription": "Command to be executed instead of 'cargo' for runnables.", "default": null, "type": [ "null", "string" ] }, "rust-analyzer.runnables.cargoExtraArgs": { "markdownDescription": "Additional arguments to be passed to cargo for runnables such as\ntests or binaries. For example, it may be `--release`.", "default": [], "type": "array", "items": { "type": "string" } }, "rust-analyzer.rustcSource": { "markdownDescription": "Path to the Cargo.toml of the rust compiler workspace, for usage in rustc_private\nprojects, or \"discover\" to try to automatically find it if the `rustc-dev` component\nis installed.\n\nAny project which uses rust-analyzer with the rustcPrivate\ncrates must set `[package.metadata.rust-analyzer] rustc_private=true` to use it.\n\nThis option does not take effect until rust-analyzer is restarted.", "default": null, "type": [ "null", "string" ] }, "rust-analyzer.rustfmt.extraArgs": { "markdownDescription": "Additional arguments to `rustfmt`.", "default": [], "type": "array", "items": { "type": "string" } }, "rust-analyzer.rustfmt.overrideCommand": { "markdownDescription": "Advanced option, fully override the command rust-analyzer uses for\nformatting.", "default": null, "type": [ "null", "array" ], "items": { "type": "string" } }, "rust-analyzer.rustfmt.enableRangeFormatting": { "markdownDescription": "Enables the use of rustfmt's unstable range formatting command for the\n`textDocument/rangeFormatting` request. The rustfmt option is unstable and only\navailable on a nightly build.", "default": false, "type": "boolean" }, "rust-analyzer.workspace.symbol.search.scope": { "markdownDescription": "Workspace symbol search scope.", "default": "workspace", "type": "string", "enum": [ "workspace", "workspace_and_dependencies" ], "enumDescriptions": [ "Search in current workspace only", "Search in current workspace and dependencies" ] }, "rust-analyzer.workspace.symbol.search.kind": { "markdownDescription": "Workspace symbol search kind.", "default": "only_types", "type": "string", "enum": [ "only_types", "all_symbols" ], "enumDescriptions": [ "Search for types only", "Search for all symbols kinds" ] }, "$generated-end": {} } }, "problemPatterns": [ { "name": "rustc", "patterns": [ { "regexp": "^(warning|warn|error)(?:\\[(.*?)\\])?: (.*)$", "severity": 1, "code": 2, "message": 3 }, { "regexp": "^[\\s->=]*(.*?):(\\d*):(\\d*)\\s*$", "file": 1, "line": 2, "column": 3 } ] }, { "name": "rustc-json", "patterns": [ { "regexp": "^.*\"message\":{\"message\":\"([^\"]*).*?\"file_name\":\"([^\"]+).*?\"line_start\":(\\d+).*?\"line_end\":(\\d+).*?\"column_start\":(\\d+).*?\"column_end\":(\\d+).*}$", "message": 1, "file": 2, "line": 3, "endLine": 4, "column": 5, "endColumn": 6 } ] } ], "languages": [ { "id": "ra_syntax_tree", "extensions": [ ".rast" ] }, { "id": "rust", "extensions": [ ".rs" ], "aliases": [ "Rust", "rs" ], "configuration": "language-configuration.json" } ], "grammars": [ { "language": "ra_syntax_tree", "scopeName": "source.ra_syntax_tree", "path": "ra_syntax_tree.tmGrammar.json" } ], "problemMatchers": [ { "name": "rustc", "owner": "rustc", "source": "rustc", "fileLocation": [ "autoDetect", "${workspaceRoot}" ], "pattern": "$rustc" }, { "name": "rustc-json", "owner": "rustc", "source": "rustc", "fileLocation": [ "autoDetect", "${workspaceRoot}" ], "pattern": "$rustc-json" }, { "name": "rustc-watch", "owner": "rustc", "source": "rustc", "fileLocation": [ "autoDetect", "${workspaceRoot}" ], "background": { "beginsPattern": "^\\[Running\\b", "endsPattern": "^\\[Finished running\\b" }, "pattern": "$rustc" } ], "colors": [ { "id": "rust_analyzer.inlayHints.foreground", "description": "Foreground color of inlay hints (is overriden by more specific rust_analyzer.inlayHints.foreground.* configurations)", "defaults": { "dark": "#A0A0A0F0", "light": "#747474", "highContrast": "#BEBEBE" } }, { "id": "rust_analyzer.inlayHints.background", "description": "Background color of inlay hints (is overriden by more specific rust_analyzer.inlayHints.background.* configurations)", "defaults": { "dark": "#11223300", "light": "#11223300", "highContrast": "#11223300" } }, { "id": "rust_analyzer.inlayHints.foreground.typeHints", "description": "Foreground color of inlay type hints for variables (overrides rust_analyzer.inlayHints.foreground)", "defaults": { "dark": "rust_analyzer.inlayHints.foreground", "light": "rust_analyzer.inlayHints.foreground", "highContrast": "rust_analyzer.inlayHints.foreground" } }, { "id": "rust_analyzer.inlayHints.foreground.chainingHints", "description": "Foreground color of inlay type hints for method chains (overrides rust_analyzer.inlayHints.foreground)", "defaults": { "dark": "rust_analyzer.inlayHints.foreground", "light": "rust_analyzer.inlayHints.foreground", "highContrast": "rust_analyzer.inlayHints.foreground" } }, { "id": "rust_analyzer.inlayHints.foreground.parameterHints", "description": "Foreground color of function parameter name inlay hints at the call site (overrides rust_analyzer.inlayHints.foreground)", "defaults": { "dark": "rust_analyzer.inlayHints.foreground", "light": "rust_analyzer.inlayHints.foreground", "highContrast": "rust_analyzer.inlayHints.foreground" } }, { "id": "rust_analyzer.inlayHints.background.typeHints", "description": "Background color of inlay type hints for variables (overrides rust_analyzer.inlayHints.background)", "defaults": { "dark": "rust_analyzer.inlayHints.background", "light": "rust_analyzer.inlayHints.background", "highContrast": "rust_analyzer.inlayHints.background" } }, { "id": "rust_analyzer.inlayHints.background.chainingHints", "description": "Background color of inlay type hints for method chains (overrides rust_analyzer.inlayHints.background)", "defaults": { "dark": "rust_analyzer.inlayHints.background", "light": "rust_analyzer.inlayHints.background", "highContrast": "rust_analyzer.inlayHints.background" } }, { "id": "rust_analyzer.inlayHints.background.parameterHints", "description": "Background color of function parameter name inlay hints at the call site (overrides rust_analyzer.inlayHints.background)", "defaults": { "dark": "rust_analyzer.inlayHints.background", "light": "rust_analyzer.inlayHints.background", "highContrast": "rust_analyzer.inlayHints.background" } }, { "id": "rust_analyzer.syntaxTreeBorder", "description": "Color of the border displayed in the Rust source code for the selected syntax node (see \"Show Syntax Tree\" command)", "defaults": { "dark": "#ffffff", "light": "#b700ff", "highContrast": "#b700ff" } } ], "semanticTokenTypes": [ { "id": "attribute", "description": "Style for attributes" }, { "id": "boolean", "description": "Style for boolean literals", "superType": "keyword" }, { "id": "builtinType", "description": "Style for builtin types", "superType": "type" }, { "id": "lifetime", "description": "Style for lifetimes" }, { "id": "selfKeyword", "description": "Style for the self keyword", "superType": "keyword" }, { "id": "typeAlias", "description": "Style for type aliases", "superType": "type" }, { "id": "union", "description": "Style for C-style untagged unions", "superType": "type" }, { "id": "unresolvedReference", "description": "Style for names which can not be resolved due to compilation errors" }, { "id": "formatSpecifier", "description": "Style for {} placeholders in format strings" }, { "id": "punctuation", "description": "generic punctuation" }, { "id": "parenthesis", "description": "( or )", "superType": "punctuation" }, { "id": "bracket", "description": "[ or ]", "superType": "punctuation" }, { "id": "brace", "description": "{ or }", "superType": "punctuation" }, { "id": "angle", "description": "< or >", "superType": "punctuation" }, { "id": "comma", "description": ",", "superType": "punctuation" }, { "id": "colon", "description": ":", "superType": "punctuation" }, { "id": "semicolon", "description": ";", "superType": "punctuation" }, { "id": "dot", "description": ".", "superType": "punctuation" } ], "semanticTokenModifiers": [ { "id": "async", "description": "Style for async functions and the `async` and `await` keywords" }, { "id": "attribute", "description": "Style for elements within attributes" }, { "id": "constant", "description": "Style for compile-time constants" }, { "id": "callable", "description": "Style for locals whose types implements one of the `Fn*` traits" }, { "id": "consuming", "description": "Style for locals that are being consumed when use in a function call" }, { "id": "controlFlow", "description": "Style for control-flow related tokens, this includes the `?` operator" }, { "id": "definition", "description": "Style for mutable bindings" }, { "id": "injected", "description": "Style for doc-string injected highlighting like rust source blocks in documentation" }, { "id": "intraDocLink", "description": "Style for intra doc links in doc-strings" }, { "id": "library", "description": "Style for items that are defined outside of the current crate" }, { "id": "mutable", "description": "Style for mutable locals and statics as well as functions taking `&mut self`" }, { "id": "public", "description": "Style tems that are from the current crate and are `pub`" }, { "id": "reference", "description": "Style for locals behind a reference and functions taking `self` by reference" }, { "id": "trait", "description": "Style for associated trait items" }, { "id": "unsafe", "description": "Style for unsafe operations, like unsafe function calls, as well as the `unsafe` token" } ], "semanticTokenScopes": [ { "language": "rust", "scopes": { "attribute": [ "meta.attribute.rust" ], "function.attribute": [ "entity.name.function.attribute.rust" ], "boolean": [ "constant.language.boolean.rust" ], "builtinType": [ "support.type.primitive.rust" ], "lifetime": [ "storage.modifier.lifetime.rust" ], "typeAlias": [ "entity.name.type.typeAlias.rust" ], "union": [ "entity.name.type.union.rust" ], "struct": [ "entity.name.type.struct.rust" ], "keyword": [ "keyword.other.rust" ], "keyword.controlFlow": [ "keyword.control.rust" ], "variable.constant": [ "variable.other.constant.rust" ], "formatSpecifier": [ "punctuation.section.embedded.rust" ], "*.mutable": [ "markup.underline" ] } } ], "menus": { "commandPalette": [ { "command": "rust-analyzer.syntaxTree", "when": "inRustProject" }, { "command": "rust-analyzer.viewHir", "when": "inRustProject" }, { "command": "rust-analyzer.expandMacro", "when": "inRustProject" }, { "command": "rust-analyzer.matchingBrace", "when": "inRustProject" }, { "command": "rust-analyzer.parentModule", "when": "inRustProject" }, { "command": "rust-analyzer.joinLines", "when": "inRustProject" }, { "command": "rust-analyzer.run", "when": "inRustProject" }, { "command": "rust-analyzer.debug", "when": "inRustProject" }, { "command": "rust-analyzer.newDebugConfig", "when": "inRustProject" }, { "command": "rust-analyzer.analyzerStatus", "when": "inRustProject" }, { "command": "rust-analyzer.memoryUsage", "when": "inRustProject" }, { "command": "rust-analyzer.reloadWorkspace", "when": "inRustProject" }, { "command": "rust-analyzer.reload", "when": "inRustProject" }, { "command": "rust-analyzer.updateGithubToken", "when": "inRustProject" }, { "command": "rust-analyzer.onEnter", "when": "inRustProject" }, { "command": "rust-analyzer.ssr", "when": "inRustProject" }, { "command": "rust-analyzer.serverVersion", "when": "inRustProject" }, { "command": "rust-analyzer.toggleInlayHints", "when": "inRustProject" }, { "command": "rust-analyzer.openDocs", "when": "inRustProject" }, { "command": "rust-analyzer.openCargoToml", "when": "inRustProject" } ], "editor/context": [ { "command": "rust-analyzer.peekTests", "when": "inRustProject", "group": "navigation@1000" } ] } } }