提交 27cc191a 编写于 作者: I isidor

debug: go back to old treatment of new lines

上级 6df46e21
......@@ -12,7 +12,6 @@ import { generateUuid } from 'vs/base/common/uuid';
import { clone } from 'vs/base/common/objects';
import severity from 'vs/base/common/severity';
import { isObject, isString } from 'vs/base/common/types';
import * as strings from 'vs/base/common/strings';
import { distinct } from 'vs/base/common/arrays';
import { IRange } from 'vs/editor/common/editorCommon';
import { Range } from 'vs/editor/common/core/range';
......@@ -812,26 +811,31 @@ export class Model implements debug.IModel {
public addReplExpression(process: debug.IProcess, stackFrame: debug.IStackFrame, name: string): TPromise<void> {
const expression = new Expression(name);
this.addReplElement(expression);
this.addReplElements([expression]);
return expression.evaluate(process, stackFrame, 'repl')
.then(() => this._onDidChangeREPLElements.fire());
}
public appendToRepl(output: string | debug.IExpression, severity: severity): void {
const previousOutput = this.replElements.length && (this.replElements[this.replElements.length - 1] as OutputElement);
if (previousOutput instanceof OutputElement && strings.endsWith(previousOutput.value, '\n') && severity === previousOutput.severity && previousOutput.value === output && output.trim()) {
if (previousOutput instanceof OutputElement && severity === previousOutput.severity && previousOutput.value === output && output.trim()) {
// we got the same output (but not an empty string when trimmed) so we just increment the counter
previousOutput.counter++;
} else {
const newReplElement = typeof output === 'string' ? new OutputElement(output, severity) : output;
this.addReplElement(newReplElement);
if (previousOutput && previousOutput.value === '') {
// remove potential empty lines between different output types
this.replElements.pop();
}
const newReplElements = typeof output === 'string' ? output.split('\n').map(line => new OutputElement(line, severity)) : [output];
this.addReplElements(newReplElements);
}
this._onDidChangeREPLElements.fire();
}
private addReplElement(newElement: debug.ITreeElement): void {
this.replElements.push(newElement);
private addReplElements(newElements: debug.ITreeElement[]): void {
this.replElements.push(...newElements);
if (this.replElements.length > MAX_REPL_LENGTH) {
this.replElements.splice(0, this.replElements.length - MAX_REPL_LENGTH);
}
......
......@@ -358,16 +358,16 @@ suite('Debug - Model', () => {
test('repl output', () => {
model.appendToRepl('first line\n', severity.Error);
model.appendToRepl('second line\n', severity.Warning);
model.appendToRepl('second line\n', severity.Warning);
model.appendToRepl('second line\n', severity.Error);
model.appendToRepl('second line', severity.Warning);
model.appendToRepl('second line', severity.Warning);
model.appendToRepl('second line', severity.Error);
let elements = <OutputElement[]>model.getReplElements();
assert.equal(elements.length, 3);
assert.equal(elements[0].value, 'first line\n');
assert.equal(elements[0].value, 'first line');
assert.equal(elements[0].counter, 1);
assert.equal(elements[0].severity, severity.Error);
assert.equal(elements[1].value, 'second line\n');
assert.equal(elements[1].value, 'second line');
assert.equal(elements[1].counter, 2);
assert.equal(elements[1].severity, severity.Warning);
......@@ -383,16 +383,6 @@ suite('Debug - Model', () => {
assert.equal(element.value, 'Object');
assert.deepEqual(element.valueObj, keyValueObject);
const multiLineContent = 'multi line \n string \n last line';
model.appendToRepl(multiLineContent, severity.Info);
const multiLineElement = <OutputElement>model.getReplElements()[5];
assert.equal(multiLineElement.value, multiLineContent);
assert.equal(model.getReplElements().length, 6);
model.appendToRepl('second line', severity.Warning);
assert.equal((<OutputElement>model.getReplElements()[6]).value, 'second line');
model.removeReplExpressions();
assert.equal(model.getReplElements().length, 0);
});
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册