mirror of
https://github.com/Microsoft/vscode
synced 2024-09-19 02:26:04 +00:00
parent
91f83afb13
commit
60a2c5e140
|
@ -52,22 +52,6 @@
|
|||
padding-left: 6px;
|
||||
}
|
||||
|
||||
.monaco-workbench .repl .repl-tree .monaco-tree-row .output.expression > .counter {
|
||||
min-width: 11px;
|
||||
padding: 0 3px;
|
||||
margin-right: 6px;
|
||||
display: inline-block;
|
||||
border-radius: 8px;
|
||||
font-size: 11px;
|
||||
font-weight: normal;
|
||||
text-align: center;
|
||||
line-height: 16px;
|
||||
}
|
||||
|
||||
.monaco-workbench .repl .repl-tree .monaco-tree-row .output.expression > .counter:empty {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.monaco-workbench .repl .repl-tree .monaco-tree-row .output.expression .name:not(:empty) {
|
||||
margin-right: 6px;
|
||||
}
|
||||
|
@ -161,51 +145,6 @@
|
|||
color: #0000FF;
|
||||
}
|
||||
|
||||
.vs .monaco-workbench .repl .repl-tree .monaco-tree .monaco-tree-row > .content > .output.expression > .counter.info {
|
||||
background-color: #007ACC;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.vs-dark .monaco-workbench .repl .repl-tree .monaco-tree .monaco-tree-row > .content > .output.expression > .counter.info {
|
||||
background-color: #1B80B2;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.hc-black .monaco-workbench .repl .repl-tree .monaco-tree .monaco-tree-row > .content > .output.expression > .counter.info {
|
||||
background-color: #0000FF;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.vs .monaco-workbench .repl .repl-tree .monaco-tree .monaco-tree-row > .content > .output.expression > .counter.warn {
|
||||
background-color: #cd9731;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.vs-dark .monaco-workbench .repl .repl-tree .monaco-tree .monaco-tree-row > .content > .output.expression > .counter.warn {
|
||||
background-color: #cd9731;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.hc-black .monaco-workbench .repl .repl-tree .monaco-tree .monaco-tree-row > .content > .output.expression > .counter.warn {
|
||||
background-color: #008000;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.vs .monaco-workbench .repl .repl-tree .monaco-tree .monaco-tree-row > .content > .output.expression > .counter.error {
|
||||
background-color: #D72817;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.vs-dark .monaco-workbench .repl .repl-tree .monaco-tree .monaco-tree-row > .content > .output.expression > .counter.error {
|
||||
background-color: #D72817;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.hc-black .monaco-workbench .repl .repl-tree .monaco-tree .monaco-tree-row > .content > .output.expression > .counter.error {
|
||||
background-color: #FF0000;
|
||||
color: white;
|
||||
}
|
||||
|
||||
/* ANSI Codes */
|
||||
.monaco-workbench .repl .repl-tree .monaco-tree .monaco-tree-row > .content > .output.expression .code-bold { font-weight: bold; }
|
||||
|
||||
|
|
|
@ -43,14 +43,12 @@ export abstract class AbstractOutputElement implements IReplElement {
|
|||
|
||||
export class OutputElement extends AbstractOutputElement {
|
||||
|
||||
public counter: number;
|
||||
|
||||
constructor(
|
||||
public value: string,
|
||||
public severity: severity,
|
||||
) {
|
||||
super();
|
||||
this.counter = 1;
|
||||
}
|
||||
|
||||
public toString(): string {
|
||||
|
@ -960,22 +958,16 @@ export class Model implements IModel {
|
|||
public appendToRepl(output: string | IExpression, severity: severity): void {
|
||||
if (typeof output === 'string') {
|
||||
const previousOutput = this.replElements.length && (this.replElements[this.replElements.length - 1] as OutputElement);
|
||||
const lastNonEmpty = previousOutput && previousOutput.value.trim() ? previousOutput : this.replElements.length > 1 ? this.replElements[this.replElements.length - 2] : undefined;
|
||||
|
||||
if (lastNonEmpty instanceof OutputElement && severity === lastNonEmpty.severity && lastNonEmpty.value === output.trim() && output.trim() && output.length > 1) {
|
||||
// we got the same output (but not an empty string when trimmed) so we just increment the counter
|
||||
lastNonEmpty.counter++;
|
||||
} else {
|
||||
const toAdd = output.split('\n').map(line => new OutputElement(line, severity));
|
||||
if (previousOutput instanceof OutputElement && severity === previousOutput.severity && toAdd.length) {
|
||||
previousOutput.value += toAdd.shift().value;
|
||||
}
|
||||
if (previousOutput && previousOutput.value === '' && previousOutput.severity !== severity) {
|
||||
// remove potential empty lines between different output types
|
||||
this.replElements.pop();
|
||||
}
|
||||
this.addReplElements(toAdd);
|
||||
const toAdd = output.split('\n').map(line => new OutputElement(line, severity));
|
||||
if (previousOutput instanceof OutputElement && severity === previousOutput.severity && toAdd.length) {
|
||||
previousOutput.value += toAdd.shift().value;
|
||||
}
|
||||
if (previousOutput && previousOutput.value === '' && previousOutput.severity !== severity) {
|
||||
// remove potential empty lines between different output types
|
||||
this.replElements.pop();
|
||||
}
|
||||
this.addReplElements(toAdd);
|
||||
} else {
|
||||
// TODO@Isidor hack, we should introduce a new type which is an output that can fetch children like an expression
|
||||
(<any>output).severity = severity;
|
||||
|
|
|
@ -62,7 +62,6 @@ interface IExpressionTemplateData {
|
|||
|
||||
interface IValueOutputTemplateData {
|
||||
container: HTMLElement;
|
||||
counter: HTMLElement;
|
||||
value: HTMLElement;
|
||||
}
|
||||
|
||||
|
@ -178,7 +177,6 @@ export class ReplExpressionsRenderer implements IRenderer {
|
|||
let expression = dom.append(container, $('.output.expression'));
|
||||
|
||||
data.container = container;
|
||||
data.counter = dom.append(expression, $('div.counter'));
|
||||
data.value = dom.append(expression, $('span.value'));
|
||||
|
||||
return data;
|
||||
|
@ -224,15 +222,6 @@ export class ReplExpressionsRenderer implements IRenderer {
|
|||
|
||||
private renderOutputValue(output: OutputElement, templateData: IValueOutputTemplateData): void {
|
||||
|
||||
// counter
|
||||
if (output.counter > 1) {
|
||||
templateData.counter.textContent = String(output.counter);
|
||||
templateData.counter.className = (output.severity === severity.Warning) ? 'counter warn' : (output.severity === severity.Error) ? 'counter error' : 'counter info';
|
||||
} else {
|
||||
templateData.counter.textContent = '';
|
||||
templateData.counter.className = 'counter';
|
||||
}
|
||||
|
||||
// value
|
||||
dom.clearNode(templateData.value);
|
||||
templateData.value.className = '';
|
||||
|
|
|
@ -353,24 +353,18 @@ suite('Debug - Model', () => {
|
|||
test('repl output', () => {
|
||||
model.appendToRepl('first line\n', severity.Error);
|
||||
model.appendToRepl('second line', severity.Error);
|
||||
model.appendToRepl('second line', severity.Error);
|
||||
model.appendToRepl('third line', severity.Warning);
|
||||
model.appendToRepl('third line', severity.Warning);
|
||||
model.appendToRepl('fourth line', severity.Error);
|
||||
|
||||
let elements = <OutputElement[]>model.getReplElements();
|
||||
assert.equal(elements.length, 4);
|
||||
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');
|
||||
assert.equal(elements[1].counter, 2);
|
||||
assert.equal(elements[1].severity, severity.Error);
|
||||
assert.equal(elements[2].value, 'third line');
|
||||
assert.equal(elements[2].counter, 2);
|
||||
assert.equal(elements[2].severity, severity.Warning);
|
||||
assert.equal(elements[3].value, 'fourth line');
|
||||
assert.equal(elements[3].counter, 1);
|
||||
assert.equal(elements[3].severity, severity.Error);
|
||||
|
||||
model.appendToRepl('1', severity.Warning);
|
||||
|
|
Loading…
Reference in a new issue