diff --git a/CHANGELOG.md b/CHANGELOG.md index 005ce091..8c6548f7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Change Log +## [2.4.1] - 2020-08-16 + +- Better editor highlighting functionality + ## [2.4.0] - 2020-08-16 - [#21](https://github.com/estruyf/vscode-front-matter/issues/21): Folding provider for Front Matter implemented diff --git a/src/extension.ts b/src/extension.ts index f9ca56ad..f8fa2bcb 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -125,6 +125,9 @@ export async function activate({ subscriptions, extensionUri }: vscode.Extension editDebounce = debounceCallback(); subscriptions.push(vscode.workspace.onDidChangeTextDocument(triggerFileChange)); + // Listener for setting changes + subscriptions.push(vscode.workspace.onDidChangeConfiguration(MarkdownFoldingProvider.triggerHighlighting)); + // Subscribe all commands subscriptions.push( insertTags, diff --git a/src/providers/MarkdownFoldingProvider.ts b/src/providers/MarkdownFoldingProvider.ts index 0cb625f5..eec5c24f 100644 --- a/src/providers/MarkdownFoldingProvider.ts +++ b/src/providers/MarkdownFoldingProvider.ts @@ -1,4 +1,4 @@ -import { workspace } from 'vscode'; +import { TextEditorDecorationType, workspace } from 'vscode'; import { CancellationToken, FoldingContext, FoldingRange, FoldingRangeKind, FoldingRangeProvider, Range, TextDocument, window, Position } from 'vscode'; import { CONFIG_KEY, SETTINGS_CONTENT_FRONTMATTER_HIGHLIGHT } from '../constants'; import { FrontMatterDecorationProvider } from './FrontMatterDecorationProvider'; @@ -7,6 +7,7 @@ export class MarkdownFoldingProvider implements FoldingRangeProvider { private static start: number | null = null; private static end: number | null = null; private static endLine: number | null = null; + private static decType: TextEditorDecorationType | null = null; public async provideFoldingRanges(document: TextDocument, context: FoldingContext, token: CancellationToken): Promise { const ranges: FoldingRange[] = []; @@ -48,9 +49,13 @@ export class MarkdownFoldingProvider implements FoldingRangeProvider { if (MarkdownFoldingProvider.start !== null && MarkdownFoldingProvider.end !== null && MarkdownFoldingProvider.endLine !== null) { const range = new Range(new Position(MarkdownFoldingProvider.start, 0), new Position(MarkdownFoldingProvider.end, MarkdownFoldingProvider.endLine)); + if (MarkdownFoldingProvider.decType !== null) { + MarkdownFoldingProvider.decType.dispose(); + } + if (fmHighlight) { - const decoration = new FrontMatterDecorationProvider().get(); - window.activeTextEditor?.setDecorations(decoration, [range]); + MarkdownFoldingProvider.decType = new FrontMatterDecorationProvider().get(); + window.activeTextEditor?.setDecorations(MarkdownFoldingProvider.decType, [range]); } } } diff --git a/src/webview/ExplorerView.ts b/src/webview/ExplorerView.ts index c96fa299..da669c1a 100644 --- a/src/webview/ExplorerView.ts +++ b/src/webview/ExplorerView.ts @@ -442,11 +442,6 @@ export class ExplorerView implements WebviewViewProvider, Disposable { const config = workspace.getConfiguration(CONFIG_KEY); await config.update(SETTINGS_CONTENT_FRONTMATTER_HIGHLIGHT, autoUpdate); this.getSettings(); - - if (ArticleHelper.isMarkdownFile()) { - // To unset the decorations, we need to reload the whole document/instance - commands.executeCommand(`workbench.action.reloadWindow`); - } } /**