From eec012b24e8a39fef32631aab509d7e363f296ab Mon Sep 17 00:00:00 2001 From: nightwing Date: Thu, 20 Nov 2014 23:28:09 +0400 Subject: [PATCH] fix ignoring empty delta --- lib/ace/document.js | 2 +- lib/ace/document_test.js | 10 ++++++++++ lib/ace/worker/mirror.js | 8 ++++---- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/lib/ace/document.js b/lib/ace/document.js index a06e3e33..cc72bc63 100644 --- a/lib/ace/document.js +++ b/lib/ace/document.js @@ -570,7 +570,7 @@ var Document = function(textOrLines) { this.applyDelta = function(delta, doNotValidate) { var isInsert = delta.action == "insert"; // An empty range is a NOOP. - if (isInsert ? !delta.lines.length + if (isInsert ? delta.lines.length <= 1 && !delta.lines[0] : !Range.comparePoints(delta.start, delta.end)) return; diff --git a/lib/ace/document_test.js b/lib/ace/document_test.js index d7cc7ccb..ada56cd2 100644 --- a/lib/ace/document_test.js +++ b/lib/ace/document_test.js @@ -298,6 +298,16 @@ module.exports = { assert.equal(doc.$lines.length, 1); }, + "test: ignore empty delta": function() { + var doc = new Document(""); + doc.on("change", function() { + throw "should ignore empty delta"; + }) + doc.insert({row: 0, column: 0}, ""); + doc.insert({row: 1, column: 1}, ""); + doc.remove({start: {row: 1, column: 1}, end: {row: 1, column: 1}}); + }, + "test: inserting huge delta": function() { var doc = new Document(""); var val = ""; diff --git a/lib/ace/worker/mirror.js b/lib/ace/worker/mirror.js index 514d377f..ef6e2aa3 100644 --- a/lib/ace/worker/mirror.js +++ b/lib/ace/worker/mirror.js @@ -18,11 +18,11 @@ var Mirror = exports.Mirror = function(sender) { doc.applyDeltas(data); } else { for (var i = 0; i < data.length; i += 2) { - if (Array.isArray(data[i+1])) + if (Array.isArray(data[i+1])) { var d = {action: "insert", start: data[i], lines: data[i+1]}; - else - var d = {action: "remove", start: data[i],end: data[i+1]}; - + } else { + var d = {action: "remove", start: data[i], end: data[i+1]}; + } doc.applyDelta(d, true); } }