aboutsummaryrefslogtreecommitdiff
path: root/editors/code/src/events
diff options
context:
space:
mode:
Diffstat (limited to 'editors/code/src/events')
-rw-r--r--editors/code/src/events/change_active_text_editor.ts14
-rw-r--r--editors/code/src/events/change_text_document.ts19
-rw-r--r--editors/code/src/events/index.ts7
3 files changed, 40 insertions, 0 deletions
diff --git a/editors/code/src/events/change_active_text_editor.ts b/editors/code/src/events/change_active_text_editor.ts
new file mode 100644
index 000000000..3440aa0c3
--- /dev/null
+++ b/editors/code/src/events/change_active_text_editor.ts
@@ -0,0 +1,14 @@
1import { TextEditor } from 'vscode';
2import { TextDocumentIdentifier } from 'vscode-languageclient';
3
4import { Decoration } from '../highlighting';
5import { Server } from '../server';
6
7export async function handle(editor: TextEditor | undefined) {
8 if (!Server.config.highlightingOn || !editor || editor.document.languageId !== 'rust') { return; }
9 const params: TextDocumentIdentifier = {
10 uri: editor.document.uri.toString(),
11 };
12 const decorations = await Server.client.sendRequest<Decoration[]>('m/decorationsRequest', params);
13 Server.highlighter.setHighlights(editor, decorations);
14}
diff --git a/editors/code/src/events/change_text_document.ts b/editors/code/src/events/change_text_document.ts
new file mode 100644
index 000000000..b3000e026
--- /dev/null
+++ b/editors/code/src/events/change_text_document.ts
@@ -0,0 +1,19 @@
1import * as vscode from 'vscode';
2
3import { syntaxTreeUri, TextDocumentContentProvider } from '../commands/syntaxTree';
4
5export function createHandler(textDocumentContentProvider: TextDocumentContentProvider) {
6 return (event: vscode.TextDocumentChangeEvent) => {
7 const doc = event.document;
8 if (doc.languageId !== 'rust') { return; }
9 afterLs(() => {
10 textDocumentContentProvider.eventEmitter.fire(syntaxTreeUri);
11 });
12 };
13}
14
15// We need to order this after LS updates, but there's no API for that.
16// Hence, good old setTimeout.
17function afterLs(f: () => any) {
18 setTimeout(f, 10);
19}
diff --git a/editors/code/src/events/index.ts b/editors/code/src/events/index.ts
new file mode 100644
index 000000000..b570a7a92
--- /dev/null
+++ b/editors/code/src/events/index.ts
@@ -0,0 +1,7 @@
1import * as changeActiveTextEditor from './change_active_text_editor';
2import * as changeTextDocument from './change_text_document';
3
4export {
5 changeActiveTextEditor,
6 changeTextDocument,
7};