From df16c16211cb25c1d625aa3a78e1a77ea3a36724 Mon Sep 17 00:00:00 2001 From: Meghan Kulkarni Date: Thu, 27 Jul 2023 09:09:38 -0700 Subject: [PATCH] Smart markdown pasting does not occur in tilde code block (#189004) smart paste checks ~~~ code block --- .../src/languageFeatures/copyFiles/shared.ts | 3 ++- .../src/test/markdownLink.test.ts | 9 ++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/extensions/markdown-language-features/src/languageFeatures/copyFiles/shared.ts b/extensions/markdown-language-features/src/languageFeatures/copyFiles/shared.ts index 1a0d4f01ae7..7562d0e8de5 100644 --- a/extensions/markdown-language-features/src/languageFeatures/copyFiles/shared.ts +++ b/extensions/markdown-language-features/src/languageFeatures/copyFiles/shared.ts @@ -66,7 +66,8 @@ const smartPasteRegexes = [ { regex: /\[.*\]\(.*\)/g, isMarkdownLink: true, isInline: true }, // Is a Markdown Link { regex: /!\[.*\]\(.*\)/g, isMarkdownLink: true, isInline: true }, // Is a Markdown Image Link { regex: /\[([^\]]*)\]\(([^)]*)\)/g, isMarkdownLink: false, isInline: true }, // In a Markdown link - { regex: /^```[\s\S]*?```$/gm, isMarkdownLink: false, isInline: false }, // In a fenced code block + { regex: /^```[\s\S]*?```$/gm, isMarkdownLink: false, isInline: false }, // In a backtick fenced code block + { regex: /^~~~[\s\S]*?~~~$/gm, isMarkdownLink: false, isInline: false }, // In a tildefenced code block { regex: /^\$\$[\s\S]*?\$\$$/gm, isMarkdownLink: false, isInline: false }, // In a fenced math block { regex: /`[^`]*`/g, isMarkdownLink: false, isInline: true }, // In inline code { regex: /\$[^$]*\$/g, isMarkdownLink: false, isInline: true }, // In inline math diff --git a/extensions/markdown-language-features/src/test/markdownLink.test.ts b/extensions/markdown-language-features/src/test/markdownLink.test.ts index 8568f21d87b..6b5f78790f3 100644 --- a/extensions/markdown-language-features/src/test/markdownLink.test.ts +++ b/extensions/markdown-language-features/src/test/markdownLink.test.ts @@ -141,13 +141,20 @@ suite('createEditAddingLinksForUriList', () => { assert.strictEqual(smartPaste.pasteAsMarkdownLink, true); }); - test('Should evaluate pasteAsMarkdownLink as false for pasting within a code block', () => { + test('Should evaluate pasteAsMarkdownLink as false for pasting within a backtick code block', () => { skinnyDocument.getText = function () { return '```\r\n\r\n```'; }; const range = new vscode.Range(0, 5, 0, 5); const smartPaste = checkSmartPaste(skinnyDocument, range); assert.strictEqual(smartPaste.pasteAsMarkdownLink, false); }); + test('Should evaluate pasteAsMarkdownLink as false for pasting within a tilde code block', () => { + skinnyDocument.getText = function () { return '~~~\r\n\r\n~~~'; }; + const range = new vscode.Range(0, 5, 0, 5); + const smartPaste = checkSmartPaste(skinnyDocument, range); + assert.strictEqual(smartPaste.pasteAsMarkdownLink, false); + }); + test('Should evaluate pasteAsMarkdownLink as false for pasting within a math block', () => { skinnyDocument.getText = function () { return '$$$\r\n\r\n$$$'; }; const range = new vscode.Range(0, 5, 0, 5);