mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-25 12:33:33 +00:00
Add new configuration "enableEnhancedTyping" to control registering of "type" command
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.
This commit is contained in:
parent
736a55c97e
commit
77a4a311fe
3 changed files with 33 additions and 1 deletions
|
@ -150,6 +150,11 @@
|
|||
"default": true,
|
||||
"description": "Highlight Rust code (overrides built-in syntax highlighting)"
|
||||
},
|
||||
"rust-analyzer.enableEnhancedTyping": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"description": "Enables enhanced typing. NOTE: If using a VIM extension, you should set this to false"
|
||||
},
|
||||
"rust-analyzer.raLspServerPath": {
|
||||
"type": [
|
||||
"string"
|
||||
|
|
|
@ -6,8 +6,11 @@ const RA_LSP_DEBUG = process.env.__RA_LSP_SERVER_DEBUG;
|
|||
|
||||
export class Config {
|
||||
public highlightingOn = true;
|
||||
public enableEnhancedTyping = true;
|
||||
public raLspServerPath = RA_LSP_DEBUG || 'ra_lsp_server';
|
||||
|
||||
private prevEnhancedTyping: null | boolean = null;
|
||||
|
||||
constructor() {
|
||||
vscode.workspace.onDidChangeConfiguration(_ =>
|
||||
this.userConfigChanged()
|
||||
|
@ -25,6 +28,28 @@ export class Config {
|
|||
Server.highlighter.removeHighlights();
|
||||
}
|
||||
|
||||
if (config.has('enableEnhancedTyping')) {
|
||||
this.enableEnhancedTyping = config.get('enableEnhancedTyping') as boolean;
|
||||
|
||||
if (this.prevEnhancedTyping === null) {
|
||||
this.prevEnhancedTyping = this.enableEnhancedTyping;
|
||||
}
|
||||
} else if (this.prevEnhancedTyping === null) {
|
||||
this.prevEnhancedTyping = this.enableEnhancedTyping;
|
||||
}
|
||||
|
||||
if (this.prevEnhancedTyping !== this.enableEnhancedTyping) {
|
||||
const reloadAction = 'Reload now';
|
||||
vscode.window.showInformationMessage('Changing enhanced typing setting requires a reload', reloadAction)
|
||||
.then(selectedAction => {
|
||||
if (selectedAction === reloadAction) {
|
||||
vscode.commands.executeCommand('workbench.action.reloadWindow');
|
||||
}
|
||||
});
|
||||
this.prevEnhancedTyping = this.enableEnhancedTyping;
|
||||
}
|
||||
|
||||
|
||||
if (config.has('raLspServerPath')) {
|
||||
this.raLspServerPath =
|
||||
RA_LSP_DEBUG || (config.get('raLspServerPath') as string);
|
||||
|
|
|
@ -82,7 +82,9 @@ export function activate(context: vscode.ExtensionContext) {
|
|||
}
|
||||
);
|
||||
|
||||
overrideCommand('type', commands.onEnter.handle);
|
||||
if (Server.config.enableEnhancedTyping) {
|
||||
overrideCommand('type', commands.onEnter.handle);
|
||||
}
|
||||
|
||||
// Notifications are events triggered by the language server
|
||||
const allNotifications: Iterable<
|
||||
|
|
Loading…
Reference in a new issue