diff --git a/src/vs/workbench/parts/debug/browser/debugANSIHandling.ts b/src/vs/workbench/parts/debug/browser/debugANSIHandling.ts new file mode 100644 index 0000000000000000000000000000000000000000..1c0345057cd2eb6d4f09d5c54aabe7065d343b33 --- /dev/null +++ b/src/vs/workbench/parts/debug/browser/debugANSIHandling.ts @@ -0,0 +1,31 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { LinkDetector } from 'vs/workbench/parts/debug/browser/linkDetector'; + +/** + * @param root The {@link HTMLElement} to append the content to. + * @param stringContent The text content to be appended. + * @param cssClasses The list of CSS styles to apply to the text content. + * @param linkDetector The {@link LinkDetector} responsible for generating links from {@param stringContent}. + */ +export function appendStylizedStringToContainer(root: HTMLElement, stringContent: string, cssClasses: string[], linkDetector: LinkDetector): void { + if (!root || !stringContent) { + return; + } + + const content = linkDetector.handleLinks(stringContent); + let container: HTMLElement; + + if (typeof content === 'string') { + container = document.createElement('span'); + container.textContent = content; + } else { + container = content; + } + + container.className = cssClasses.join(' '); + root.appendChild(container); +} \ No newline at end of file diff --git a/src/vs/workbench/parts/debug/electron-browser/replViewer.ts b/src/vs/workbench/parts/debug/electron-browser/replViewer.ts index 247d37167cfec419b686b2479b776d37ce866cb6..8d29ddcf65f971e1c1798aa2aee83e15f41c2f0c 100644 --- a/src/vs/workbench/parts/debug/electron-browser/replViewer.ts +++ b/src/vs/workbench/parts/debug/electron-browser/replViewer.ts @@ -23,6 +23,7 @@ import { CopyAction, CopyAllAction } from 'vs/workbench/parts/debug/electron-bro import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService'; import { LinkDetector } from 'vs/workbench/parts/debug/browser/linkDetector'; +import { appendStylizedStringToContainer } from 'vs/workbench/parts/debug/browser/debugANSIHandling'; const $ = dom.$; @@ -327,7 +328,8 @@ export class ReplExpressionsRenderer implements IRenderer { if (sequenceFound) { // Flush buffer with previous styles. - this.appendStylizedStringToContainer(root, buffer, styleNames); + appendStylizedStringToContainer(root, buffer, styleNames, this.linkDetector); + buffer = ''; /* @@ -380,37 +382,13 @@ export class ReplExpressionsRenderer implements IRenderer { // Flush remaining text buffer if not empty. if (buffer) { - this.appendStylizedStringToContainer(root, buffer, styleNames); + appendStylizedStringToContainer(root, buffer, styleNames, this.linkDetector); } return root; } - /** - * @param root The {@link HTMLElement} to append the content to. - * @param stringContent The text content to be appended. - * @param cssClasses The list of CSS styles to apply to the text content. - */ - private appendStylizedStringToContainer(root: HTMLElement, stringContent: string, cssClasses: string[]): void { - if (!root || !stringContent) { - return; - } - - const content = this.linkDetector.handleLinks(stringContent); - let container: HTMLElement; - - if (typeof content === 'string') { - container = document.createElement('span'); - container.textContent = content; - } else { - container = content; - } - - container.className = cssClasses.join(' '); - root.appendChild(container); - } - public disposeTemplate(tree: ITree, templateId: string, templateData: any): void { if (templateData.toDispose) { lifecycle.dispose(templateData.toDispose);