156
157
inverse(doc: AbstractText): TextEdit {
159
>
return new TextEdit(this.replacements.map((e, idx) => new TextReplacement(ranges[idx], doc.getValueOfRange(e.range))));
160
>
}
161
162
getNewRanges(): Range[] {
164
>
let previousEditEndLineNumber = 0;
165
>
let lineOffset = 0;
166
>
let columnOffset = 0;
167
>
for (const replacement of this.replacements) {
168
>
const textLength = TextLength.ofText(replacement.text);
169
>
const newRangeStart = Position.lift({
170
>
lineNumber: replacement.range.startLineNumber + lineOffset,
171
>
column: replacement.range.startColumn + (replacement.range.startLineNumber === previousEditEndLineNumber ? columnOffset : 0)
172
>
});
173
>
const newRange = textLength.createRange(newRangeStart);
174
>
newRanges.push(newRange);
175
>
lineOffset = newRange.endLineNumber - replacement.range.endLineNumber;
176
>
columnOffset = newRange.endColumn - replacement.range.endColumn;
177
>
previousEditEndLineNumber = replacement.range.endLineNumber;
178
>
}
179
>
return newRanges;
180
>
}
181
182
toReplacement(text: AbstractText): TextReplacement {