mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-04 02:54:00 +00:00
fb6e655de8
Everything now happens in main.ts, in the bootstrap family of functions. The current flow is: * check everything only on extension installation. * if the user is on nightly channel, try to download the nightly extension and reload. * when we install nightly extension, we persist its release id, so that we can check if the current release is different. * if server binary was not downloaded by the current version of the extension, redownload it (we persist the version of ext that downloaded the server).
546 lines
20 KiB
JSON
546 lines
20 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.20200309-nightly",
|
|
"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.43.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.30",
|
|
"@types/node-fetch": "^2.5.5",
|
|
"@types/vscode": "^1.43.0",
|
|
"@typescript-eslint/eslint-plugin": "^2.23.0",
|
|
"@typescript-eslint/parser": "^2.23.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.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.serverPath": {
|
|
"type": [
|
|
"null",
|
|
"string"
|
|
],
|
|
"default": null,
|
|
"description": "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.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 specified `cargo-watch` command 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.inlayHints.typeHints": {
|
|
"type": "boolean",
|
|
"default": true,
|
|
"description": "Whether to show inlay type hints"
|
|
},
|
|
"rust-analyzer.inlayHints.parameterHints": {
|
|
"type": "boolean",
|
|
"default": true,
|
|
"description": "Whether to show function parameter name inlay hints at the call site"
|
|
},
|
|
"rust-analyzer.inlayHints.maxLength": {
|
|
"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"
|
|
},
|
|
"rust-analyzer.cargoFeatures.loadOutDirsFromCheck": {
|
|
"type": "boolean",
|
|
"default": false,
|
|
"markdownDescription": "Run `cargo check` on startup to get the correct value for package OUT_DIRs"
|
|
}
|
|
}
|
|
},
|
|
"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"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|