Skip to content

Commit 27cc191

Browse files
committed
debug: go back to old treatment of new lines
1 parent 6df46e2 commit 27cc191

2 files changed

Lines changed: 16 additions & 22 deletions

File tree

src/vs/workbench/parts/debug/common/debugModel.ts

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import { generateUuid } from 'vs/base/common/uuid';
1212
import { clone } from 'vs/base/common/objects';
1313
import severity from 'vs/base/common/severity';
1414
import { isObject, isString } from 'vs/base/common/types';
15-
import * as strings from 'vs/base/common/strings';
1615
import { distinct } from 'vs/base/common/arrays';
1716
import { IRange } from 'vs/editor/common/editorCommon';
1817
import { Range } from 'vs/editor/common/core/range';
@@ -812,26 +811,31 @@ export class Model implements debug.IModel {
812811

813812
public addReplExpression(process: debug.IProcess, stackFrame: debug.IStackFrame, name: string): TPromise<void> {
814813
const expression = new Expression(name);
815-
this.addReplElement(expression);
814+
this.addReplElements([expression]);
816815
return expression.evaluate(process, stackFrame, 'repl')
817816
.then(() => this._onDidChangeREPLElements.fire());
818817
}
819818

820819
public appendToRepl(output: string | debug.IExpression, severity: severity): void {
821820
const previousOutput = this.replElements.length && (this.replElements[this.replElements.length - 1] as OutputElement);
822-
if (previousOutput instanceof OutputElement && strings.endsWith(previousOutput.value, '\n') && severity === previousOutput.severity && previousOutput.value === output && output.trim()) {
821+
if (previousOutput instanceof OutputElement && severity === previousOutput.severity && previousOutput.value === output && output.trim()) {
823822
// we got the same output (but not an empty string when trimmed) so we just increment the counter
824823
previousOutput.counter++;
825824
} else {
826-
const newReplElement = typeof output === 'string' ? new OutputElement(output, severity) : output;
827-
this.addReplElement(newReplElement);
825+
if (previousOutput && previousOutput.value === '') {
826+
// remove potential empty lines between different output types
827+
this.replElements.pop();
828+
}
829+
830+
const newReplElements = typeof output === 'string' ? output.split('\n').map(line => new OutputElement(line, severity)) : [output];
831+
this.addReplElements(newReplElements);
828832
}
829833

830834
this._onDidChangeREPLElements.fire();
831835
}
832836

833-
private addReplElement(newElement: debug.ITreeElement): void {
834-
this.replElements.push(newElement);
837+
private addReplElements(newElements: debug.ITreeElement[]): void {
838+
this.replElements.push(...newElements);
835839
if (this.replElements.length > MAX_REPL_LENGTH) {
836840
this.replElements.splice(0, this.replElements.length - MAX_REPL_LENGTH);
837841
}

src/vs/workbench/parts/debug/test/node/debugModel.test.ts

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -358,16 +358,16 @@ suite('Debug - Model', () => {
358358

359359
test('repl output', () => {
360360
model.appendToRepl('first line\n', severity.Error);
361-
model.appendToRepl('second line\n', severity.Warning);
362-
model.appendToRepl('second line\n', severity.Warning);
363-
model.appendToRepl('second line\n', severity.Error);
361+
model.appendToRepl('second line', severity.Warning);
362+
model.appendToRepl('second line', severity.Warning);
363+
model.appendToRepl('second line', severity.Error);
364364

365365
let elements = <OutputElement[]>model.getReplElements();
366366
assert.equal(elements.length, 3);
367-
assert.equal(elements[0].value, 'first line\n');
367+
assert.equal(elements[0].value, 'first line');
368368
assert.equal(elements[0].counter, 1);
369369
assert.equal(elements[0].severity, severity.Error);
370-
assert.equal(elements[1].value, 'second line\n');
370+
assert.equal(elements[1].value, 'second line');
371371
assert.equal(elements[1].counter, 2);
372372
assert.equal(elements[1].severity, severity.Warning);
373373

@@ -383,16 +383,6 @@ suite('Debug - Model', () => {
383383
assert.equal(element.value, 'Object');
384384
assert.deepEqual(element.valueObj, keyValueObject);
385385

386-
const multiLineContent = 'multi line \n string \n last line';
387-
model.appendToRepl(multiLineContent, severity.Info);
388-
const multiLineElement = <OutputElement>model.getReplElements()[5];
389-
assert.equal(multiLineElement.value, multiLineContent);
390-
assert.equal(model.getReplElements().length, 6);
391-
392-
model.appendToRepl('second line', severity.Warning);
393-
394-
assert.equal((<OutputElement>model.getReplElements()[6]).value, 'second line');
395-
396386
model.removeReplExpressions();
397387
assert.equal(model.getReplElements().length, 0);
398388
});

0 commit comments

Comments
 (0)