Skip to content

Commit 4af8a64

Browse files
committed
Remove LinesTextBuffer
1 parent 805d078 commit 4af8a64

11 files changed

Lines changed: 53 additions & 1113 deletions

File tree

src/vs/editor/common/model/linesTextBuffer/linesTextBuffer.ts

Lines changed: 0 additions & 660 deletions
This file was deleted.

src/vs/editor/common/model/linesTextBuffer/linesTextBufferBuilder.ts

Lines changed: 0 additions & 139 deletions
This file was deleted.

src/vs/editor/common/model/linesTextBuffer/textSource.ts

Lines changed: 0 additions & 66 deletions
This file was deleted.

src/vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer.ts

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,22 @@
77
import { Range } from 'vs/editor/common/core/range';
88
import { Position } from 'vs/editor/common/core/position';
99
import * as strings from 'vs/base/common/strings';
10-
import { IValidatedEditOperation } from 'vs/editor/common/model/linesTextBuffer/linesTextBuffer';
1110
import { PieceTreeBase, StringBuffer } from 'vs/editor/common/model/pieceTreeTextBuffer/pieceTreeBase';
12-
import { IIdentifiedSingleEditOperation, EndOfLinePreference, ITextBuffer, ApplyEditsResult, IInternalModelContentChange, FindMatch } from 'vs/editor/common/model';
11+
import { IIdentifiedSingleEditOperation, EndOfLinePreference, ITextBuffer, ApplyEditsResult, IInternalModelContentChange, FindMatch, ISingleEditOperationIdentifier } from 'vs/editor/common/model';
1312
import { ITextSnapshot } from 'vs/platform/files/common/files';
1413
import { SearchData } from 'vs/editor/common/model/textModelSearch';
1514

