vendor/assets/javascripts/codemirror/addons/merge/merge.js in codemirror-rails-3.23 vs vendor/assets/javascripts/codemirror/addons/merge/merge.js in codemirror-rails-3.24

- old
+ new

@@ -44,10 +44,18 @@ this.forceUpdate("full"); } } }; + function ensureDiff(dv) { + if (dv.diffOutOfDate) { + dv.diff = getDiff(dv.orig.getValue(), dv.edit.getValue()); + dv.diffOutOfDate = false; + CodeMirror.signal(dv.edit, "updateDiff", dv.diff); + } + } + function registerUpdate(dv) { var edit = {from: 0, to: 0, marked: []}; var orig = {from: 0, to: 0, marked: []}; var debounceChange; function update(mode) { @@ -56,15 +64,11 @@ clear(dv.copyButtons); clearMarks(dv.edit, edit.marked, dv.classes); clearMarks(dv.orig, orig.marked, dv.classes); edit.from = edit.to = orig.from = orig.to = 0; } - if (dv.diffOutOfDate) { - dv.diff = getDiff(dv.orig.getValue(), dv.edit.getValue()); - dv.diffOutOfDate = false; - CodeMirror.signal(dv.edit, "updateDiff", dv.diff); - } + ensureDiff(dv); if (dv.showDifferences) { updateMarks(dv.edit, dv.diff, edit, DIFF_INSERT, dv.classes); updateMarks(dv.orig, dv.diff, orig, DIFF_DELETE, dv.classes); } drawConnectors(dv); @@ -353,14 +357,14 @@ setShowDifferences: function(val) { if (this.right) this.right.setShowDifferences(val); if (this.left) this.left.setShowDifferences(val); }, rightChunks: function() { - return this.right && getChunks(this.right.diff); + return this.right && getChunks(this.right); }, leftChunks: function() { - return this.left && getChunks(this.left.diff); + return this.left && getChunks(this.left); } }; function asString(obj) { if (typeof obj == "string") return obj; @@ -407,12 +411,13 @@ } if (startEdit <= edit.line || startOrig <= orig.line) f(startOrig, orig.line + 1, startEdit, edit.line + 1); } - function getChunks(diff) { + function getChunks(dv) { + ensureDiff(dv); var collect = []; - iterateChunks(diff, function(topOrig, botOrig, topEdit, botEdit) { + iterateChunks(dv.diff, function(topOrig, botOrig, topEdit, botEdit) { collect.push({origFrom: topOrig, origTo: botOrig, editFrom: topEdit, editTo: botEdit}); }); return collect; }