Skip to content

Commit

Permalink
debug: do not massage whitespace anymore
Browse files Browse the repository at this point in the history
fixes #73845
  • Loading branch information
isidorn committed Feb 5, 2020
1 parent d0d1df6 commit f647e12
Show file tree
Hide file tree
Showing 5 changed files with 9 additions and 28 deletions.
18 changes: 5 additions & 13 deletions src/vs/workbench/contrib/debug/browser/baseDebugView.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ const stringRegex = /^(['"]).*\1$/;
const $ = dom.$;

export interface IRenderValueOptions {
preserveWhitespace?: boolean;
showChanged?: boolean;
maxValueLength?: number;
showHover?: boolean;
Expand All @@ -49,11 +48,6 @@ export function renderViewTree(container: HTMLElement): HTMLElement {
return treeContainer;
}

export function replaceWhitespace(value: string): string {
const map: { [x: string]: string } = { '\n': '\\n', '\r': '\\r', '\t': '\\t' };
return value.replace(/[\n\r\t]/g, char => map[char]);
}

export function renderExpressionValue(expressionOrValue: IExpressionContainer | string, container: HTMLElement, options: IRenderValueOptions): void {
let value = typeof expressionOrValue === 'string' ? expressionOrValue : expressionOrValue.value;

Expand Down Expand Up @@ -86,11 +80,10 @@ export function renderExpressionValue(expressionOrValue: IExpressionContainer |
if (options.maxValueLength && value && value.length > options.maxValueLength) {
value = value.substr(0, options.maxValueLength) + '...';
}
if (value && !options.preserveWhitespace) {
value = replaceWhitespace(value);
} else {
value = value || '';
if (!value) {
value = '';
}

if (options.linkDetector) {
container.textContent = '';
const session = (expressionOrValue instanceof ExpressionContainer) ? expressionOrValue.getSession() : undefined;
Expand All @@ -105,7 +98,7 @@ export function renderExpressionValue(expressionOrValue: IExpressionContainer |

export function renderVariable(variable: Variable, data: IVariableTemplateData, showChanged: boolean, highlights: IHighlight[], linkDetector?: LinkDetector): void {
if (variable.available) {
let text = replaceWhitespace(variable.name);
let text = variable.name;
if (variable.value && typeof variable.name === 'string') {
text += ':';
}
Expand All @@ -118,7 +111,6 @@ export function renderVariable(variable: Variable, data: IVariableTemplateData,
renderExpressionValue(variable, data.value, {
showChanged,
maxValueLength: MAX_VALUE_RENDER_LENGTH_IN_VIEWLET,
preserveWhitespace: false,
showHover: true,
colorize: true,
linkDetector
Expand Down Expand Up @@ -185,7 +177,7 @@ export abstract class AbstractExpressionsRenderer implements ITreeRenderer<IExpr
const inputBox = new InputBox(inputBoxContainer, this.contextViewService, options);
const styler = attachInputBoxStyler(inputBox, this.themeService);

inputBox.value = replaceWhitespace(options.initialValue);
inputBox.value = options.initialValue;
inputBox.focus();
inputBox.select();

Expand Down
5 changes: 2 additions & 3 deletions src/vs/workbench/contrib/debug/browser/debugHover.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import { IContentWidget, ICodeEditor, IContentWidgetPosition, ContentWidgetPosit
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
import { IDebugService, IExpression, IExpressionContainer, IStackFrame } from 'vs/workbench/contrib/debug/common/debug';
import { Expression } from 'vs/workbench/contrib/debug/common/debugModel';
import { renderExpressionValue, replaceWhitespace } from 'vs/workbench/contrib/debug/browser/baseDebugView';
import { renderExpressionValue } from 'vs/workbench/contrib/debug/browser/baseDebugView';
import { DomScrollableElement } from 'vs/base/browser/ui/scrollbar/scrollableElement';
import { attachStylerCallback } from 'vs/platform/theme/common/styler';
import { IThemeService } from 'vs/platform/theme/common/themeService';
Expand Down Expand Up @@ -230,7 +230,6 @@ export class DebugHoverWidget implements IContentWidget {
this.valueContainer.hidden = false;
renderExpressionValue(expression, this.valueContainer, {
showChanged: false,
preserveWhitespace: true,
colorize: true
});
this.valueContainer.title = '';
Expand All @@ -248,7 +247,7 @@ export class DebugHoverWidget implements IContentWidget {
this.complexValueContainer.hidden = false;

await this.tree.setInput(expression);
this.complexValueTitle.textContent = replaceWhitespace(expression.value);
this.complexValueTitle.textContent = expression.value;
this.complexValueTitle.title = expression.value;
this.layoutTreeAndContainer();
this.editor.layoutContentWidget(this);
Expand Down
2 changes: 0 additions & 2 deletions src/vs/workbench/contrib/debug/browser/replViewer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,6 @@ export class ReplEvaluationResultsRenderer implements ITreeRenderer<ReplEvaluati
renderElement(element: ITreeNode<ReplEvaluationResult, FuzzyScore>, index: number, templateData: IReplEvaluationResultTemplateData): void {
const expression = element.element;
renderExpressionValue(expression, templateData.value, {
preserveWhitespace: !expression.hasChildren,
showHover: false,
colorize: true,
linkDetector: this.linkDetector
Expand Down Expand Up @@ -230,7 +229,6 @@ export class ReplRawObjectsRenderer implements ITreeRenderer<RawObjectReplElemen

// value
renderExpressionValue(element.value, templateData.value, {
preserveWhitespace: true,
showHover: false,
linkDetector: this.linkDetector
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -267,7 +267,6 @@ export class WatchExpressionsRenderer extends AbstractExpressionsRenderer {
renderExpressionValue(expression, data.value, {
showChanged: true,
maxValueLength: MAX_VALUE_RENDER_LENGTH_IN_VIEWLET,
preserveWhitespace: false,
showHover: true,
colorize: true
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
*--------------------------------------------------------------------------------------------*/

import * as assert from 'assert';
import { replaceWhitespace, renderExpressionValue, renderVariable, renderViewTree } from 'vs/workbench/contrib/debug/browser/baseDebugView';
import { renderExpressionValue, renderVariable, renderViewTree } from 'vs/workbench/contrib/debug/browser/baseDebugView';
import * as dom from 'vs/base/browser/dom';
import { Expression, Variable, Scope, StackFrame, Thread, DebugModel } from 'vs/workbench/contrib/debug/common/debugModel';
import { MockSession } from 'vs/workbench/contrib/debug/test/common/mockDebug';
Expand All @@ -29,13 +29,6 @@ suite('Debug - Base Debug View', () => {
linkDetector = instantiationService.createInstance(LinkDetector);
});

test('replace whitespace', () => {
assert.equal(replaceWhitespace('hey there'), 'hey there');
assert.equal(replaceWhitespace('hey there\n'), 'hey there\\n');
assert.equal(replaceWhitespace('hey \r there\n\t'), 'hey \\r there\\n\\t');
assert.equal(replaceWhitespace('hey \r\t\n\t\t\n there'), 'hey \\r\\t\\n\\t\\t\\n there');
});

test('render view tree', () => {
const container = $('.container');
const treeContainer = renderViewTree(container);
Expand All @@ -48,7 +41,7 @@ suite('Debug - Base Debug View', () => {

test('render expression value', () => {
let container = $('.container');
renderExpressionValue('render \n me', container, { showHover: true, preserveWhitespace: true });
renderExpressionValue('render \n me', container, { showHover: true });
assert.equal(container.className, 'value');
assert.equal(container.title, 'render \n me');
assert.equal(container.textContent, 'render \n me');
Expand Down

0 comments on commit f647e12

Please sign in to comment.