]> git.lizzy.rs Git - rust.git/blob - editors/code/src/commands/on_enter.ts
Merge #106
[rust.git] / editors / code / src / commands / on_enter.ts
1 import * as vscode from 'vscode';
2 import * as lc from 'vscode-languageclient';
3 import { Server } from '../server';
4 import { handle as applySourceChange, SourceChange } from './apply_source_change';
5
6 interface OnEnterParams {
7     textDocument: lc.TextDocumentIdentifier;
8     position: lc.Position;
9 }
10
11 export async function handle(event: { text: string }): Promise<boolean> {
12     const editor = vscode.window.activeTextEditor;
13     if (editor == null || editor.document.languageId !== 'rust' || event.text !== '\n') {
14         return false;
15     }
16     const request: OnEnterParams = {
17         textDocument: { uri: editor.document.uri.toString() },
18         position: Server.client.code2ProtocolConverter.asPosition(editor.selection.active),
19     };
20     const change = await Server.client.sendRequest<undefined | SourceChange>(
21         'm/onEnter',
22         request
23     );
24     if (!change) {
25         return false;
26     }
27     await applySourceChange(change);
28     return true
29 }