Re-render markdown preview when linkify setting changes (#200599)

This commit is contained in:
Matt Bierner 2024-01-11 17:23:13 -08:00 committed by GitHub
parent 58171d859b
commit d81d32b940
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 9 deletions

View File

@ -8,6 +8,7 @@ import type Token = require('markdown-it/lib/token');
import * as vscode from 'vscode';
import { ILogger } from './logging';
import { MarkdownContributionProvider } from './markdownExtensions';
import { MarkdownPreviewConfiguration } from './preview/previewConfig';
import { Slugifier } from './slugify';
import { ITextDocument } from './types/textDocument';
import { WebviewResourceProvider } from './util/resources';
@ -237,11 +238,11 @@ export class MarkdownItEngine implements IMdParser {
}
private _getConfig(resource?: vscode.Uri): MarkdownItConfig {
const config = vscode.workspace.getConfiguration('markdown', resource ?? null);
const config = MarkdownPreviewConfiguration.getForResource(resource ?? null);
return {
breaks: config.get<boolean>('preview.breaks', false),
linkify: config.get<boolean>('preview.linkify', true),
typographer: config.get<boolean>('preview.typographer', false)
breaks: config.previewLineBreaks,
linkify: config.previewLinkify,
typographer: config.previewTypographer,
};
}

View File

@ -7,13 +7,17 @@ import * as vscode from 'vscode';
import { equals } from '../util/arrays';
export class MarkdownPreviewConfiguration {
public static getForResource(resource: vscode.Uri) {
public static getForResource(resource: vscode.Uri | null) {
return new MarkdownPreviewConfiguration(resource);
}
public readonly scrollBeyondLastLine: boolean;
public readonly wordWrap: boolean;
public readonly lineBreaks: boolean;
public readonly previewLineBreaks: boolean;
public readonly previewLinkify: boolean;
public readonly previewTypographer: boolean;
public readonly doubleClickToSwitchToEditor: boolean;
public readonly scrollEditorWithPreview: boolean;
public readonly scrollPreviewWithEditor: boolean;
@ -24,7 +28,7 @@ export class MarkdownPreviewConfiguration {
public readonly fontFamily: string | undefined;
public readonly styles: readonly string[];
private constructor(resource: vscode.Uri) {
private constructor(resource: vscode.Uri | null) {
const editorConfig = vscode.workspace.getConfiguration('editor', resource);
const markdownConfig = vscode.workspace.getConfiguration('markdown', resource);
const markdownEditorConfig = vscode.workspace.getConfiguration('[markdown]', resource);
@ -38,7 +42,11 @@ export class MarkdownPreviewConfiguration {
this.scrollPreviewWithEditor = !!markdownConfig.get<boolean>('preview.scrollPreviewWithEditor', true);
this.scrollEditorWithPreview = !!markdownConfig.get<boolean>('preview.scrollEditorWithPreview', true);
this.lineBreaks = !!markdownConfig.get<boolean>('preview.breaks', false);
this.previewLineBreaks = !!markdownConfig.get<boolean>('preview.breaks', false);
this.previewLinkify = !!markdownConfig.get<boolean>('preview.linkify', true);
this.previewTypographer = !!markdownConfig.get<boolean>('preview.typographer', false);
this.doubleClickToSwitchToEditor = !!markdownConfig.get<boolean>('preview.doubleClickToSwitchToEditor', true);
this.markEditorSelection = !!markdownConfig.get<boolean>('preview.markEditorSelection', true);
@ -61,7 +69,7 @@ export class MarkdownPreviewConfiguration {
return equals(this.styles, otherConfig.styles);
}
[key: string]: any;
readonly [key: string]: any;
}
export class MarkdownPreviewConfigurationManager {