15+
export interface IValidatedEditOperation {
16+
sortIndex: number;
17+
identifier: ISingleEditOperationIdentifier;
18+
range: Range;
19+
rangeOffset: number;
20+
rangeLength: number;
21+
lines: string[];
22+
forceMoveMarkers: boolean;
23+
isAutoWhitespaceEdit: boolean;
24+
}
25+
1626
export class PieceTreeTextBuffer implements ITextBuffer {
1727
private _pieceTree: PieceTreeBase;
1828
private _BOM: string;
@@ -279,9 +289,9 @@ export class PieceTreeTextBuffer implements ITextBuffer {
279289
}
280290

281291
/**
282-
* Transform operations such that they represent the same logic edit,
283-
* but that they also do not cause OOM crashes.
284-
*/
292+
* Transform operations such that they represent the same logic edit,
293+
* but that they also do not cause OOM crashes.
294+
*/
285295
private _reduceOperations(operations: IValidatedEditOperation[]): IValidatedEditOperation[] {
286296
if (operations.length < 1000) {
287297
// We know from empirical testing that a thousand edits work fine regardless of their shape.

src/vs/editor/common/model/textModel.ts

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -33,23 +33,10 @@ import { EDITOR_MODEL_DEFAULTS } from 'vs/editor/common/config/editorOptions';
3333
import { TextModelSearch, SearchParams, SearchData } from 'vs/editor/common/model/textModelSearch';
3434
import { TPromise } from 'vs/base/common/winjs.base';
3535
import { IStringStream, ITextSnapshot } from 'vs/platform/files/common/files';
36-
import { LinesTextBufferBuilder } from 'vs/editor/common/model/linesTextBuffer/linesTextBufferBuilder';
3736
import { PieceTreeTextBufferBuilder } from 'vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBufferBuilder';
3837

39-
export enum TextBufferType {
40-
LinesArray,
41-
PieceTree
42-
}
43-
// Here is the master switch for the text buffer implementation:
44-
export const OPTIONS = {
45-
TEXT_BUFFER_IMPLEMENTATION: TextBufferType.PieceTree
46-
};
47-
4838
function createTextBufferBuilder() {
49-
if (OPTIONS.TEXT_BUFFER_IMPLEMENTATION === TextBufferType.PieceTree) {
50-
return new PieceTreeTextBufferBuilder();
51-
}
52-
return new LinesTextBufferBuilder();
39+
return new PieceTreeTextBufferBuilder();
5340
}
5441

5542
export function createTextBufferFactory(text: string): model.ITextBufferFactory {
@@ -999,7 +986,7 @@ export class TextModel extends Disposable implements model.ITextModel {
999986
searchRange = this.getFullModelRange();
1000987
}
1001988

1002-
if (!isRegex && searchString.indexOf('\n') < 0 && OPTIONS.TEXT_BUFFER_IMPLEMENTATION === TextBufferType.PieceTree) {
989+
if (!isRegex && searchString.indexOf('\n') < 0) {
1003990
// not regex, not multi line
1004991
const searchParams = new SearchParams(searchString, isRegex, matchCase, wordSeparators);
1005992
const searchData = searchParams.parseSearchRequest();
@@ -1018,7 +1005,7 @@ export class TextModel extends Disposable implements model.ITextModel {
10181005
this._assertNotDisposed();
10191006
const searchStart = this.validatePosition(rawSearchStart);
10201007

1021-
if (!isRegex && searchString.indexOf('\n') < 0 && OPTIONS.TEXT_BUFFER_IMPLEMENTATION === TextBufferType.PieceTree) {
1008+
if (!isRegex && searchString.indexOf('\n') < 0) {
10221009
const searchParams = new SearchParams(searchString, isRegex, matchCase, wordSeparators);
10231010
const searchData = searchParams.parseSearchRequest();
10241011
const lineCount = this.getLineCount();

src/vs/editor/test/common/model/benchmark/benchmarkUtils.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
*--------------------------------------------------------------------------------------------*/
55

66
import { ITextBufferBuilder, ITextBufferFactory, ITextBuffer, DefaultEndOfLine } from 'vs/editor/common/model';
7-
import { LinesTextBufferBuilder } from 'vs/editor/common/model/linesTextBuffer/linesTextBufferBuilder';
87
import { PieceTreeTextBufferBuilder } from 'vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBufferBuilder';
98

109
export function doBenchmark<T>(id: string, ts: T[], fn: (t: T) => void) {
@@ -56,7 +55,7 @@ export class BenchmarkSuite {
5655
for (let i = 0; i < this.benchmarks.length; i++) {
5756
let benchmark = this.benchmarks[i];
5857
let columns: string[] = [benchmark.name];
59-
[new LinesTextBufferBuilder(), new PieceTreeTextBufferBuilder()].forEach((builder: ITextBufferBuilder) => {
58+
[new PieceTreeTextBufferBuilder()].forEach((builder: ITextBufferBuilder) => {
6059
let timeDiffTotal = 0.0;
6160
for (let j = 0; j < this.iterations; j++) {
6261
let factory = benchmark.buildBuffer(builder);

src/vs/editor/test/common/model/benchmark/modelbuilder.benchmark.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,11 @@
44
*--------------------------------------------------------------------------------------------*/
55
'use strict';
66

7-
import { LinesTextBufferBuilder } from 'vs/editor/common/model/linesTextBuffer/linesTextBufferBuilder';
87
import { PieceTreeTextBufferBuilder } from 'vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBufferBuilder';
98
import { ITextBufferBuilder } from 'vs/editor/common/model';
109
import { generateRandomChunkWithLF } from 'vs/editor/test/common/model/linesTextBuffer/textBufferAutoTestUtils';
1110
import { doBenchmark } from 'vs/editor/test/common/model/benchmark/benchmarkUtils';
1211

13-
let linesTextBufferBuilder = new LinesTextBufferBuilder();
1412
let pieceTreeTextBufferBuilder = new PieceTreeTextBufferBuilder();
1513
let chunks = [];
1614

@@ -30,5 +28,5 @@ let modelBuildBenchmark = function (id: string, builders: ITextBufferBuilder[],
3028
console.log(`|model builder\t|line buffer\t|piece table\t|`);
3129
console.log('|---|---|---|');
3230
for (let i of [10, 100]) {
33-
modelBuildBenchmark(`${i} random chunks`, [linesTextBufferBuilder, pieceTreeTextBufferBuilder], i);
31+
modelBuildBenchmark(`${i} random chunks`, [pieceTreeTextBufferBuilder], i);
3432
}

src/vs/editor/test/common/model/linesTextBuffer/linesTextBuffer.test.ts

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@
77

88
import * as assert from 'assert';
99
import { Range } from 'vs/editor/common/core/range';
10-
import { LinesTextBuffer, IValidatedEditOperation } from 'vs/editor/common/model/linesTextBuffer/linesTextBuffer';
10+
import { PieceTreeTextBuffer, IValidatedEditOperation } from 'vs/editor/common/model/pieceTreeTextBuffer/pieceTreeTextBuffer';
11+
import { createTextBufferFactory } from 'vs/editor/common/model/textModel';
12+
import { DefaultEndOfLine } from 'vs/editor/common/model';
1113

12-
suite('LinesTextBuffer._getInverseEdits', () => {
14+
suite('PieceTreeTextBuffer._getInverseEdits', () => {
1315

1416
function editOp(startLineNumber: number, startColumn: number, endLineNumber: number, endColumn: number, text: string[]): IValidatedEditOperation {
1517
return {
@@ -29,7 +31,7 @@ suite('LinesTextBuffer._getInverseEdits', () => {
2931
}
3032

3133
function assertInverseEdits(ops: IValidatedEditOperation[], expected: Range[]): void {
32-
var actual = LinesTextBuffer._getInverseEditRanges(ops);
34+
var actual = PieceTreeTextBuffer._getInverseEditRanges(ops);
3335
assert.deepEqual(actual, expected);
3436
}
3537

@@ -260,7 +262,7 @@ suite('LinesTextBuffer._getInverseEdits', () => {
260262
});
261263
});
262264

263-
suite('LinesTextBuffer._toSingleEditOperation', () => {
265+
suite('PieceTreeTextBuffer._toSingleEditOperation', () => {
264266

265267
function editOp(startLineNumber: number, startColumn: number, endLineNumber: number, endColumn: number, rangeOffset: number, rangeLength: number, text: string[]): IValidatedEditOperation {
266268
return {
@@ -276,13 +278,7 @@ suite('LinesTextBuffer._toSingleEditOperation', () => {
276278
}
277279

278280
function testToSingleEditOperation(original: string[], edits: IValidatedEditOperation[], expected: IValidatedEditOperation): void {
279-
const textBuffer = new LinesTextBuffer({
280-
BOM: '',
281-
EOL: '\n',
282-
containsRTL: false,
283-
isBasicASCII: true,
284-
lines: original
285-
});
281+
const textBuffer = <PieceTreeTextBuffer>createTextBufferFactory(original.join('\n')).create(DefaultEndOfLine.LF);
286282

287283
const actual = textBuffer._toSingleEditOperation(edits);
288284
assert.deepEqual(actual, expected);

0 commit comments

Comments
 (0)