mirror of
https://github.com/rust-lang/rust.git
synced 2026-05-07 17:18:32 +03:00
655c8337c0
vscode-vim extension overrides the `type` command so that it prevents some keypresses to reach the text document editor. It conflicts with our `onEnter` keybinding that is used to support automatic doc comments extending and indentation insertion. The VSCode-native way to implement this would be to use regular expressions, but as per matklad it is considered not acceptable for the language server. Thus we implement it via a `Enter` keybinding that invokes our `onEnter` command which sends a request to rust-analyzer process and applies the appropriate source change recieved from it. At the end of the day we may only apply ad hoc workarounds for conflicting extensions. But vscode has another bug for that. You either cannot use parantheses in `when` condition of a keybinding or it just malfunctions. See an issue about that here: https://github.com/microsoft/vscode/issues/91473 To get the ultimate context, follow this zulip thread: https://rust-lang.zulipchat.com/#narrow/stream/185405-t-compiler.2Fwg-rls-2.2E0/topic/Enhanced.20typing
381 lines
14 KiB
JSON
381 lines
14 KiB
JSON
{
|
|
"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"
|
|
},
|
|
"categories": [
|
|
"Other"
|
|
],
|
|
"engines": {
|
|
"vscode": "^1.42.0"
|
|
},
|
|
"scripts": {
|
|
"vscode:prepublish": "tsc && rollup -c",
|
|
"package": "vsce package -o rust-analyzer.vsix",
|
|
"watch": "tsc --watch",
|
|
"fmt": "tsfmt -r && eslint -c .eslintrc.js --ext ts ./src/ --fix"
|
|
},
|
|
"dependencies": {
|
|
"jsonc-parser": "^2.1.0",
|
|
"node-fetch": "^2.6.0",
|
|
"throttle-debounce": "^2.1.0",
|
|
"vscode-languageclient": "^6.1.1"
|
|
},
|
|
"devDependencies": {
|
|
"@rollup/plugin-commonjs": "^11.0.2",
|
|
"@rollup/plugin-node-resolve": "^7.1.1",
|
|
"@types/node": "^12.12.27",
|
|
"@types/node-fetch": "^2.5.4",
|
|
"@types/throttle-debounce": "^2.1.0",
|
|
"@types/vscode": "^1.42.0",
|
|
"@typescript-eslint/eslint-plugin": "^2.20.0",
|
|
"@typescript-eslint/parser": "^2.20.0",
|
|
"eslint": "^6.8.0",
|
|
"rollup": "^1.31.1",
|
|
"tslib": "^1.10.0",
|
|
"typescript": "^3.8.2",
|
|
"typescript-formatter": "^7.2.2",
|
|
"vsce": "^1.73.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.run",
|
|
"key": "ctrl+r",
|
|
"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.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"
|
|
},
|
|
"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,
|
|
"description": "Run `cargo check` for diagnostics on save"
|
|
},
|
|
"rust-analyzer.cargo-watch.arguments": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "`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",
|
|
"description": "`cargo-watch` command. (e.g: `clippy` will run as `cargo watch -x clippy` )",
|
|
"default": "check"
|
|
},
|
|
"rust-analyzer.cargo-watch.allTargets": {
|
|
"type": "boolean",
|
|
"description": "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,
|
|
"description": "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"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|