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