Allow syntax tree to update when changing files

Previously when using the file based syntax tree, it would not update until a
change had been made in the new file. Now we automatically update the syntax
tree to match the current file.
This commit is contained in:
Ville Penttinen 2019-03-03 22:03:37 +02:00
parent 1b4e0ec1c8
commit 0db95fc812
2 changed files with 26 additions and 17 deletions

View file

@ -1,17 +1,25 @@
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'
) {
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()
};
@ -20,4 +28,5 @@ export async function handle(editor: TextEditor | undefined) {
params
);
Server.highlighter.setHighlights(editor, decorations);
};
}

View file

@ -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',