|
46 | 46 | } |
47 | 47 | }; |
48 | 48 |
|
| 49 | + function ensureDiff(dv) { |
| 50 | + if (dv.diffOutOfDate) { |
| 51 | + dv.diff = getDiff(dv.orig.getValue(), dv.edit.getValue()); |
| 52 | + dv.diffOutOfDate = false; |
| 53 | + CodeMirror.signal(dv.edit, "updateDiff", dv.diff); |
| 54 | + } |
| 55 | + } |
| 56 | + |
49 | 57 | function registerUpdate(dv) { |
50 | 58 | var edit = {from: 0, to: 0, marked: []}; |
51 | 59 | var orig = {from: 0, to: 0, marked: []}; |
|
58 | 66 | clearMarks(dv.orig, orig.marked, dv.classes); |
59 | 67 | edit.from = edit.to = orig.from = orig.to = 0; |
60 | 68 | } |
61 | | - if (dv.diffOutOfDate) { |
62 | | - dv.diff = getDiff(dv.orig.getValue(), dv.edit.getValue()); |
63 | | - dv.diffOutOfDate = false; |
64 | | - CodeMirror.signal(dv.edit, "updateDiff", dv.diff); |
65 | | - } |
| 69 | + ensureDiff(dv); |
66 | 70 | if (dv.showDifferences) { |
67 | 71 | updateMarks(dv.edit, dv.diff, edit, DIFF_INSERT, dv.classes); |
68 | 72 | updateMarks(dv.orig, dv.diff, orig, DIFF_DELETE, dv.classes); |
|
355 | 359 | if (this.left) this.left.setShowDifferences(val); |
356 | 360 | }, |
357 | 361 | rightChunks: function() { |
358 | | - return this.right && getChunks(this.right.diff); |
| 362 | + return this.right && getChunks(this.right); |
359 | 363 | }, |
360 | 364 | leftChunks: function() { |
361 | | - return this.left && getChunks(this.left.diff); |
| 365 | + return this.left && getChunks(this.left); |
362 | 366 | } |
363 | 367 | }; |
364 | 368 |
|
|
409 | 413 | f(startOrig, orig.line + 1, startEdit, edit.line + 1); |
410 | 414 | } |
411 | 415 |
|
412 | | - function getChunks(diff) { |
| 416 | + function getChunks(dv) { |
| 417 | + ensureDiff(dv); |
413 | 418 | var collect = []; |
414 | | - iterateChunks(diff, function(topOrig, botOrig, topEdit, botEdit) { |
| 419 | + iterateChunks(dv.diff, function(topOrig, botOrig, topEdit, botEdit) { |
415 | 420 | collect.push({origFrom: topOrig, origTo: botOrig, |
416 | 421 | editFrom: topEdit, editTo: botEdit}); |
417 | 422 | }); |
|
0 commit comments