mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-27 21:43:37 +00:00
8bb37737c9
8873: Implement import-granularity guessing r=matklad a=Veykril This renames our `MergeBehavior` to `ImportGranularity` as rustfmt has it as the purpose of them are basically the same. `ImportGranularity::Preserve` currently has no specific purpose for us as we don't have an organize imports assist yet, so it currently acts the same as `ImportGranularity::Item`. We now try to guess the import style on a per file basis and fall back to the user granularity setting if the file has no specific style yet or where it is ambiguous. This can be turned off by setting `import.enforceGranularity` to `true`. Closes https://github.com/rust-analyzer/rust-analyzer/issues/8870 Co-authored-by: Lukas Tobias Wirth <lukastw97@gmail.com>
1255 lines
52 KiB
JSON
1255 lines
52 KiB
JSON
{
|
|
"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.53.0"
|
|
},
|
|
"enableProposedApi": true,
|
|
"scripts": {
|
|
"vscode:prepublish": "tsc && rollup -c",
|
|
"package": "vsce package -o rust-analyzer.vsix",
|
|
"build": "tsc",
|
|
"watch": "tsc --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": "npm run build",
|
|
"test": "node ./out/tests/runTests.js"
|
|
},
|
|
"dependencies": {
|
|
"https-proxy-agent": "^5.0.0",
|
|
"node-fetch": "^2.6.1",
|
|
"vscode-languageclient": "^7.1.0-next.4"
|
|
},
|
|
"devDependencies": {
|
|
"@rollup/plugin-commonjs": "^17.0.0",
|
|
"@rollup/plugin-node-resolve": "^11.0.0",
|
|
"@types/glob": "^7.1.3",
|
|
"@types/mocha": "^8.0.4",
|
|
"@types/node": "~12.12.6",
|
|
"@types/node-fetch": "^2.5.7",
|
|
"@types/vscode": "^1.53.0",
|
|
"@typescript-eslint/eslint-plugin": "^4.9.0",
|
|
"@typescript-eslint/parser": "^4.9.0",
|
|
"eslint": "^7.15.0",
|
|
"glob": "^7.1.6",
|
|
"mocha": "^8.2.1",
|
|
"rollup": "^2.34.2",
|
|
"tslib": "^2.0.3",
|
|
"typescript": "^4.1.2",
|
|
"typescript-formatter": "^7.2.2",
|
|
"vsce": "^1.85.0",
|
|
"vscode-test": "^1.5.1"
|
|
},
|
|
"activationEvents": [
|
|
"onLanguage:rust",
|
|
"onCommand:rust-analyzer.analyzerStatus",
|
|
"onCommand:rust-analyzer.memoryUsage",
|
|
"onCommand:rust-analyzer.reloadWorkspace",
|
|
"workspaceContains:**/Cargo.toml"
|
|
],
|
|
"main": "./out/src/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.viewCrateGraph",
|
|
"title": "View Crate Graph",
|
|
"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": true,
|
|
"description": "Whether to ask for permission before downloading any files from the Internet."
|
|
},
|
|
"rust-analyzer.server.path": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
],
|
|
"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/<id>": "${env:USERPROFILE}/.rustup/toolchains/<toolchain-id>/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": false,
|
|
"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",
|
|
"by_self",
|
|
"by_crate"
|
|
],
|
|
"enumDescriptions": [
|
|
"Insert import paths relative to the current module, using up to one `super` prefix if the parent module contains the requested item.",
|
|
"Prefix all import paths with `self` if they don't begin with `self`, `super`, `crate` or a crate name.",
|
|
"Force import paths to be absolute by always starting them with `crate` or the crate name they refer to."
|
|
]
|
|
},
|
|
"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.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.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.",
|
|
"default": true,
|
|
"type": "boolean"
|
|
},
|
|
"rust-analyzer.completion.addCallParenthesis": {
|
|
"markdownDescription": "Whether to add parenthesis when completing functions.",
|
|
"default": true,
|
|
"type": "boolean"
|
|
},
|
|
"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.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 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.diagnostics.warningsAsInfo": {
|
|
"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.files.watcher": {
|
|
"markdownDescription": "Controls file watching implementation.",
|
|
"default": "client",
|
|
"type": "string"
|
|
},
|
|
"rust-analyzer.files.excludeDirs": {
|
|
"markdownDescription": "These directories will be ignored by rust-analyzer.",
|
|
"default": [],
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"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.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.run": {
|
|
"markdownDescription": "Whether to show `Run` action. Only applies when\n`#rust-analyzer.hoverActions.enable#` is set.",
|
|
"default": true,
|
|
"type": "boolean"
|
|
},
|
|
"rust-analyzer.hoverActions.linksInHover": {
|
|
"markdownDescription": "Use markdown syntax for links in hover.",
|
|
"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.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. Only applies when\n`#rust-analyzer.lens.enable#` is set.",
|
|
"default": false,
|
|
"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.\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 is not reloaded automatically; you must restart rust-analyzer for it to take effect.",
|
|
"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.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": false
|
|
}
|
|
},
|
|
"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": "attribute",
|
|
"description": "Style for elements within attributes"
|
|
},
|
|
{
|
|
"id": "constant",
|
|
"description": "Style for compile-time constants"
|
|
},
|
|
{
|
|
"id": "controlFlow",
|
|
"description": "Style for control flow keywords"
|
|
},
|
|
{
|
|
"id": "mutable",
|
|
"description": "Style for mutable bindings"
|
|
},
|
|
{
|
|
"id": "unsafe",
|
|
"description": "Style for unsafe operations"
|
|
},
|
|
{
|
|
"id": "consuming",
|
|
"description": "Style for non-Copy lvalues consumed by method/function call"
|
|
},
|
|
{
|
|
"id": "callable",
|
|
"description": "Style for variables/parameters that can be used in call expressions"
|
|
}
|
|
],
|
|
"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"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|