diff options
Diffstat (limited to 'editors')
-rw-r--r-- | editors/code/package.json | 50 | ||||
-rw-r--r-- | editors/code/src/main.ts | 34 |
2 files changed, 48 insertions, 36 deletions
diff --git a/editors/code/package.json b/editors/code/package.json index abcc84eda..13749a084 100644 --- a/editors/code/package.json +++ b/editors/code/package.json | |||
@@ -250,12 +250,12 @@ | |||
250 | } | 250 | } |
251 | ], | 251 | ], |
252 | "default": null, | 252 | "default": null, |
253 | "description": "Environment variables passed to the runnable launched using `Test ` or `Debug` lens or `rust-analyzer.run` command." | 253 | "markdownDescription": "Environment variables passed to the runnable launched using `Test` or `Debug` lens or `rust-analyzer.run` command." |
254 | }, | 254 | }, |
255 | "rust-analyzer.inlayHints.enable": { | 255 | "rust-analyzer.inlayHints.enable": { |
256 | "type": "boolean", | 256 | "type": "boolean", |
257 | "default": true, | 257 | "default": true, |
258 | "description": "Whether to show inlay hints" | 258 | "description": "Whether to show inlay hints." |
259 | }, | 259 | }, |
260 | "rust-analyzer.updates.channel": { | 260 | "rust-analyzer.updates.channel": { |
261 | "type": "string", | 261 | "type": "string", |
@@ -265,15 +265,15 @@ | |||
265 | ], | 265 | ], |
266 | "default": "stable", | 266 | "default": "stable", |
267 | "markdownEnumDescriptions": [ | 267 | "markdownEnumDescriptions": [ |
268 | "`\"stable\"` updates are shipped weekly, they don't contain cutting-edge features from VSCode proposed APIs but have less bugs in general", | 268 | "`stable` updates are shipped weekly, they don't contain cutting-edge features from VSCode proposed APIs but have less bugs in general.", |
269 | "`\"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**" | 269 | "`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**." |
270 | ], | 270 | ], |
271 | "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" | 271 | "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." |
272 | }, | 272 | }, |
273 | "rust-analyzer.updates.askBeforeDownload": { | 273 | "rust-analyzer.updates.askBeforeDownload": { |
274 | "type": "boolean", | 274 | "type": "boolean", |
275 | "default": true, | 275 | "default": true, |
276 | "description": "Whether to ask for permission before downloading any files from the Internet" | 276 | "description": "Whether to ask for permission before downloading any files from the Internet." |
277 | }, | 277 | }, |
278 | "rust-analyzer.serverPath": { | 278 | "rust-analyzer.serverPath": { |
279 | "type": [ | 279 | "type": [ |
@@ -281,7 +281,7 @@ | |||
281 | "string" | 281 | "string" |
282 | ], | 282 | ], |
283 | "default": null, | 283 | "default": null, |
284 | "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" | 284 | "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" |
285 | }, | 285 | }, |
286 | "rust-analyzer.trace.server": { | 286 | "rust-analyzer.trace.server": { |
287 | "type": "string", | 287 | "type": "string", |
@@ -297,10 +297,10 @@ | |||
297 | "Full log" | 297 | "Full log" |
298 | ], | 298 | ], |
299 | "default": "off", | 299 | "default": "off", |
300 | "description": "Trace requests to the rust-analyzer (this is usually overly verbose and not recommended for regular users)" | 300 | "description": "Trace requests to the rust-analyzer (this is usually overly verbose and not recommended for regular users)." |
301 | }, | 301 | }, |
302 | "rust-analyzer.trace.extension": { | 302 | "rust-analyzer.trace.extension": { |
303 | "description": "Enable logging of VS Code extensions itself", | 303 | "description": "Enable logging of VS Code extensions itself.", |
304 | "type": "boolean", | 304 | "type": "boolean", |
305 | "default": false | 305 | "default": false |
306 | }, | 306 | }, |
@@ -327,14 +327,14 @@ | |||
327 | } | 327 | } |
328 | }, | 328 | }, |
329 | "rust-analyzer.debug.openDebugPane": { | 329 | "rust-analyzer.debug.openDebugPane": { |
330 | "description": "Whether to open up the Debug Pane on debugging start.", | 330 | "markdownDescription": "Whether to open up the `Debug Panel` on debugging start.", |
331 | "type": "boolean", | 331 | "type": "boolean", |
332 | "default": false | 332 | "default": false |
333 | }, | 333 | }, |
334 | "rust-analyzer.debug.engineSettings": { | 334 | "rust-analyzer.debug.engineSettings": { |
335 | "type": "object", | 335 | "type": "object", |
336 | "default": {}, | 336 | "default": {}, |
337 | "description": "Optional settings passed to the debug engine. Example:\n{ \"lldb\": { \"terminal\":\"external\"} }" | 337 | "markdownDescription": "Optional settings passed to the debug engine. Example: `{ \"lldb\": { \"terminal\":\"external\"} }`" |
338 | }, | 338 | }, |
339 | "rust-analyzer.assist.importMergeBehaviour": { | 339 | "rust-analyzer.assist.importMergeBehaviour": { |
340 | "markdownDescription": "The strategy to use when inserting new imports or merging imports.", | 340 | "markdownDescription": "The strategy to use when inserting new imports or merging imports.", |
@@ -362,7 +362,7 @@ | |||
362 | ], | 362 | ], |
363 | "enumDescriptions": [ | 363 | "enumDescriptions": [ |
364 | "Insert import paths relative to the current module, using up to one `super` prefix if the parent module contains the requested item.", | 364 | "Insert import paths relative to the current module, using up to one `super` prefix if the parent module contains the requested item.", |
365 | "Prefix all import paths with `self` if they don't begin with `self`, `super`, `crate` or a crate name", | 365 | "Prefix all import paths with `self` if they don't begin with `self`, `super`, `crate` or a crate name.", |
366 | "Force import paths to be absolute by always starting them with `crate` or the crate name they refer to." | 366 | "Force import paths to be absolute by always starting them with `crate` or the crate name they refer to." |
367 | ] | 367 | ] |
368 | }, | 368 | }, |
@@ -372,7 +372,7 @@ | |||
372 | "type": "boolean" | 372 | "type": "boolean" |
373 | }, | 373 | }, |
374 | "rust-analyzer.cargo.autoreload": { | 374 | "rust-analyzer.cargo.autoreload": { |
375 | "markdownDescription": "Automatically refresh project info via `cargo metadata` on Cargo.toml changes.", | 375 | "markdownDescription": "Automatically refresh project info via `cargo metadata` on `Cargo.toml` changes.", |
376 | "default": true, | 376 | "default": true, |
377 | "type": "boolean" | 377 | "type": "boolean" |
378 | }, | 378 | }, |
@@ -418,7 +418,7 @@ | |||
418 | "type": "boolean" | 418 | "type": "boolean" |
419 | }, | 419 | }, |
420 | "rust-analyzer.checkOnSave.allFeatures": { | 420 | "rust-analyzer.checkOnSave.allFeatures": { |
421 | "markdownDescription": "Check with all features (will be passed as `--all-features`). Defaults to `rust-analyzer.cargo.allFeatures`.", | 421 | "markdownDescription": "Check with all features (will be passed as `--all-features`). Defaults to `#rust-analyzer.cargo.allFeatures#`.", |
422 | "default": null, | 422 | "default": null, |
423 | "type": [ | 423 | "type": [ |
424 | "null", | 424 | "null", |
@@ -444,7 +444,7 @@ | |||
444 | ] | 444 | ] |
445 | }, | 445 | }, |
446 | "rust-analyzer.checkOnSave.target": { | 446 | "rust-analyzer.checkOnSave.target": { |
447 | "markdownDescription": "Check for a specific target. Defaults to `rust-analyzer.cargo.target`.", | 447 | "markdownDescription": "Check for a specific target. Defaults to `#rust-analyzer.cargo.target#`.", |
448 | "default": null, | 448 | "default": null, |
449 | "type": [ | 449 | "type": [ |
450 | "null", | 450 | "null", |
@@ -460,7 +460,7 @@ | |||
460 | } | 460 | } |
461 | }, | 461 | }, |
462 | "rust-analyzer.checkOnSave.features": { | 462 | "rust-analyzer.checkOnSave.features": { |
463 | "markdownDescription": "List of features to activate. Defaults to `rust-analyzer.cargo.features`.", | 463 | "markdownDescription": "List of features to activate. Defaults to `#rust-analyzer.cargo.features#`.", |
464 | "default": null, | 464 | "default": null, |
465 | "type": [ | 465 | "type": [ |
466 | "null", | 466 | "null", |
@@ -497,7 +497,7 @@ | |||
497 | "type": "boolean" | 497 | "type": "boolean" |
498 | }, | 498 | }, |
499 | "rust-analyzer.completion.autoimport.enable": { | 499 | "rust-analyzer.completion.autoimport.enable": { |
500 | "markdownDescription": "Toggles the additional completions that automatically add imports when completed. Note that your client have to specify the `additionalTextEdits` LSP client capability to truly have this feature enabled.", | 500 | "markdownDescription": "Toggles the additional completions that automatically add imports when completed. Note that your client must specify the `additionalTextEdits` LSP client capability to truly have this feature enabled.", |
501 | "default": true, | 501 | "default": true, |
502 | "type": "boolean" | 502 | "type": "boolean" |
503 | }, | 503 | }, |
@@ -521,7 +521,7 @@ | |||
521 | "uniqueItems": true | 521 | "uniqueItems": true |
522 | }, | 522 | }, |
523 | "rust-analyzer.diagnostics.warningsAsHint": { | 523 | "rust-analyzer.diagnostics.warningsAsHint": { |
524 | "markdownDescription": "List of warnings that should be displayed with info severity.\\nThe warnings will be indicated by a blue squiggly underline in code and a blue icon in the problems panel.", | 524 | "markdownDescription": "List of warnings that should be displayed with info severity.\\n\\nThe warnings will be indicated by a blue squiggly underline in code and a blue icon in the `Problems Panel`.", |
525 | "default": [], | 525 | "default": [], |
526 | "type": "array", | 526 | "type": "array", |
527 | "items": { | 527 | "items": { |
@@ -529,7 +529,7 @@ | |||
529 | } | 529 | } |
530 | }, | 530 | }, |
531 | "rust-analyzer.diagnostics.warningsAsInfo": { | 531 | "rust-analyzer.diagnostics.warningsAsInfo": { |
532 | "markdownDescription": "List of warnings that should be displayed with hint severity.\\nThe warnings will be indicated by faded text or three dots in code and will not show up in the problems panel.", | 532 | "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 and will not show up in the `Problems Panel`.", |
533 | "default": [], | 533 | "default": [], |
534 | "type": "array", | 534 | "type": "array", |
535 | "items": { | 535 | "items": { |
@@ -577,7 +577,7 @@ | |||
577 | "type": "boolean" | 577 | "type": "boolean" |
578 | }, | 578 | }, |
579 | "rust-analyzer.inlayHints.maxLength": { | 579 | "rust-analyzer.inlayHints.maxLength": { |
580 | "markdownDescription": "Maximum length for inlay hints.", | 580 | "markdownDescription": "Maximum length for inlay hints. Default is unlimited.", |
581 | "default": null, | 581 | "default": null, |
582 | "type": [ | 582 | "type": [ |
583 | "null", | 583 | "null", |
@@ -621,7 +621,7 @@ | |||
621 | "type": "boolean" | 621 | "type": "boolean" |
622 | }, | 622 | }, |
623 | "rust-analyzer.linkedProjects": { | 623 | "rust-analyzer.linkedProjects": { |
624 | "markdownDescription": "Disable project auto-discovery in favor of explicitly specified set of projects. \\nElements must be paths pointing to Cargo.toml, rust-project.json, or JSON objects in rust-project.json format.", | 624 | "markdownDescription": "Disable project auto-discovery in favor of explicitly specified set of projects.\\n\\nElements must be paths pointing to `Cargo.toml`, `rust-project.json`, or JSON objects in `rust-project.json` format.", |
625 | "default": [], | 625 | "default": [], |
626 | "type": "array", | 626 | "type": "array", |
627 | "items": { | 627 | "items": { |
@@ -632,7 +632,7 @@ | |||
632 | } | 632 | } |
633 | }, | 633 | }, |
634 | "rust-analyzer.lruCapacity": { | 634 | "rust-analyzer.lruCapacity": { |
635 | "markdownDescription": "Number of syntax trees rust-analyzer keeps in memory.", | 635 | "markdownDescription": "Number of syntax trees rust-analyzer keeps in memory. Defaults to 128.", |
636 | "default": null, | 636 | "default": null, |
637 | "type": [ | 637 | "type": [ |
638 | "null", | 638 | "null", |
@@ -646,7 +646,7 @@ | |||
646 | "type": "boolean" | 646 | "type": "boolean" |
647 | }, | 647 | }, |
648 | "rust-analyzer.procMacro.enable": { | 648 | "rust-analyzer.procMacro.enable": { |
649 | "markdownDescription": "Enable Proc macro support, cargo.loadOutDirsFromCheck must be enabled.", | 649 | "markdownDescription": "Enable Proc macro support, `#rust-analyzer.cargo.loadOutDirsFromCheck#` must be enabled.", |
650 | "default": false, | 650 | "default": false, |
651 | "type": "boolean" | 651 | "type": "boolean" |
652 | }, | 652 | }, |
@@ -659,7 +659,7 @@ | |||
659 | ] | 659 | ] |
660 | }, | 660 | }, |
661 | "rust-analyzer.runnables.cargoExtraArgs": { | 661 | "rust-analyzer.runnables.cargoExtraArgs": { |
662 | "markdownDescription": "Additional arguments to be passed to cargo for runnables such as tests or binaries.\\nFor example, it may be '--release'.", | 662 | "markdownDescription": "Additional arguments to be passed to cargo for runnables such as tests or binaries.\\nFor example, it may be `--release`.", |
663 | "default": [], | 663 | "default": [], |
664 | "type": "array", | 664 | "type": "array", |
665 | "items": { | 665 | "items": { |
@@ -675,7 +675,7 @@ | |||
675 | ] | 675 | ] |
676 | }, | 676 | }, |
677 | "rust-analyzer.rustfmt.extraArgs": { | 677 | "rust-analyzer.rustfmt.extraArgs": { |
678 | "markdownDescription": "Additional arguments to rustfmt.", | 678 | "markdownDescription": "Additional arguments to `rustfmt`.", |
679 | "default": [], | 679 | "default": [], |
680 | "type": "array", | 680 | "type": "array", |
681 | "items": { | 681 | "items": { |
diff --git a/editors/code/src/main.ts b/editors/code/src/main.ts index 4b2d3c8a5..282240d84 100644 --- a/editors/code/src/main.ts +++ b/editors/code/src/main.ts | |||
@@ -131,7 +131,7 @@ async function tryActivate(context: vscode.ExtensionContext) { | |||
131 | ctx.pushCleanup(activateTaskProvider(workspaceFolder, ctx.config)); | 131 | ctx.pushCleanup(activateTaskProvider(workspaceFolder, ctx.config)); |
132 | 132 | ||
133 | activateInlayHints(ctx); | 133 | activateInlayHints(ctx); |
134 | warnAboutRustLangExtensionConflict(); | 134 | warnAboutExtensionConflicts(); |
135 | 135 | ||
136 | vscode.workspace.onDidChangeConfiguration( | 136 | vscode.workspace.onDidChangeConfiguration( |
137 | _ => ctx?.client?.sendNotification('workspace/didChangeConfiguration', { settings: "" }), | 137 | _ => ctx?.client?.sendNotification('workspace/didChangeConfiguration', { settings: "" }), |
@@ -287,12 +287,14 @@ async function getServer(config: Config, state: PersistentState): Promise<string | |||
287 | if (config.package.releaseTag === null) return "rust-analyzer"; | 287 | if (config.package.releaseTag === null) return "rust-analyzer"; |
288 | 288 | ||
289 | let platform: string | undefined; | 289 | let platform: string | undefined; |
290 | if (process.arch === "x64" || process.arch === "ia32") { | 290 | if ((process.arch === "x64" || process.arch === "ia32") && process.platform === "win32") { |
291 | if (process.platform === "linux") platform = "linux"; | 291 | platform = "x86_64-pc-windows-msvc"; |
292 | if (process.platform === "darwin") platform = "mac"; | 292 | } else if (process.arch === "x64" && process.platform === "linux") { |
293 | if (process.platform === "win32") platform = "windows"; | 293 | platform = "x86_64-unknown-linux-gnu"; |
294 | } else if (process.arch === "x64" && process.platform === "darwin") { | ||
295 | platform = "x86_64-apple-darwin"; | ||
294 | } else if (process.arch === "arm64" && process.platform === "darwin") { | 296 | } else if (process.arch === "arm64" && process.platform === "darwin") { |
295 | platform = "mac"; | 297 | platform = "aarch64-apple-darwin"; |
296 | } | 298 | } |
297 | if (platform === undefined) { | 299 | if (platform === undefined) { |
298 | vscode.window.showErrorMessage( | 300 | vscode.window.showErrorMessage( |
@@ -305,7 +307,7 @@ async function getServer(config: Config, state: PersistentState): Promise<string | |||
305 | ); | 307 | ); |
306 | return undefined; | 308 | return undefined; |
307 | } | 309 | } |
308 | const ext = platform === "windows" ? ".exe" : ""; | 310 | const ext = platform.indexOf("-windows-") !== -1 ? ".exe" : ""; |
309 | const dest = path.join(config.globalStoragePath, `rust-analyzer-${platform}${ext}`); | 311 | const dest = path.join(config.globalStoragePath, `rust-analyzer-${platform}${ext}`); |
310 | const exists = await fs.stat(dest).then(() => true, () => false); | 312 | const exists = await fs.stat(dest).then(() => true, () => false); |
311 | if (!exists) { | 313 | if (!exists) { |
@@ -411,11 +413,21 @@ async function queryForGithubToken(state: PersistentState): Promise<void> { | |||
411 | } | 413 | } |
412 | } | 414 | } |
413 | 415 | ||
414 | function warnAboutRustLangExtensionConflict() { | 416 | function warnAboutExtensionConflicts() { |
415 | const rustLangExt = vscode.extensions.getExtension("rust-lang.rust"); | 417 | const conflicting = [ |
416 | if (rustLangExt !== undefined) { | 418 | ["rust-analyzer", "matklad.rust-analyzer"], |
419 | ["Rust", "rust-lang.rust"], | ||
420 | ["Rust", "kalitaalexey.vscode-rust"], | ||
421 | ]; | ||
422 | |||
423 | const found = conflicting.filter( | ||
424 | nameId => vscode.extensions.getExtension(nameId[1]) !== undefined); | ||
425 | |||
426 | if (found.length > 1) { | ||
427 | const fst = found[0]; | ||
428 | const sec = found[1]; | ||
417 | vscode.window.showWarningMessage( | 429 | vscode.window.showWarningMessage( |
418 | "You have both rust-analyzer (matklad.rust-analyzer) and Rust (rust-lang.rust) " + | 430 | `You have both the ${fst[0]} (${fst[1]}) and ${sec[0]} (${sec[1]}) ` + |
419 | "plugins enabled. These are known to conflict and cause various functions of " + | 431 | "plugins enabled. These are known to conflict and cause various functions of " + |
420 | "both plugins to not work correctly. You should disable one of them.", "Got it"); | 432 | "both plugins to not work correctly. You should disable one of them.", "Got it"); |
421 | }; | 433 | }; |