315
const bRng = b.range ? 0 : 1;
316
return aRng - bRng;
318
>
319
>
for (let { range, text, eol } of edits) {
320
>
321
>
if (typeof eol === 'number') {
322
lastEol = eol;
323
}
325
>
if (Range.isEmpty(range) && !text) {
326
// empty change
327
continue;
328
}
330
>
const original = model.getValueInRange(range);
331
>
text = text.replace(/\r\n|\n|\r/g, model.eol);
332
>
333
>
if (original === text) {
334
// noop
335
continue;
336
}
338
>
// make sure diff won't take too long
339
>
if (Math.max(text.length, original.length) > EditorWorker._diffLimit) {
340
result.push({ range, text });
341
continue;
342
}
344
>
// compute diff between original and edit.text
345
>
346
>
const originalLines = original.split(/\r\n|\n|\r/);
347
>
const modifiedLines = text.split(/\r\n|\n|\r/);
348
>
349
>
const diff = linesDiffComputers.getDefault().computeDiff(originalLines, modifiedLines, options);
350
>
351
>
const start = Range.lift(range).getStartPosition();
352
>
353
>
function addPositions(pos1: Position, pos2: Position): Position {
354
>
return new Position(pos1.lineNumber + pos2.lineNumber - 1, pos2.lineNumber === 1 ? pos1.column + pos2.column - 1 : pos2.column);
355
>
}
356
>
357
>
function getText(lines: string[], range: Range): string[] {
358
>
const result: string[] = [];
359
>
for (let i = range.startLineNumber; i <= range.endLineNumber; i++) {
360
>
const line = lines[i - 1];
361
>
if (i === range.startLineNumber && i === range.endLineNumber) {
362
result.push(line.substring(range.startColumn - 1, range.endColumn - 1));
364
result.push(line.substring(range.startColumn - 1));
365
} else if (i === range.endLineNumber) {