diff options
author | bors[bot] <bors[bot]@users.noreply.github.com> | 2018-12-22 13:34:04 +0000 |
---|---|---|
committer | bors[bot] <bors[bot]@users.noreply.github.com> | 2018-12-22 13:34:04 +0000 |
commit | 5a5402d4d4ab033f0035622df880c82ea064d2c5 (patch) | |
tree | a0224a5e049e27f61c20f8d7fd0b723e832192b6 | |
parent | 5c7e8f47a8318e744b8e5d5bcb127ca9753ca04b (diff) | |
parent | 0f5d9a03221ec9a4597f3e0bc29f210607713cb4 (diff) |
Merge #322
322: Fix analyzer extension fail when there are enabled any VIM extension r=matklad a=max-frai
`type` command is allowed only once to be registered and it was built specially for vim mode.
So if user has vim extension enabled, rust-analyzer initialization failes on trying to register own `type` handler.
Unfortunatelly, there are no nice ways to check if command is already registered so the way is to wrap everything with try/catch and notify user about conflict.
Co-authored-by: frai <[email protected]>
-rw-r--r-- | editors/code/src/extension.ts | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/editors/code/src/extension.ts b/editors/code/src/extension.ts index d1c525f68..4acd54d90 100644 --- a/editors/code/src/extension.ts +++ b/editors/code/src/extension.ts | |||
@@ -23,19 +23,23 @@ export function activate(context: vscode.ExtensionContext) { | |||
23 | const original = (...args: any[]) => | 23 | const original = (...args: any[]) => |
24 | vscode.commands.executeCommand(defaultCmd, ...args); | 24 | vscode.commands.executeCommand(defaultCmd, ...args); |
25 | 25 | ||
26 | registerCommand(name, async (...args: any[]) => { | 26 | try { |
27 | const editor = vscode.window.activeTextEditor; | 27 | registerCommand(name, async (...args: any[]) => { |
28 | if ( | 28 | const editor = vscode.window.activeTextEditor; |
29 | !editor || | 29 | if ( |
30 | !editor.document || | 30 | !editor || |
31 | editor.document.languageId !== 'rust' | 31 | !editor.document || |
32 | ) { | 32 | editor.document.languageId !== 'rust' |
33 | return await original(...args); | 33 | ) { |
34 | } | 34 | return await original(...args); |
35 | if (!(await f(...args))) { | 35 | } |
36 | return await original(...args); | 36 | if (!(await f(...args))) { |
37 | } | 37 | return await original(...args); |
38 | }); | 38 | } |
39 | }); | ||
40 | } catch(_) { | ||
41 | vscode.window.showWarningMessage('Enhanced typing feature is disabled because of incompatibility with VIM extension'); | ||
42 | } | ||
39 | } | 43 | } |
40 | 44 | ||
41 | // Commands are requests from vscode to the language server | 45 | // Commands are requests from vscode to the language server |