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
webzwo0i 2021-10-31 00:17:48 +02:00 committed by Richard Hansen
parent f7cd233069
commit 06f7124ead
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;