diff --git a/lib/ace/document.js b/lib/ace/document.js index b11f604e..fe8f0284 100644 --- a/lib/ace/document.js +++ b/lib/ace/document.js @@ -44,6 +44,8 @@ var Selection = require("ace/selection").Selection; var TextMode = require("ace/mode/text").Mode; var Range = require("ace/range").Range; +var NO_CHANGE_DELTAS = {}; + var Document = function(text, mode) { this.modified = true; @@ -511,17 +513,20 @@ var Document = function(text, mode) { args.push.apply(args, lines); this.$lines.splice.apply(this.$lines, args); + var nl = this.$getNewLineCharacter(); 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(delta); this.$informUndoManager.schedule(); } - this._dispatchEvent("changeDelta", { data: delta }); + + if (fromUndo !== NO_CHANGE_DELTAS) { + this._dispatchEvent("changeDelta", { data: delta }); + } }, this.$insert = function(position, text, fromUndo) { @@ -561,10 +566,10 @@ var Document = function(text, mode) { var lastLine = newLines[newLines.length - 1] + line.substring(position.column); this.$lines[position.row] = firstLine; - this.$insertLines(position.row + 1, [lastLine], true); + this.$insertLines(position.row + 1, [lastLine], NO_CHANGE_DELTAS); if (newLines.length > 2) { - this.$insertLines(position.row + 1, newLines.slice(1, -1), true); + this.$insertLines(position.row + 1, newLines.slice(1, -1), NO_CHANGE_DELTAS); } var end = {