Skip to content

Commit e80b0f5

Browse files
committed
💄
1 parent 807a126 commit e80b0f5

1 file changed

Lines changed: 31 additions & 39 deletions

File tree

src/vs/editor/common/diff/diffComputer.ts

Lines changed: 31 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ function computeDiff(originalSequence: ISequence, modifiedSequence: ISequence, c
1515
return diffAlgo.ComputeDiff(pretty);
1616
}
1717

18-
class LineMarkerSequence implements ISequence {
18+
class LineSequence implements ISequence {
1919

2020
private readonly _lines: string[];
2121
private readonly _startColumns: number[];
@@ -25,8 +25,8 @@ class LineMarkerSequence implements ISequence {
2525
let startColumns: number[] = [];
2626
let endColumns: number[] = [];
2727
for (let i = 0, length = lines.length; i < length; i++) {
28-
startColumns[i] = LineMarkerSequence._getFirstNonBlankColumn(lines[i], 1);
29-
endColumns[i] = LineMarkerSequence._getLastNonBlankColumn(lines[i], 1);
28+
startColumns[i] = getFirstNonBlankColumn(lines[i], 1);
29+
endColumns[i] = getLastNonBlankColumn(lines[i], 1);
3030
}
3131
this._lines = lines;
3232
this._startColumns = startColumns;
@@ -45,35 +45,11 @@ class LineMarkerSequence implements ISequence {
4545
return i + 1;
4646
}
4747

48-
public getStartColumn(i: number): number {
49-
return this._startColumns[i];
50-
}
51-
5248
public getEndLineNumber(i: number): number {
5349
return i + 1;
5450
}
5551

56-
public getEndColumn(i: number): number {
57-
return this._endColumns[i];
58-
}
59-
60-
public static _getFirstNonBlankColumn(txt: string, defaultValue: number): number {
61-
const r = strings.firstNonWhitespaceIndex(txt);
62-
if (r === -1) {
63-
return defaultValue;
64-
}
65-
return r + 1;
66-
}
67-
68-
public static _getLastNonBlankColumn(txt: string, defaultValue: number): number {
69-
const r = strings.lastNonWhitespaceIndex(txt);
70-
if (r === -1) {
71-
return defaultValue;
72-
}
73-
return r + 2;
74-
}
75-
76-
public getCharSequence(shouldIgnoreTrimWhitespace: boolean, startIndex: number, endIndex: number): CharSequence {
52+
public createCharSequence(shouldIgnoreTrimWhitespace: boolean, startIndex: number, endIndex: number): CharSequence {
7753
let charCodes: number[] = [];
7854
let lineNumbers: number[] = [];
7955
let columns: number[] = [];
@@ -254,7 +230,7 @@ class LineChange implements ILineChange {
254230
this.charChanges = charChanges;
255231
}
256232

257-
public static createFromDiffResult(shouldIgnoreTrimWhitespace: boolean, diffChange: IDiffChange, originalLineSequence: LineMarkerSequence, modifiedLineSequence: LineMarkerSequence, continueProcessingPredicate: () => boolean, shouldComputeCharChanges: boolean, shouldPostProcessCharChanges: boolean): LineChange {
233+
public static createFromDiffResult(shouldIgnoreTrimWhitespace: boolean, diffChange: IDiffChange, originalLineSequence: LineSequence, modifiedLineSequence: LineSequence, continueProcessingPredicate: () => boolean, shouldComputeCharChanges: boolean, shouldPostProcessCharChanges: boolean): LineChange {
258234
let originalStartLineNumber: number;
259235
let originalEndLineNumber: number;
260236
let modifiedStartLineNumber: number;
@@ -278,8 +254,8 @@ class LineChange implements ILineChange {
278254
}
279255

280256
if (shouldComputeCharChanges && diffChange.originalLength !== 0 && diffChange.modifiedLength !== 0 && continueProcessingPredicate()) {
281-
const originalCharSequence = originalLineSequence.getCharSequence(shouldIgnoreTrimWhitespace, diffChange.originalStart, diffChange.originalStart + diffChange.originalLength - 1);
282-
const modifiedCharSequence = modifiedLineSequence.getCharSequence(shouldIgnoreTrimWhitespace, diffChange.modifiedStart, diffChange.modifiedStart + diffChange.modifiedLength - 1);
257+
const originalCharSequence = originalLineSequence.createCharSequence(shouldIgnoreTrimWhitespace, diffChange.originalStart, diffChange.originalStart + diffChange.originalLength - 1);
258+
const modifiedCharSequence = modifiedLineSequence.createCharSequence(shouldIgnoreTrimWhitespace, diffChange.modifiedStart, diffChange.modifiedStart + diffChange.modifiedLength - 1);
283259

284260
let rawChanges = computeDiff(originalCharSequence, modifiedCharSequence, continueProcessingPredicate, true);
285261

@@ -313,8 +289,8 @@ export class DiffComputer {
313289
private readonly maximumRunTimeMs: number;
314290
private readonly originalLines: string[];
315291
private readonly modifiedLines: string[];
316-
private readonly original: LineMarkerSequence;
317-
private readonly modified: LineMarkerSequence;
292+
private readonly original: LineSequence;
293+
private readonly modified: LineSequence;
318294

319295
private computationStartTime: number;
320296

@@ -326,8 +302,8 @@ export class DiffComputer {
326302
this.maximumRunTimeMs = MAXIMUM_RUN_TIME;
327303
this.originalLines = originalLines;
328304
this.modifiedLines = modifiedLines;
329-
this.original = new LineMarkerSequence(originalLines);
330-
this.modified = new LineMarkerSequence(modifiedLines);
305+
this.original = new LineSequence(originalLines);
306+
this.modified = new LineSequence(modifiedLines);
331307

332308
this.computationStartTime = (new Date()).getTime();
333309
}
@@ -409,8 +385,8 @@ export class DiffComputer {
409385

410386
// Check the leading whitespace
411387
{
412-
let originalStartColumn = LineMarkerSequence._getFirstNonBlankColumn(originalLine, 1);
413-
let modifiedStartColumn = LineMarkerSequence._getFirstNonBlankColumn(modifiedLine, 1);
388+
let originalStartColumn = getFirstNonBlankColumn(originalLine, 1);
389+
let modifiedStartColumn = getFirstNonBlankColumn(modifiedLine, 1);
414390
while (originalStartColumn > 1 && modifiedStartColumn > 1) {
415391
const originalChar = originalLine.charCodeAt(originalStartColumn - 2);
416392
const modifiedChar = modifiedLine.charCodeAt(modifiedStartColumn - 2);
@@ -431,8 +407,8 @@ export class DiffComputer {
431407

432408
// Check the trailing whitespace
433409
{
434-
let originalEndColumn = LineMarkerSequence._getLastNonBlankColumn(originalLine, 1);
435-
let modifiedEndColumn = LineMarkerSequence._getLastNonBlankColumn(modifiedLine, 1);
410+
let originalEndColumn = getLastNonBlankColumn(originalLine, 1);
411+
let modifiedEndColumn = getLastNonBlankColumn(modifiedLine, 1);
436412
const originalMaxColumn = originalLine.length + 1;
437413
const modifiedMaxColumn = modifiedLine.length + 1;
438414
while (originalEndColumn < originalMaxColumn && modifiedEndColumn < modifiedMaxColumn) {
@@ -534,3 +510,19 @@ export class DiffComputer {
534510
}
535511

536512
}
513+
514+
function getFirstNonBlankColumn(txt: string, defaultValue: number): number {
515+
const r = strings.firstNonWhitespaceIndex(txt);
516+
if (r === -1) {
517+
return defaultValue;
518+
}
519+
return r + 1;
520+
}
521+
522+
function getLastNonBlankColumn(txt: string, defaultValue: number): number {
523+
const r = strings.lastNonWhitespaceIndex(txt);
524+
if (r === -1) {
525+
return defaultValue;
526+
}
527+
return r + 2;
528+
}

0 commit comments

Comments
 (0)