{ "name": "rust-analyzer", "displayName": "rust-analyzer", "description": "An alternative rust language server to the RLS", "preview": true, "private": true, "icon": "icon.png", "//": "The real version is in release.yaml, this one just needs to be bigger", "version": "0.2.20200211-dev", "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.42.0" }, "enableProposedApi": true, "scripts": { "vscode:prepublish": "tsc && rollup -c", "package": "vsce package -o rust-analyzer.vsix", "watch": "tsc --watch", "lint": "tsfmt --verify && eslint -c .eslintrc.js --ext ts ./src", "fix": " tsfmt -r && eslint -c .eslintrc.js --ext ts ./src --fix" }, "dependencies": { "jsonc-parser": "^2.2.1", "node-fetch": "^2.6.0", "vscode-languageclient": "^6.1.1" }, "devDependencies": { "@rollup/plugin-commonjs": "^11.0.2", "@rollup/plugin-node-resolve": "^7.1.1", "@types/node": "^12.12.29", "@types/node-fetch": "^2.5.5", "@types/vscode": "^1.42.0", "@typescript-eslint/eslint-plugin": "^2.22.0", "@typescript-eslint/parser": "^2.22.0", "eslint": "^6.8.0", "rollup": "^1.32.1", "tslib": "^1.11.1", "typescript": "^3.8.3", "typescript-formatter": "^7.2.2", "vsce": "^1.74.0" }, "activationEvents": [ "onLanguage:rust", "onCommand:rust-analyzer.analyzerStatus", "onCommand:rust-analyzer.collectGarbage", "workspaceContains:**/Cargo.toml" ], "main": "./out/main", "contributes": { "taskDefinitions": [ { "type": "cargo", "required": [ "command" ], "properties": { "label": { "type": "string" }, "command": { "type": "string" }, "args": { "type": "array" }, "env": { "type": "object" } } } ], "commands": [ { "command": "rust-analyzer.syntaxTree", "title": "Show Syntax Tree", "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.analyzerStatus", "title": "Status", "category": "Rust Analyzer" }, { "command": "rust-analyzer.collectGarbage", "title": "Run garbage collection", "category": "Rust Analyzer" }, { "command": "rust-analyzer.reload", "title": "Restart server", "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" } ], "keybindings": [ { "command": "rust-analyzer.parentModule", "key": "ctrl+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" }, { "command": "rust-analyzer.onEnter", "key": "enter", "when": "editorTextFocus && !suggestWidgetVisible && editorLangId == rust && !vim.active || vim.mode == 'Insert' && editorTextFocus && !suggestWidgetVisible && editorLangId == rust" } ], "configuration": { "type": "object", "title": "Rust Analyzer", "properties": { "rust-analyzer.highlighting.semanticTokens": { "type": "boolean", "default": false, "description": "Use proposed semantic tokens API for syntax highlighting" }, "rust-analyzer.highlightingOn": { "type": "boolean", "default": false, "description": "Highlight Rust code (overrides built-in syntax highlighting)" }, "rust-analyzer.rainbowHighlightingOn": { "type": "boolean", "default": false, "description": "When highlighting Rust code, use a unique color per identifier" }, "rust-analyzer.featureFlags": { "type": "object", "default": {}, "description": "Fine grained feature flags to disable annoying features", "properties": { "lsp.diagnostics": { "type": "boolean", "markdownDescription": "Whether to show diagnostics from `cargo check`" }, "completion.insertion.add-call-parenthesis": { "type": "boolean", "description": "Whether to add parenthesis when completing functions" }, "completion.insertion.add-argument-snippets": { "type": "boolean", "description": "Whether to add argument snippets when completing functions" }, "completion.enable-postfix": { "type": "boolean", "markdownDescription": "Whether to show postfix snippets like `dbg`, `if`, `not`, etc." }, "call-info.full": { "type": "boolean", "description": "Show function name and docs in parameter hints" }, "notifications.workspace-loaded": { "type": "boolean", "markdownDescription": "Whether to show `workspace loaded` message" }, "notifications.cargo-toml-not-found": { "type": "boolean", "markdownDescription": "Whether to show `can't find Cargo.toml` error message" } } }, "rust-analyzer.updates.askBeforeDownload": { "type": "boolean", "default": true, "description": "Whether to ask for permission before downloading any files from the Internet" }, "rust-analyzer.additionalOutDirs": { "type": "object", "default": {}, "markdownDescription": "Fine grained controls for OUT_DIR `env!(\"OUT_DIR\")` variable. e.g. `{\"foo\":\"/path/to/foo\"}`, " }, "rust-analyzer.serverPath": { "type": [ "null", "string" ], "default": null, "description": "Path to rust-analyzer executable (points to bundled binary by default)" }, "rust-analyzer.excludeGlobs": { "type": "array", "items": { "type": "string" }, "default": [], "description": "Paths to exclude from analysis" }, "rust-analyzer.rustfmtArgs": { "type": "array", "items": { "type": "string" }, "default": [], "description": "Additional arguments to rustfmt" }, "rust-analyzer.useClientWatching": { "type": "boolean", "default": true, "description": "client provided file watching instead of notify watching." }, "rust-analyzer.cargo-watch.enable": { "type": "boolean", "default": true, "markdownDescription": "Run `cargo check` for diagnostics on save" }, "rust-analyzer.cargo-watch.arguments": { "type": "array", "items": { "type": "string" }, "markdownDescription": "`cargo-watch` arguments. (e.g: `--features=\"shumway,pdf\"` will run as `cargo watch -x \"check --features=\"shumway,pdf\"\"` )", "default": [] }, "rust-analyzer.cargo-watch.command": { "type": "string", "markdownDescription": "`cargo-watch` command. (e.g: `clippy` will run as `cargo watch -x clippy` )", "default": "check" }, "rust-analyzer.cargo-watch.allTargets": { "type": "boolean", "markdownDescription": "Check all targets and tests (will be passed as `--all-targets`)", "default": true }, "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" }, "rust-analyzer.trace.extension": { "description": "Enable logging of VS Code extensions itself", "type": "boolean", "default": false }, "rust-analyzer.lruCapacity": { "type": [ "null", "integer" ], "default": null, "minimum": 0, "exclusiveMinimum": true, "description": "Number of syntax trees rust-analyzer keeps in memory" }, "rust-analyzer.displayInlayHints": { "type": "boolean", "default": true, "description": "Display additional type and parameter information in the editor" }, "rust-analyzer.maxInlayHintLength": { "type": [ "null", "integer" ], "default": 20, "minimum": 0, "exclusiveMinimum": true, "description": "Maximum length for inlay hints" }, "rust-analyzer.cargoFeatures.noDefaultFeatures": { "type": "boolean", "default": false, "markdownDescription": "Do not activate the `default` feature" }, "rust-analyzer.cargoFeatures.allFeatures": { "type": "boolean", "default": true, "description": "Activate all available features" }, "rust-analyzer.cargoFeatures.features": { "type": "array", "items": { "type": "string" }, "default": [], "description": "List of features to activate" } } }, "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 } ] } ], "problemMatchers": [ { "name": "rustc", "fileLocation": [ "relative", "${workspaceRoot}" ], "pattern": "$rustc" }, { "name": "rustc-json", "fileLocation": [ "relative", "${workspaceRoot}" ], "pattern": "$rustc-json" }, { "name": "rustc-watch", "fileLocation": [ "relative", "${workspaceRoot}" ], "background": { "beginsPattern": "^\\[Running\\b", "endsPattern": "^\\[Finished running\\b" }, "pattern": "$rustc" } ], "colors": [ { "id": "rust_analyzer.inlayHint", "description": "Color for inlay hints", "defaults": { "dark": "#A0A0A0F0", "light": "#747474", "highContrast": "#BEBEBE" } } ], "semanticTokenTypes": [ { "id": "attribute", "description": "Style for attributes" }, { "id": "builtinType", "description": "Style for builtin types" }, { "id": "lifetime", "description": "Style for lifetimes" }, { "id": "typeAlias", "description": "Style for type aliases" }, { "id": "union", "description": "Style for C-style untagged unions" } ], "semanticTokenModifiers": [ { "id": "constant", "description": "Style for compile-time constants" }, { "id": "control", "description": "Style for control flow keywords" }, { "id": "mutable", "description": "Style for mutable bindings" }, { "id": "unsafe", "description": "Style for unsafe operations" } ], "semanticTokenStyleDefaults": [ { "selector": "attribute", "scope": [ "meta.attribute" ] }, { "selector": "builtinType", "scope": [ "support.type.primitive" ] }, { "selector": "lifetime", "scope": [ "entity.name.lifetime.rust" ] }, { "selector": "typeAlias", "scope": [ "entity.name.typeAlias" ] }, { "selector": "union", "scope": [ "entity.name.union" ] }, { "selector": "keyword.unsafe", "scope": [ "keyword.other.unsafe" ] }, { "selector": "keyword.control", "scope": [ "keyword.control" ] }, { "selector": "variable.constant", "scope": [ "entity.name.constant" ] }, { "selector": "*.mutable", "light": { "fontStyle": "underline" }, "dark": { "fontStyle": "underline" }, "highContrast": { "fontStyle": "underline" } } ] } }