fix delta events
This commit is contained in:
parent
7ccd377f13
commit
87bfb14552
1 changed files with 9 additions and 4 deletions
|
|
@ -44,6 +44,8 @@ var Selection = require("ace/selection").Selection;
|
||||||
var TextMode = require("ace/mode/text").Mode;
|
var TextMode = require("ace/mode/text").Mode;
|
||||||
var Range = require("ace/range").Range;
|
var Range = require("ace/range").Range;
|
||||||
|
|
||||||
|
var NO_CHANGE_DELTAS = {};
|
||||||
|
|
||||||
var Document = function(text, mode) {
|
var Document = function(text, mode) {
|
||||||
|
|
||||||
this.modified = true;
|
this.modified = true;
|
||||||
|
|
@ -511,17 +513,20 @@ var Document = function(text, mode) {
|
||||||
args.push.apply(args, lines);
|
args.push.apply(args, lines);
|
||||||
this.$lines.splice.apply(this.$lines, args);
|
this.$lines.splice.apply(this.$lines, args);
|
||||||
|
|
||||||
|
var nl = this.$getNewLineCharacter();
|
||||||
var delta = {
|
var delta = {
|
||||||
action: "insertText",
|
action: "insertText",
|
||||||
range: new Range(row, 0, row + lines.length, 0),
|
range: new Range(row, 0, row + lines.length, 0),
|
||||||
text: lines.join(nl) + nl
|
text: lines.join(nl) + nl
|
||||||
};
|
};
|
||||||
if (!fromUndo && this.$undoManager) {
|
if (!fromUndo && this.$undoManager) {
|
||||||
var nl = this.$getNewLineCharacter();
|
|
||||||
this.$deltas.push(delta);
|
this.$deltas.push(delta);
|
||||||
this.$informUndoManager.schedule();
|
this.$informUndoManager.schedule();
|
||||||
}
|
}
|
||||||
this._dispatchEvent("changeDelta", { data: delta });
|
|
||||||
|
if (fromUndo !== NO_CHANGE_DELTAS) {
|
||||||
|
this._dispatchEvent("changeDelta", { data: delta });
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
this.$insert = function(position, text, fromUndo) {
|
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);
|
var lastLine = newLines[newLines.length - 1] + line.substring(position.column);
|
||||||
|
|
||||||
this.$lines[position.row] = firstLine;
|
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) {
|
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 = {
|
var end = {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue