"default": {},
"description": "Fine grained feature flags to disable annoying features"
},
- "rust-analyzer.enableEnhancedTyping": {
- "type": "boolean",
- "default": false,
- "description": "Enables enhanced typing. NOTE: If using a VIM extension, you should set this to false"
- },
"rust-analyzer.raLspServerPath": {
"type": [
"string"
return true;
}
-export function onEnterOverride(ctx: Ctx): Cmd {
- return async (event: { text: string }) => {
- if (event.text === '\n') {
- handleKeypress(ctx);
- }
- };
-}
-
export function onEnter(ctx: Ctx): Cmd {
return async () => {
- if (handleKeypress(ctx)) return;
+ if (await handleKeypress(ctx)) return;
await vscode.commands.executeCommand('default:type', { text: '\n' });
};
this.pushCleanup(d);
}
- overrideCommand(name: string, factory: (ctx: Ctx) => Cmd) {
- const defaultCmd = `default:${name}`;
- const override = factory(this);
- const original = (...args: unknown[]) =>
- vscode.commands.executeCommand(defaultCmd, ...args);
- try {
- const d = vscode.commands.registerCommand(
- name,
- async (...args: unknown[]) => {
- 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',
- );
- }
- }
-
get subscriptions(): Disposable[] {
return this.extCtx.subscriptions;
}
ctx.registerCommand('applySourceChange', commands.applySourceChange);
ctx.registerCommand('selectAndApplySourceChange', commands.selectAndApplySourceChange);
- if (ctx.config.enableEnhancedTyping) {
- ctx.overrideCommand('type', commands.onEnterOverride);
- }
activateStatusDisplay(ctx);
activateHighlighting(ctx);