From c7cef5a5cb2e27c6bd04b2943f227481f6a088b7 Mon Sep 17 00:00:00 2001 From: Yuki Hattori Date: Wed, 3 Apr 2019 09:56:50 +0900 Subject: [PATCH 1/2] Refresh markdown preview on updating configuration --- src/__mocks__/vscode.ts | 1 + src/extension.test.ts | 14 ++++++++++++-- src/extension.ts | 15 +++++++++++++-- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/__mocks__/vscode.ts b/src/__mocks__/vscode.ts index 9f433711..1b528d3e 100644 --- a/src/__mocks__/vscode.ts +++ b/src/__mocks__/vscode.ts @@ -1,3 +1,4 @@ export const workspace = { getConfiguration: jest.fn(() => new Map()), + onDidChangeConfiguration: jest.fn(), } diff --git a/src/extension.test.ts b/src/extension.test.ts index 548f90f7..4301a36f 100644 --- a/src/extension.test.ts +++ b/src/extension.test.ts @@ -32,8 +32,18 @@ beforeEach(() => mockWorkspaceConfig()) afterEach(() => jest.restoreAllMocks()) describe('#activate', () => { - it('contains #extendMarkdownIt', () => - expect(activate()).toEqual(expect.objectContaining({ extendMarkdownIt }))) + const extContext: any = { subscriptions: { push: jest.fn() } } + + it('contains #extendMarkdownIt', () => { + expect(activate(extContext)).toEqual( + expect.objectContaining({ extendMarkdownIt }) + ) + }) + + it('starts tracking to change of configurations', () => { + const onDidChgConf = workspace.onDidChangeConfiguration as jest.Mock + expect(onDidChgConf).toBeCalledWith(expect.any(Function)) + }) }) describe('#extendMarkdownIt', () => { diff --git a/src/extension.ts b/src/extension.ts index f2a6e5fe..8bf07d13 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -1,10 +1,11 @@ import { Marp } from '@marp-team/marp-core' -import { workspace } from 'vscode' +import { ExtensionContext, commands, workspace } from 'vscode' const frontMatterRegex = /^-{3,}\s*([^]*?)^\s*-{3}/m const marpDirectiveRegex = /^marp\s*:\s*true\s*$/m const marpConfiguration = () => workspace.getConfiguration('markdown.marp') const marpVscode = Symbol('marp-vscode') +const shouldRefreshConfs = ['markdown.marp.enableHtml', 'window.zoomLevel'] const detectMarpFromFrontMatter = (markdown: string): boolean => { const m = markdown.match(frontMatterRegex) @@ -50,4 +51,14 @@ export function extendMarkdownIt(md: any) { return md } -export const activate = () => ({ extendMarkdownIt }) +export const activate = ({ subscriptions }: ExtensionContext) => { + subscriptions.push( + workspace.onDidChangeConfiguration(e => { + if (shouldRefreshConfs.some(c => e.affectsConfiguration(c))) { + commands.executeCommand('markdown.preview.refresh') + } + }) + ) + + return { extendMarkdownIt } +} From 54bea44883064288a2f1aedec282c7a547bf8a38 Mon Sep 17 00:00:00 2001 From: Yuki Hattori Date: Wed, 3 Apr 2019 14:02:11 +0900 Subject: [PATCH 2/2] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 34a55c3f..431f8214 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ ### Fixed +- Refresh Markdown preview on updating configuration (for VSCode >= 1.34) ([#20](https://github.com/marp-team/marp-vscode/pull/20)) - Use Marp Core options when rendering by Marp ([#21](https://github.com/marp-team/marp-vscode/pull/21)) ## v0.1.0 - 2019-03-22