mirror of
https://github.com/ether/etherpad-lite.git
synced 2025-01-31 19:02:59 +01:00
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:
parent
01b04a6f92
commit
f6235ce7a0
2 changed files with 8 additions and 2 deletions
|
@ -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 a new issue