diff options
Diffstat (limited to 'editors/code/src/commands/on_enter.ts')
-rw-r--r-- | editors/code/src/commands/on_enter.ts | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/editors/code/src/commands/on_enter.ts b/editors/code/src/commands/on_enter.ts new file mode 100644 index 000000000..2666797fe --- /dev/null +++ b/editors/code/src/commands/on_enter.ts | |||
@@ -0,0 +1,29 @@ | |||
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 | } | ||