diff options
author | Veetaha <[email protected]> | 2020-02-25 21:20:07 +0000 |
---|---|---|
committer | Veetaha <[email protected]> | 2020-02-25 21:20:07 +0000 |
commit | 655c8337c07cdc18a4d7a5a3c44a2c2145b1ec88 (patch) | |
tree | 30e4cfd3ac91cace5bcb336ab5882b032f917b0f | |
parent | d3040c0deba8266044029a6479a1c12c28e72750 (diff) |
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
-rw-r--r-- | editors/code/package.json | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/editors/code/package.json b/editors/code/package.json index dff535fcd..925e8bbe7 100644 --- a/editors/code/package.json +++ b/editors/code/package.json | |||
@@ -162,7 +162,7 @@ | |||
162 | { | 162 | { |
163 | "command": "rust-analyzer.onEnter", | 163 | "command": "rust-analyzer.onEnter", |
164 | "key": "enter", | 164 | "key": "enter", |
165 | "when": "editorTextFocus && !suggestWidgetVisible && editorLangId == rust" | 165 | "when": "editorTextFocus && !suggestWidgetVisible && editorLangId == rust && !vim.active || vim.mode == 'Insert' && editorTextFocus && !suggestWidgetVisible && editorLangId == rust" |
166 | } | 166 | } |
167 | ], | 167 | ], |
168 | "configuration": { | 168 | "configuration": { |