From f2e35ef4ceffc8567a4187f403f258685cf7e64e Mon Sep 17 00:00:00 2001 From: Peng Lyu Date: Mon, 19 Dec 2022 13:55:35 -0800 Subject: [PATCH] Re #131239. Add html link and auto link detection support. (#169577) --- extensions/notebook-renderers/src/ansi.ts | 14 +++++++++++++- .../browser/view/renderers/backLayerWebView.ts | 2 +- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/extensions/notebook-renderers/src/ansi.ts b/extensions/notebook-renderers/src/ansi.ts index 2a89d8d4b29..bd1c3658982 100644 --- a/extensions/notebook-renderers/src/ansi.ts +++ b/extensions/notebook-renderers/src/ansi.ts @@ -379,6 +379,11 @@ export function handleANSIOutput(text: string): HTMLSpanElement { } } +const ttPolicy = window.trustedTypes?.createPolicy('notebookRenderer', { + createHTML: value => value, + createScript: value => value, +}); + export function appendStylizedStringToContainer( root: HTMLElement, stringContent: string, @@ -392,7 +397,14 @@ export function appendStylizedStringToContainer( return; } - const container = linkify(stringContent, true, workspaceFolder); + let container = document.createElement('span'); + const trustedHtml = ttPolicy?.createHTML(stringContent) ?? stringContent; + container.innerHTML = trustedHtml as string; + + if (container.childElementCount === 0) { + // plain text + container = linkify(stringContent, true, workspaceFolder); + } container.className = cssClasses.join(' '); if (customTextColor) { diff --git a/src/vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView.ts b/src/vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView.ts index 336a3b45e57..19903b2a0da 100644 --- a/src/vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView.ts +++ b/src/vs/workbench/contrib/notebook/browser/view/renderers/backLayerWebView.ts @@ -922,7 +922,7 @@ var requirejs = (function() { if (lineMatch) { const parsedLineNumber = parseInt(lineMatch[1], 10); if (!isNaN(parsedLineNumber)) { - lineNumber = parsedLineNumber; + lineNumber = parsedLineNumber + 1; column = 1; uri = uri.with({ fragment: `L${lineNumber}` }); }