textLinesMutator: Fix insertions with newlines at the end of a line
In such cases the remaining part of the old line is directly pushed to the splice but we need to ensure it is not an empty string. Before this commit an empty string was pushed to the splice.fix-textlinesmutator
parent
f7cd233069
commit
06f7124ead
|
@ -977,8 +977,9 @@ class TextLinesMutator {
|
|||
this._curLine += newLines.length;
|
||||
// insert the remaining chars from the "old" line (e.g. the line we were in
|
||||
// when we started to insert new lines)
|
||||
this._curSplice.push(theLine.substring(lineCol));
|
||||
this._curCol = 0; // TODO(doc) why is this not set to the length of last line?
|
||||
const remaining = theLine.substring(lineCol);
|
||||
if (remaining !== '') this._curSplice.push(remaining);
|
||||
this._curCol = 0;
|
||||
} else {
|
||||
this._curSplice.push(...newLines);
|
||||
this._curLine += newLines.length;
|
||||
|
|
|
@ -179,6 +179,11 @@ describe('easysync-mutations', function () {
|
|||
['insert', 'c'],
|
||||
], ['fun\n', 'c']);
|
||||
|
||||
runMutationTest(14, ['\n'], [
|
||||
['remove', 1, 1, '\n'],
|
||||
['insert', 'a'],
|
||||
['insert', 'c\n', 1],
|
||||
], ['ac\n']);
|
||||
it('mutatorHasMore', async function () {
|
||||
const lines = ['1\n', '2\n', '3\n', '4\n'];
|
||||
let mu;
|
||||
|
|
Loading…
Reference in New Issue