aboutsummaryrefslogtreecommitdiff
path: root/editors/code
diff options
context:
space:
mode:
authorbors[bot] <bors[bot]@users.noreply.github.com>2019-02-07 12:42:53 +0000
committerbors[bot] <bors[bot]@users.noreply.github.com>2019-02-07 12:42:53 +0000
commitd0fd05142f45fb69a9dc64bfd55d2453b1927b9c (patch)
treec16c666f8b6176e9a055464f8b19022458853408 /editors/code
parenta69ee774ca39f1300bd9dd7eb34b632db9098e26 (diff)
parenta4d0aebcb89367d23600d0f14ba2c7f1cd0bbb44 (diff)
Merge #755
755: Add new configuration "enableEnhancedTyping" to control registering of "type" command r=matklad a=vipentti This further fixes problems when having a VIM extension (at least vscodevim) enabled, by not calling `overrideCommand('type', commands.onEnter.handle)` when enableEnhancedTyping is set to `false`. The problem is dependent on the order in which extensions are activated, if rust-analyzer is activated before `vscodevim`, rust-analyzer will register the `type` command, and when `vscodevim` finally attempts to activate, it will fail to register the command. This causes `vscodevim` to stop working properly. This setting allows users to disable the registerCommand `type` in rust-analyzer, allowing `vscodevim` to work. The setting defaults to `true`. Currently changing the setting requires reloading of the window. Co-authored-by: Ville Penttinen <[email protected]>
Diffstat (limited to 'editors/code')
-rw-r--r--editors/code/package.json5
-rw-r--r--editors/code/src/config.ts32
-rw-r--r--editors/code/src/extension.ts4
3 files changed, 40 insertions, 1 deletions
diff --git a/editors/code/package.json b/editors/code/package.json
index 1ed834d62..20b04c66f 100644
--- a/editors/code/package.json
+++ b/editors/code/package.json
@@ -150,6 +150,11 @@
150 "default": true, 150 "default": true,
151 "description": "Highlight Rust code (overrides built-in syntax highlighting)" 151 "description": "Highlight Rust code (overrides built-in syntax highlighting)"
152 }, 152 },
153 "rust-analyzer.enableEnhancedTyping": {
154 "type": "boolean",
155 "default": true,
156 "description": "Enables enhanced typing. NOTE: If using a VIM extension, you should set this to false"
157 },
153 "rust-analyzer.raLspServerPath": { 158 "rust-analyzer.raLspServerPath": {
154 "type": [ 159 "type": [
155 "string" 160 "string"
diff --git a/editors/code/src/config.ts b/editors/code/src/config.ts
index d26f5df0a..4e353798c 100644
--- a/editors/code/src/config.ts
+++ b/editors/code/src/config.ts
@@ -6,8 +6,11 @@ const RA_LSP_DEBUG = process.env.__RA_LSP_SERVER_DEBUG;
6 6
7export class Config { 7export class Config {
8 public highlightingOn = true; 8 public highlightingOn = true;
9 public enableEnhancedTyping = true;
9 public raLspServerPath = RA_LSP_DEBUG || 'ra_lsp_server'; 10 public raLspServerPath = RA_LSP_DEBUG || 'ra_lsp_server';
10 11
12 private prevEnhancedTyping: null | boolean = null;
13
11 constructor() { 14 constructor() {
12 vscode.workspace.onDidChangeConfiguration(_ => 15 vscode.workspace.onDidChangeConfiguration(_ =>
13 this.userConfigChanged() 16 this.userConfigChanged()
@@ -25,6 +28,35 @@ export class Config {
25 Server.highlighter.removeHighlights(); 28 Server.highlighter.removeHighlights();
26 } 29 }
27 30
31 if (config.has('enableEnhancedTyping')) {
32 this.enableEnhancedTyping = config.get(
33 'enableEnhancedTyping'
34 ) as boolean;
35
36 if (this.prevEnhancedTyping === null) {
37 this.prevEnhancedTyping = this.enableEnhancedTyping;
38 }
39 } else if (this.prevEnhancedTyping === null) {
40 this.prevEnhancedTyping = this.enableEnhancedTyping;
41 }
42
43 if (this.prevEnhancedTyping !== this.enableEnhancedTyping) {
44 const reloadAction = 'Reload now';
45 vscode.window
46 .showInformationMessage(
47 'Changing enhanced typing setting requires a reload',
48 reloadAction
49 )
50 .then(selectedAction => {
51 if (selectedAction === reloadAction) {
52 vscode.commands.executeCommand(
53 'workbench.action.reloadWindow'
54 );
55 }
56 });
57 this.prevEnhancedTyping = this.enableEnhancedTyping;
58 }
59
28 if (config.has('raLspServerPath')) { 60 if (config.has('raLspServerPath')) {
29 this.raLspServerPath = 61 this.raLspServerPath =
30 RA_LSP_DEBUG || (config.get('raLspServerPath') as string); 62 RA_LSP_DEBUG || (config.get('raLspServerPath') as string);
diff --git a/editors/code/src/extension.ts b/editors/code/src/extension.ts
index a0be70202..8b332eeb2 100644
--- a/editors/code/src/extension.ts
+++ b/editors/code/src/extension.ts
@@ -82,7 +82,9 @@ export function activate(context: vscode.ExtensionContext) {
82 } 82 }
83 ); 83 );
84 84
85 overrideCommand('type', commands.onEnter.handle); 85 if (Server.config.enableEnhancedTyping) {
86 overrideCommand('type', commands.onEnter.handle);
87 }
86 88
87 // Notifications are events triggered by the language server 89 // Notifications are events triggered by the language server
88 const allNotifications: Iterable< 90 const allNotifications: Iterable<