Files
rust/editors/code/package.json
T
Veetaha 655c8337c0 vscode: fix vscode-vim keybindings conflict
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
2020-02-25 23:20:07 +02:00

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"
}
}
]
}
}