diff --git a/lib/ace/document.js b/lib/ace/document.js index 0aba7bd4..b11f604e 100644 --- a/lib/ace/document.js +++ b/lib/ace/document.js @@ -511,15 +511,17 @@ var Document = function(text, mode) { args.push.apply(args, lines); this.$lines.splice.apply(this.$lines, args); + var delta = { + action: "insertText", + range: new Range(row, 0, row + lines.length, 0), + text: lines.join(nl) + nl + }; if (!fromUndo && this.$undoManager) { var nl = this.$getNewLineCharacter(); - this.$deltas.push({ - action: "insertText", - range: new Range(row, 0, row + lines.length, 0), - text: lines.join(nl) + nl - }); + this.$deltas.push(delta); this.$informUndoManager.schedule(); } + this._dispatchEvent("changeDelta", { data: delta }); }, this.$insert = function(position, text, fromUndo) { @@ -571,14 +573,16 @@ var Document = function(text, mode) { }; } + var delta = { + action: "insertText", + range: Range.fromPoints(position, end), + text: text + }; if (!fromUndo && this.$undoManager) { - this.$deltas.push({ - action: "insertText", - range: Range.fromPoints(position, end), - text: text - }); + this.$deltas.push(delta); this.$informUndoManager.schedule(); } + this._dispatchEvent("changeDelta", { data: delta }); return end; }; @@ -623,13 +627,13 @@ var Document = function(text, mode) { if (range.isEmpty()) return; + var delta = { + action: "removeText", + range: range.clone(), + text: this.getTextRange(range) + }; if (!fromUndo && this.$undoManager) { - var nl = this.$getNewLineCharacter(); - this.$deltas.push({ - action: "removeText", - range: range.clone(), - text: this.getTextRange(range) - }); + this.$deltas.push(delta); this.$informUndoManager.schedule(); } @@ -645,6 +649,8 @@ var Document = function(text, mode) { this.$lines.splice(firstRow, lastRow - firstRow + 1, row); else this.$lines.splice(firstRow, lastRow - firstRow + 1, ""); + + this._dispatchEvent("changeDelta", { data: delta }); return range.start; }; @@ -729,9 +735,9 @@ var Document = function(text, mode) { deleteRange.start.column = j; deleteRange.end.column = j + 1; } else { - deleteRange.start.column = 0; - deleteRange.end.column = j; - } + deleteRange.start.column = 0; + deleteRange.end.column = j; + } if (i == range.start.row) range.start.column -= deleteRange.end.column - deleteRange.start.column; if (i == range.end.row)