From f7d017e7bdde06097ff9c850acd271d540c594ee Mon Sep 17 00:00:00 2001 From: alvaromartmart Date: Fri, 3 Apr 2020 18:07:52 +0200 Subject: [PATCH] register hover provider only once --- src/decorator.ts | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/decorator.ts b/src/decorator.ts index e4bc0b8..0968e39 100644 --- a/src/decorator.ts +++ b/src/decorator.ts @@ -54,6 +54,7 @@ async function setDecorations(editor: vscode.TextEditor) { editor.setDecorations(TOUR_DECORATOR, ranges); } +let hoverProviderDisposable: vscode.Disposable | undefined; function registerHoverProvider() { return vscode.languages.registerHoverProvider("*", { provideHover: async ( @@ -88,13 +89,12 @@ export async function registerDecorators() { ], () => { const activeEditor = vscode.window.activeTextEditor; - if (activeEditor) { - activeEditor.setDecorations(TOUR_DECORATOR, []); - disposables.forEach(disposable => disposable.dispose()); - disposables = []; - } + if (store.showMarkers) { - disposables.push(registerHoverProvider()); + if (hoverProviderDisposable === undefined) { + hoverProviderDisposable = registerHoverProvider(); + disposables.push(hoverProviderDisposable); + } disposables.push( vscode.window.onDidChangeActiveTextEditor(editor => { @@ -107,6 +107,11 @@ export async function registerDecorators() { if (activeEditor) { setDecorations(activeEditor); } + } else if (activeEditor) { + activeEditor.setDecorations(TOUR_DECORATOR, []); + disposables.forEach(disposable => disposable.dispose()); + hoverProviderDisposable = undefined; + disposables = []; } } );