Merge from vscode e1d3dd53d17fb1529a002e4d6fb066db0a0bd385 (#6460)

* Merge from vscode e1d3dd53d17fb1529a002e4d6fb066db0a0bd385

* fix servers icon

* fix tests
This commit is contained in:
Anthony Dresser
2019-07-22 18:28:21 -07:00
committed by GitHub
parent f2afacd8b2
commit 15fc7a077a
91 changed files with 2562 additions and 972 deletions

View File

@@ -9,7 +9,7 @@ import * as strings from 'vs/base/common/strings';
import { IViewLineTokens } from 'vs/editor/common/core/lineTokens';
import { MetadataConsts } from 'vs/editor/common/modes';
import { LineDecoration } from 'vs/editor/common/viewLayout/lineDecorations';
import { CharacterMapping, RenderLineInput, renderViewLine2 as renderViewLine } from 'vs/editor/common/viewLayout/viewLineRenderer';
import { CharacterMapping, RenderLineInput, renderViewLine2 as renderViewLine, LineRange } from 'vs/editor/common/viewLayout/viewLineRenderer';
import { InlineDecorationType } from 'vs/editor/common/viewModel/viewModel';
import { ViewLineToken, ViewLineTokens } from 'vs/editor/test/common/core/viewLineToken';
@@ -41,7 +41,8 @@ suite('viewLineRenderer.renderLine', () => {
-1,
'none',
false,
false
false,
null
));
assert.equal(_actual.html, '<span><span class="mtk0">' + expected + '</span></span>');
@@ -90,7 +91,8 @@ suite('viewLineRenderer.renderLine', () => {
-1,
'none',
false,
false
false,
null
));
assert.equal(_actual.html, '<span>' + expected + '</span>');
@@ -142,7 +144,8 @@ suite('viewLineRenderer.renderLine', () => {
6,
'boundary',
false,
false
false,
null
));
let expectedOutput = [
@@ -233,7 +236,8 @@ suite('viewLineRenderer.renderLine', () => {
-1,
'boundary',
false,
false
false,
null
));
assert.equal(_actual.html, '<span>' + expectedOutput + '</span>');
@@ -295,7 +299,8 @@ suite('viewLineRenderer.renderLine', () => {
-1,
'none',
false,
false
false,
null
));
assert.equal(_actual.html, '<span>' + expectedOutput + '</span>');
@@ -357,7 +362,8 @@ suite('viewLineRenderer.renderLine', () => {
-1,
'none',
false,
false
false,
null
));
assert.equal(_actual.html, '<span>' + expectedOutput + '</span>');
@@ -396,7 +402,8 @@ suite('viewLineRenderer.renderLine', () => {
-1,
'none',
false,
false
false,
null
));
assert.equal(_actual.html, '<span>' + expectedOutput + '</span>');
@@ -426,7 +433,8 @@ suite('viewLineRenderer.renderLine', () => {
-1,
'none',
false,
false
false,
null
));
assert.equal(actual.html, '<span>' + expectedOutput.join('') + '</span>', message);
}
@@ -526,7 +534,8 @@ suite('viewLineRenderer.renderLine', () => {
-1,
'none',
false,
true
true,
null
));
assert.equal(actual.html, '<span>' + expectedOutput.join('') + '</span>', message);
}
@@ -564,7 +573,8 @@ suite('viewLineRenderer.renderLine', () => {
-1,
'none',
false,
false
false,
null
));
let expectedOutput = [
'<span class="mtk1">a𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷𠮷</span>',
@@ -593,7 +603,8 @@ suite('viewLineRenderer.renderLine', () => {
-1,
'none',
false,
false
false,
null
));
assert.equal(actual.html, '<span>' + expectedOutput.join('') + '</span>');
assert.equal(actual.containsRTL, true);
@@ -639,7 +650,8 @@ suite('viewLineRenderer.renderLine', () => {
-1,
'none',
false,
false
false,
null
));
assert.equal(_actual.html, '<span>' + expectedOutput + '</span>');
@@ -704,7 +716,7 @@ suite('viewLineRenderer.renderLine', () => {
suite('viewLineRenderer.renderLine 2', () => {
function testCreateLineParts(fontIsMonospace: boolean, lineContent: string, tokens: ViewLineToken[], fauxIndentLength: number, renderWhitespace: 'none' | 'boundary' | 'all', expected: string): void {
function testCreateLineParts(fontIsMonospace: boolean, lineContent: string, tokens: ViewLineToken[], fauxIndentLength: number, renderWhitespace: 'none' | 'boundary' | 'selection' | 'all', selections: LineRange[] | null, expected: string): void {
let actual = renderViewLine(new RenderLineInput(
fontIsMonospace,
true,
@@ -720,7 +732,8 @@ suite('viewLineRenderer.renderLine 2', () => {
-1,
renderWhitespace,
false,
false
false,
selections
));
assert.deepEqual(actual.html, expected);
@@ -745,7 +758,8 @@ suite('viewLineRenderer.renderLine 2', () => {
-1,
'none',
false,
false
false,
null
));
let expected = [
@@ -784,7 +798,8 @@ suite('viewLineRenderer.renderLine 2', () => {
-1,
'none',
false,
false
false,
null
));
let expected = [
@@ -811,6 +826,7 @@ suite('viewLineRenderer.renderLine 2', () => {
],
0,
'none',
null,
[
'<span>',
'<span class="mtk1">Hello\u00a0world!</span>',
@@ -828,6 +844,7 @@ suite('viewLineRenderer.renderLine 2', () => {
],
0,
'none',
null,
[
'<span>',
'<span class="mtk1">Hello\u00a0</span>',
@@ -847,6 +864,7 @@ suite('viewLineRenderer.renderLine 2', () => {
],
0,
'boundary',
null,
[
'<span>',
'<span class="vs-whitespace" style="width:40px">\u00b7\u00b7\u00b7\u00b7</span>',
@@ -868,6 +886,7 @@ suite('viewLineRenderer.renderLine 2', () => {
],
0,
'boundary',
null,
[
'<span>',
'<span class="vs-whitespace" style="width:40px">\u00b7\u00b7\u00b7\u00b7</span>',
@@ -891,6 +910,7 @@ suite('viewLineRenderer.renderLine 2', () => {
],
0,
'boundary',
null,
[
'<span>',
'<span class="vs-whitespace" style="width:40px">\u2192\u00a0\u00a0\u00a0</span>',
@@ -913,6 +933,7 @@ suite('viewLineRenderer.renderLine 2', () => {
],
0,
'boundary',
null,
[
'<span>',
'<span class="vs-whitespace" style="width:40px">\u00b7\u00b7\u2192\u00a0</span>',
@@ -940,6 +961,7 @@ suite('viewLineRenderer.renderLine 2', () => {
],
2,
'boundary',
null,
[
'<span>',
'<span class="">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0</span>',
@@ -966,6 +988,7 @@ suite('viewLineRenderer.renderLine 2', () => {
],
2,
'boundary',
null,
[
'<span>',
'<span class="">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0</span>',
@@ -989,6 +1012,7 @@ suite('viewLineRenderer.renderLine 2', () => {
],
0,
'boundary',
null,
[
'<span>',
'<span class="mtk1">it</span>',
@@ -1014,6 +1038,7 @@ suite('viewLineRenderer.renderLine 2', () => {
],
0,
'all',
null,
[
'<span>',
'<span class="vs-whitespace" style="width:10px">\u00b7</span>',
@@ -1027,6 +1052,147 @@ suite('viewLineRenderer.renderLine 2', () => {
);
});
test('createLineParts render whitespace for selection with no selections', () => {
testCreateLineParts(
false,
' Hello world!\t',
[
createPart(4, 0),
createPart(6, 1),
createPart(14, 2)
],
0,
'selection',
null,
[
'<span>',
'<span class="mtk0">\u00a0Hel</span>',
'<span class="mtk1">lo</span>',
'<span class="mtk2">\u00a0world!\u00a0\u00a0\u00a0</span>',
'</span>',
].join('')
);
});
test('createLineParts render whitespace for selection with whole line selection', () => {
testCreateLineParts(
false,
' Hello world!\t',
[
createPart(4, 0),
createPart(6, 1),
createPart(14, 2)
],
0,
'selection',
[new LineRange(0, 14)],
[
'<span>',
'<span class="vs-whitespace" style="width:10px">\u00b7</span>',
'<span class="mtk0">Hel</span>',
'<span class="mtk1">lo</span>',
'<span class="vs-whitespace" style="width:10px">\u00b7</span>',
'<span class="mtk2">world!</span>',
'<span class="vs-whitespace" style="width:30px">\u2192\u00a0\u00a0</span>',
'</span>',
].join('')
);
});
test('createLineParts render whitespace for selection with selection spanning part of whitespace', () => {
testCreateLineParts(
false,
' Hello world!\t',
[
createPart(4, 0),
createPart(6, 1),
createPart(14, 2)
],
0,
'selection',
[new LineRange(0, 5)],
[
'<span>',
'<span class="vs-whitespace" style="width:10px">\u00b7</span>',
'<span class="mtk0">Hel</span>',
'<span class="mtk1">lo</span>',
'<span class="mtk2">\u00a0world!\u00a0\u00a0\u00a0</span>',
'</span>',
].join('')
);
});
test('createLineParts render whitespace for selection with multiple selections', () => {
testCreateLineParts(
false,
' Hello world!\t',
[
createPart(4, 0),
createPart(6, 1),
createPart(14, 2)
],
0,
'selection',
[new LineRange(0, 5), new LineRange(9, 14)],
[
'<span>',
'<span class="vs-whitespace" style="width:10px">\u00b7</span>',
'<span class="mtk0">Hel</span>',
'<span class="mtk1">lo</span>',
'<span class="mtk2">\u00a0world!</span>',
'<span class="vs-whitespace" style="width:30px">\u2192\u00a0\u00a0</span>',
'</span>',
].join('')
);
});
test('createLineParts render whitespace for selection with multiple, initially unsorted selections', () => {
testCreateLineParts(
false,
' Hello world!\t',
[
createPart(4, 0),
createPart(6, 1),
createPart(14, 2)
],
0,
'selection',
[new LineRange(9, 14), new LineRange(0, 5)],
[
'<span>',
'<span class="vs-whitespace" style="width:10px">\u00b7</span>',
'<span class="mtk0">Hel</span>',
'<span class="mtk1">lo</span>',
'<span class="mtk2">\u00a0world!</span>',
'<span class="vs-whitespace" style="width:30px">\u2192\u00a0\u00a0</span>',
'</span>',
].join('')
);
});
test('createLineParts render whitespace for selection with selections next to each other', () => {
testCreateLineParts(
false,
' * S',
[
createPart(4, 0)
],
0,
'selection',
[new LineRange(0, 1), new LineRange(1, 2), new LineRange(2, 3)],
[
'<span>',
'<span class="vs-whitespace" style="width:10px">\u00b7</span>',
'<span class="mtk0">*</span>',
'<span class="vs-whitespace" style="width:10px">\u00b7</span>',
'<span class="mtk0">S</span>',
'</span>',
].join('')
);
});
test('createLineParts can handle unsorted inline decorations', () => {
let actual = renderViewLine(new RenderLineInput(
false,
@@ -1047,7 +1213,8 @@ suite('viewLineRenderer.renderLine 2', () => {
-1,
'none',
false,
false
false,
null
));
// 01234567890
@@ -1087,7 +1254,8 @@ suite('viewLineRenderer.renderLine 2', () => {
-1,
'all',
false,
true
true,
null
));
let expected = [
@@ -1119,7 +1287,8 @@ suite('viewLineRenderer.renderLine 2', () => {
-1,
'all',
false,
true
true,
null
));
let expected = [
@@ -1152,7 +1321,8 @@ suite('viewLineRenderer.renderLine 2', () => {
-1,
'all',
false,
true
true,
null
));
let expected = [
@@ -1181,7 +1351,8 @@ suite('viewLineRenderer.renderLine 2', () => {
10000,
'none',
false,
false
false,
null
));
let expected = [
@@ -1214,7 +1385,8 @@ suite('viewLineRenderer.renderLine 2', () => {
10000,
'none',
false,
false
false,
null
));
let expected = [
@@ -1246,7 +1418,8 @@ suite('viewLineRenderer.renderLine 2', () => {
10000,
'none',
false,
false
false,
null
));
let expected = [
@@ -1276,7 +1449,8 @@ suite('viewLineRenderer.renderLine 2', () => {
10000,
'none',
false,
false
false,
null
));
let expected = [
@@ -1305,7 +1479,8 @@ suite('viewLineRenderer.renderLine 2', () => {
10000,
'all',
false,
false
false,
null
));
let expected = [
@@ -1340,7 +1515,8 @@ suite('viewLineRenderer.renderLine 2', () => {
10000,
'none',
false,
false
false,
null
));
let expected = [
@@ -1369,7 +1545,8 @@ suite('viewLineRenderer.renderLine 2', () => {
10000,
'none',
false,
false
false,
null
));
let expected = [
@@ -1400,7 +1577,8 @@ suite('viewLineRenderer.renderLine 2', () => {
10000,
'none',
false,
false
false,
null
));
let expected = [
@@ -1430,7 +1608,8 @@ suite('viewLineRenderer.renderLine 2', () => {
10000,
'boundary',
false,
false
false,
null
));
let expected = [
@@ -1458,7 +1637,8 @@ suite('viewLineRenderer.renderLine 2', () => {
10000,
'none',
false,
true
true,
null
));
let expected = [
@@ -1490,7 +1670,8 @@ suite('viewLineRenderer.renderLine 2', () => {
10000,
'none',
false,
true
true,
null
));
let expected = [
@@ -1518,7 +1699,8 @@ suite('viewLineRenderer.renderLine 2', () => {
-1,
'none',
false,
false
false,
null
));
return (partIndex: number, partLength: number, offset: number, expected: number) => {