Add on-enter handler

Now, typing doc comments is much more pleasant
This commit is contained in:
Aleksey Kladov 2018-10-09 16:00:20 +03:00
parent 82447ecace
commit 2b956fd3a8
12 changed files with 630 additions and 401 deletions

View file

@ -15,6 +15,23 @@ export function activate(context: vscode.ExtensionContext) {
function registerCommand(name: string, f: any) {
disposeOnDeactivation(vscode.commands.registerCommand(name, f));
}
function overrideCommand(
name: string,
f: (...args: any[]) => Promise<boolean>,
) {
const defaultCmd = `default:${name}`;
const original = async (...args: any[]) => await vscode.commands.executeCommand(defaultCmd, ...args);
registerCommand(name, async (...args: any[]) => {
const editor = vscode.window.activeTextEditor;
if (!editor || !editor.document || editor.document.languageId !== 'rust') {
return await original(...args);
}
if (!await f(...args)) {
return await original(...args);
}
})
}
// Commands are requests from vscode to the language server
registerCommand('ra-lsp.syntaxTree', commands.syntaxTree.handle);
@ -27,11 +44,12 @@ export function activate(context: vscode.ExtensionContext) {
'ra-lsp.applySourceChange',
commands.applySourceChange.handle
);
overrideCommand('type', commands.on_enter.handle)
// Notifications are events triggered by the language server
const allNotifications: Iterable<
[string, lc.GenericNotificationHandler]
> = [['m/publishDecorations', notifications.publishDecorations.handle]];
> = [['m/publishDecorations', notifications.publishDecorations.handle]];
// The events below are plain old javascript events, triggered and handled by vscode
vscode.window.onDidChangeActiveTextEditor(