this.pushCleanup(d);
}
+ overrideCommand(name: string, factory: (ctx: Ctx) => Cmd) {
+ const defaultCmd = `default:${name}`;
+ const override = factory(this);
+ const original = (...args: any[]) =>
+ vscode.commands.executeCommand(defaultCmd, ...args);
+ try {
+ const d = vscode.commands.registerCommand(
+ name,
+ async (...args: any[]) => {
+ if (!(await override(...args))) {
+ return await original(...args);
+ }
+ },
+ );
+ this.pushCleanup(d);
+ } catch (_) {
+ vscode.window.showWarningMessage(
+ 'Enhanced typing feature is disabled because of incompatibility with VIM extension, consider turning off rust-analyzer.enableEnhancedTyping: https://github.com/rust-analyzer/rust-analyzer/blob/master/docs/user/README.md#settings',
+ );
+ }
+ }
+
pushCleanup(d: { dispose(): any }) {
this.extCtx.subscriptions.push(d);
}