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.
This commit is contained in:
webzwo0i 2021-10-31 00:17:48 +02:00 committed by SamTV12345
parent 01b04a6f92
commit f6235ce7a0
2 changed files with 8 additions and 2 deletions

View file

@ -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;

View file

@ -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;