about summary refs log tree commit diff
path: root/editors
diff options
context:
space:
mode:
Diffstat (limited to 'editors')
-rw-r--r--editors/code/src/events/change_active_text_editor.ts39
-rw-r--r--editors/code/src/extension.ts4
2 files changed, 26 insertions, 17 deletions
diff --git a/editors/code/src/events/change_active_text_editor.ts b/editors/code/src/events/change_active_text_editor.ts
index af295b2ecba..64be562250e 100644
--- a/editors/code/src/events/change_active_text_editor.ts
+++ b/editors/code/src/events/change_active_text_editor.ts
@@ -1,23 +1,32 @@
 import { TextEditor } from 'vscode';
 import { TextDocumentIdentifier } from 'vscode-languageclient';
 
+import {
+    SyntaxTreeContentProvider,
+    syntaxTreeUri
+} from '../commands/syntaxTree';
 import { Decoration } from '../highlighting';
 import { Server } from '../server';
 
-export async function handle(editor: TextEditor | undefined) {
-    if (
-        !Server.config.highlightingOn ||
-        !editor ||
-        editor.document.languageId !== 'rust'
-    ) {
-        return;
-    }
-    const params: TextDocumentIdentifier = {
-        uri: editor.document.uri.toString()
+export function makeHandler(syntaxTreeProvider: SyntaxTreeContentProvider) {
+    return async function handle(editor: TextEditor | undefined) {
+        if (!editor || editor.document.languageId !== 'rust') {
+            return;
+        }
+
+        syntaxTreeProvider.eventEmitter.fire(syntaxTreeUri);
+
+        if (!Server.config.highlightingOn) {
+            return;
+        }
+
+        const params: TextDocumentIdentifier = {
+            uri: editor.document.uri.toString()
+        };
+        const decorations = await Server.client.sendRequest<Decoration[]>(
+            'rust-analyzer/decorationsRequest',
+            params
+        );
+        Server.highlighter.setHighlights(editor, decorations);
     };
-    const decorations = await Server.client.sendRequest<Decoration[]>(
-        'rust-analyzer/decorationsRequest',
-        params
-    );
-    Server.highlighter.setHighlights(editor, decorations);
 }
diff --git a/editors/code/src/extension.ts b/editors/code/src/extension.ts
index 894334c55f7..941beba1807 100644
--- a/editors/code/src/extension.ts
+++ b/editors/code/src/extension.ts
@@ -94,13 +94,13 @@ export function activate(context: vscode.ExtensionContext) {
             notifications.publishDecorations.handle
         ]
     ];
+    const syntaxTreeContentProvider = new SyntaxTreeContentProvider();
 
     // The events below are plain old javascript events, triggered and handled by vscode
     vscode.window.onDidChangeActiveTextEditor(
-        events.changeActiveTextEditor.handle
+        events.changeActiveTextEditor.makeHandler(syntaxTreeContentProvider)
     );
 
-    const syntaxTreeContentProvider = new SyntaxTreeContentProvider();
     disposeOnDeactivation(
         vscode.workspace.registerTextDocumentContentProvider(
             'rust-analyzer',