diff --git a/lib/ace/anchor.js b/lib/ace/anchor.js index 421f9e5f..4511a4ce 100644 --- a/lib/ace/anchor.js +++ b/lib/ace/anchor.js @@ -111,14 +111,13 @@ var Anchor = exports.Anchor = function(doc, row, column) { } this.$getTransformedPoint = function (delta, point) { - // Get delta info. var moveIfEqual = this.$insertRight; - var deltaIsInsert = (delta.action == 'insert') - var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.range.end.row - delta.range.start.row); - var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.range.end.column - delta.range.start.column); - var deltaStart = delta.range.start; - var deltaEnd = (deltaIsInsert ? deltaStart : delta.range.end); // Collapse insert range. + var deltaIsInsert = (delta.action == "insert") + var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row); + var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column); + var deltaStart = delta.start; + var deltaEnd = (deltaIsInsert ? deltaStart : delta.end); // Collapse insert range. // DELTA AFTER POINT: No change needed. if ($pointsInOrder(point, deltaStart, moveIfEqual)) { @@ -137,8 +136,8 @@ var Anchor = exports.Anchor = function(doc, row, column) { } // DELTA ENVELOPS POINT (delete only): Move point to delta start. - if (delta.action != 'remove') - throw 'Delete action expected.'; + if (delta.action != "remove") + throw "Delete action expected."; return { row: deltaStart.row, @@ -181,7 +180,7 @@ var Anchor = exports.Anchor = function(doc, row, column) { }; /** - * When called, the `'change'` event listener is removed. + * When called, the `"change"` event listener is removed. * **/ this.detach = function() { diff --git a/lib/ace/apply_delta.js b/lib/ace/apply_delta.js index 86bc89c6..3996920c 100644 --- a/lib/ace/apply_delta.js +++ b/lib/ace/apply_delta.js @@ -41,12 +41,12 @@ function splitLine (docLines, position) { function joinLineWithNext(docLines, row) { docLines[row] += docLines[row + 1]; - docLines.splice(row + 1, 1); + docLines.splice(row + 1, 1); } function throwDeltaError(delta, errorText){ - console.log('Invalid Delta:', delta); - throw 'Invalid Delta: ' + errorText; + console.log("Invalid Delta:", delta); + throw "Invalid Delta: " + errorText; } function positionInDocument(docLines, position) { @@ -57,32 +57,32 @@ function positionInDocument(docLines, position) { function validateDelta(docLines, delta) { // Validate action string. - if (delta.action != 'insert' && delta.action != 'remove') - throwDeltaError(delta, 'delta.action must be "insert" or "remove"'); + if (delta.action != "insert" && delta.action != "remove") + throwDeltaError(delta, "delta.action must be 'insert' or 'remove'"); // Validate lines type. if (!(delta.lines instanceof Array)) - throwDeltaError(delta, 'delta.lines must be an Array'); + throwDeltaError(delta, "delta.lines must be an Array"); // Validate range type. - if (!(delta.range instanceof Range)) - throwDeltaError(delta, 'delta.range must be an instance of the Range class'); + if (!delta.start || !delta.end) + throwDeltaError(delta, "delta.start/end must be an present"); // Validate that the start point is contained in the document. - var start = delta.range.start; - if (!positionInDocument(docLines, delta.range.start)) - throwDeltaError(delta, 'delta.range.start must be contained in document'); + var start = delta.start; + if (!positionInDocument(docLines, delta.start)) + throwDeltaError(delta, "delta.start must be contained in document"); // Validate that the end point is contained in the document (remove deltas only). - var end = delta.range.end; - if (delta.action == 'remove' && !positionInDocument(docLines, end)) - throwDeltaError(delta, 'delta.range.end must contained in document for "remove" actions'); + var end = delta.end; + if (delta.action == "remove" && !positionInDocument(docLines, end)) + throwDeltaError(delta, "delta.end must contained in document for 'remove' actions"); // Validate that the .range size matches the .lines size. var numRangeRows = end.row - start.row; var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0)); if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars) - throwDeltaError(delta, 'delta.range must match delta lines'); + throwDeltaError(delta, "delta.range must match delta lines"); } exports.applyDelta = function(docLines, delta, doNotValidate) { @@ -92,21 +92,21 @@ exports.applyDelta = function(docLines, delta, doNotValidate) { validateDelta(docLines, delta); // Apply delta. - if (delta.range.start.row == delta.range.end.row) { + if (delta.start.row == delta.end.row) { // Apply single-line delta. // Note: The multi-line code below correctly handle single-line // deltas too, but we need to short-circuit for speed. - var row = delta.range.start.row; - var startColumn = delta.range.start.column; - var endColumn = delta.range.end.column; + var row = delta.start.row; + var startColumn = delta.start.column; + var endColumn = delta.end.column; var line = docLines[row]; switch (delta.action) { - case 'insert': + case "insert": docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn); break; - case 'remove': + case "remove": docLines[row] = line.substring(0, startColumn) + line.substring(endColumn); break; } @@ -114,22 +114,21 @@ exports.applyDelta = function(docLines, delta, doNotValidate) { // Apply multi-line delta. switch (delta.action) { - - case 'insert': - splitLine(docLines, delta.range.start); - docLines.splice.apply(docLines, [delta.range.start.row + 1, 0].concat(delta.lines)); - joinLineWithNext(docLines, delta.range.start.row); - joinLineWithNext(docLines, delta.range.end.row); + case "insert": + splitLine(docLines, delta.start); + docLines.splice.apply(docLines, [delta.start.row + 1, 0].concat(delta.lines)); + joinLineWithNext(docLines, delta.start.row); + joinLineWithNext(docLines, delta.end.row); break; - case 'remove': - splitLine(docLines, delta.range.end); - splitLine(docLines, delta.range.start); + case "remove": + splitLine(docLines, delta.end); + splitLine(docLines, delta.start); docLines.splice( - delta.range.start.row + 1, // Where to start deleting - delta.range.end.row - delta.range.start.row + 1 // Num lines to delete. + delta.start.row + 1, // Where to start deleting + delta.end.row - delta.start.row + 1 // Num lines to delete. ); - joinLineWithNext(docLines, delta.range.start.row); + joinLineWithNext(docLines, delta.start.row); break; } } diff --git a/lib/ace/background_tokenizer.js b/lib/ace/background_tokenizer.js index 81ea4a0f..07862188 100644 --- a/lib/ace/background_tokenizer.js +++ b/lib/ace/background_tokenizer.js @@ -177,13 +177,12 @@ var BackgroundTokenizer = function(tokenizer, editor) { } this.$updateOnChange = function(delta) { - var range = delta.range; - var startRow = range.start.row; - var len = range.end.row - startRow; + var startRow = delta.start.row; + var len = delta.end.row - startRow; if (len === 0) { this.lines[startRow] = null; - } else if (delta.action == 'remove') { + } else if (delta.action == "remove") { this.lines.splice(startRow, len + 1, null); this.states.splice(startRow, len + 1, null); } else { diff --git a/lib/ace/commands/command_manager.js b/lib/ace/commands/command_manager.js index 72a9942d..537942ab 100644 --- a/lib/ace/commands/command_manager.js +++ b/lib/ace/commands/command_manager.js @@ -13,7 +13,7 @@ var EventEmitter = require("../lib/event_emitter").EventEmitter; /** * new CommandManager(platform, commands) - * @param {String} platform Identifier for the platform; must be either `'mac'` or `'win'` + * @param {String} platform Identifier for the platform; must be either `"mac"` or `"win"` * @param {Array} commands A list of commands * **/ @@ -33,7 +33,7 @@ oop.inherits(CommandManager, HashHandler); oop.implement(this, EventEmitter); this.exec = function(command, editor, args) { - if (typeof command === 'string') + if (typeof command === "string") command = this.commands[command]; if (!command) diff --git a/lib/ace/document.js b/lib/ace/document.js index 97d69968..43d1a73c 100644 --- a/lib/ace/document.js +++ b/lib/ace/document.js @@ -53,7 +53,7 @@ var Anchor = require("./anchor").Anchor; **/ var Document = function(textOrLines) { - this.$lines = ['']; + this.$lines = [""]; // There has to be one line at least in the document. If you pass an empty // string to the insert function, nothing will happen. Workaround. @@ -99,7 +99,7 @@ var Document = function(textOrLines) { }; /** - * Splits a string of text on any newline (`\n`) or carriage-return ('\r') characters. + * Splits a string of text on any newline (`\n`) or carriage-return (`\r`) characters. * * @method $split * @param {String} text The text to work with @@ -225,12 +225,9 @@ var Document = function(textOrLines) { this.getLinesForRange = function(range) { var lines; if (range.start.row == range.end.row) { - // Handle a single-line range. - lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)]; - + lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)]; } else { - // Handle a multi-line range. lines = this.getLines(range.start.row, range.end.row); lines[0] = (lines[0] || "").substring(range.start.column); @@ -254,7 +251,6 @@ var Document = function(textOrLines) { }; this.$getClippedRange = function(range) { - // Get Range object. if (!range instanceof Range) range = Range.fromPoints(range.start, range.end); @@ -267,16 +263,16 @@ var Document = function(textOrLines) { // Deprecated methods retained for backwards compatibility. this.insertLines = function(row, lines) { - console.warn('Use of document.insertLines is deprecated. Use the insertFullLines method instead.'); + console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."); return this.insertFullLines(row, lines); }; this.removeLines = function(firstRow, lastRow) { - console.warn('Use of document.removeLines is deprecated. Use the removeFullLines method instead.'); + console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."); return this.removeFullLines(firstRow, lastRow); }; this.insertNewLine = function(position) { - console.warn('Use of document.insertNewLine is deprecated. Use insertMergedLines(position, [\'\', \'\']) instead.'); - return this.insertMergedLines(position, ['', '']); + console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, [\'\', \'\']) instead."); + return this.insertMergedLines(position, ["", ""]); }; /** @@ -287,7 +283,6 @@ var Document = function(textOrLines) { * **/ this.insert = function(position, text) { - // Only detect new lines if the document has no line break yet. if (this.getLength() <= 1) this.$detectNewLine(text); @@ -296,7 +291,7 @@ var Document = function(textOrLines) { }; /** - * Inserts `text` into the `position` at the current row. This method also triggers the `'change'` event. + * Inserts `text` into the `position` at the current row. This method also triggers the `"change"` event. * * This differs from the `insert` method in two ways: * 1. This does NOT handle newline characters (single-line text only). @@ -310,7 +305,6 @@ var Document = function(textOrLines) { * ``` **/ this.insertInLine = function(position, text) { - // Calculate insertion range end point. this.$clipPosition(position); var endPoint = { @@ -318,10 +312,12 @@ var Document = function(textOrLines) { column : position.column + text.length }; + var range = Range.fromPoints(position, endPoint); // Apply delta (emits change). this.applyDelta({ action: "insert", - range: Range.fromPoints(position, endPoint), + start: range.start, + end: range.end, lines: [text] }, true /*doNotValidate*/); @@ -346,7 +342,7 @@ var Document = function(textOrLines) { **/ /** - * Inserts the elements in `lines` into the document as full lines (does not merge with existing line), starting at the row index given by `row`. This method also triggers the `'change'` event. + * Inserts the elements in `lines` into the document as full lines (does not merge with existing line), starting at the row index given by `row`. This method also triggers the `"change"` event. * @param {Number} row The index of the row to insert at * @param {Array} lines An array of strings * @returns {Object} Contains the final row and column, like this: @@ -368,11 +364,11 @@ var Document = function(textOrLines) { var column = 0; if (row < this.getLength()) { // Insert before the specified row. - lines = lines.concat(['']); + lines = lines.concat([""]); column = 0; } else { // Insert after the last row in the document. - lines = [''].concat(lines); + lines = [""].concat(lines); row--; column = this.$lines[row].length; } @@ -382,7 +378,7 @@ var Document = function(textOrLines) { }; /** - * Inserts the elements in `lines` into the document, starting at the position index given by `row`. This method also triggers the `'change'` event. + * Inserts the elements in `lines` into the document, starting at the position index given by `row`. This method also triggers the `"change"` event. * @param {Number} row The index of the row to insert at * @param {Array} lines An array of strings * @returns {Object} Contains the final row and column, like this: @@ -396,7 +392,6 @@ var Document = function(textOrLines) { * **/ this.insertMergedLines = function(position, lines) { - // Calculate insertion range end point. this.$clipPosition(position); var endPoint = { @@ -407,7 +402,8 @@ var Document = function(textOrLines) { // Apply delta (emits change). this.applyDelta({ action: "insert", - range: Range.fromPoints(position, endPoint), + start: position, + end: endPoint, lines: lines }); @@ -421,19 +417,19 @@ var Document = function(textOrLines) { * **/ this.remove = function(range) { - // Apply delta (emits change). range = this.$getClippedRange(range); this.applyDelta({ - action: 'remove', - range: range, + action: "remove", + start: range.start, + end: range.end, lines: this.getLinesForRange(range), }); - return range.start; + return range.start; }; /** - * Removes the specified columns from the `row`. This method also triggers the `'change'` event. + * Removes the specified columns from the `row`. This method also triggers the `"change"` event. * @param {Number} row The row to remove from * @param {Number} startColumn The column to start removing at * @param {Number} endColumn The column to stop removing at @@ -441,15 +437,15 @@ var Document = function(textOrLines) { * **/ this.removeInLine = function(row, startColumn, endColumn) { - // Calculate deleteion range. var range = new Range(row, startColumn, row, endColumn); range = this.$getClippedRange(range); // Apply delta (emits change). this.applyDelta({ - action: 'remove', - range: range, + action: "remove", + start: range.start, + end: range.end, lines: this.getLinesForRange(range), }, true /*doNotValidate*/); @@ -457,14 +453,13 @@ var Document = function(textOrLines) { }; /** - * Removes a range of full lines. This method also triggers the `'change'` event. + * Removes a range of full lines. This method also triggers the `"change"` event. * @param {Number} firstRow The first row to be removed * @param {Number} lastRow The last row to be removed * @returns {[String]} Returns all the removed lines. * **/ this.removeFullLines = function(firstRow, lastRow) { - // Clip to document. firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1); lastRow = Math.min(Math.max(0, lastRow ), this.getLength() - 1); @@ -485,8 +480,9 @@ var Document = function(textOrLines) { // Apply delta (emits change). this.applyDelta({ - action: 'remove', - range: range, + action: "remove", + start: range.start, + end: range.end, lines: this.getLinesForRange(range) }); @@ -495,18 +491,19 @@ var Document = function(textOrLines) { }; /** - * Removes the new line between `row` and the row immediately following it. This method also triggers the `'change'` event. + * Removes the new line between `row` and the row immediately following it. This method also triggers the `"change"` event. * @param {Number} row The row to check * **/ this.removeNewLine = function(row) { - if (row < this.getLength() - 1 && row >= 0) { + var range = new Range(row, this.getLine(row).length, row + 1, 0); // Apply delta (emits change). this.applyDelta({ - action: 'remove', - range: new Range(row, this.getLine(row).length, row + 1, 0), - lines: ['', ''] + action: "remove", + start: range.start, + end: range.end, + lines: ["", ""] }); } }; @@ -546,7 +543,7 @@ var Document = function(textOrLines) { /** * Applies all changes in `deltas` to the document. - * @param {Array} deltas An array of delta objects (can include 'insert' and 'remove' actions) + * @param {Array} deltas An array of delta objects (can include "insert" and "remove" actions) **/ this.applyDeltas = function(deltas) { for (var i=0; i=0; i--) { @@ -566,12 +563,11 @@ var Document = function(textOrLines) { /** * Applies `delta` to the document. - * @param {Object} delta A delta object (can include 'insert' and 'remove' actions) + * @param {Object} delta A delta object (can include "insert" and "remove" actions) **/ this.applyDelta = function(delta, doNotValidate) { - // An empty range is a NOOP. - if (delta.range.isEmpty()) + if (!Range.comparePoints(delta.start, delta.end)) return; // Split large insert deltas. This is necessary because: @@ -582,37 +578,40 @@ var Document = function(textOrLines) { // delta handling is too slow. If we make delete delta handling faster we can split all large deltas // as shown in https://gist.github.com/aldendaniels/8367109#file-document-snippet-js // If we do this, update validateDelta() to limit the number of lines in a delete delta. - var bIsInsert = delta.action == 'insert'; + var bIsInsert = delta.action == "insert"; while (bIsInsert && delta.lines.length > 65001) { - // Get split deltas. var lines = delta.lines.splice(0, 65000); - lines.push(''); + lines.push(""); + var range = new Range(delta.start.row, delta.start.column, + delta.start.row + 65000, 0) this.applyDelta({ action: delta.action, lines: lines, - range: new Range(delta.range.start.row, delta.range.start.column, - delta.range.start.row + 65000, 0) + start: range.start, + end: range.end, }); // Update remaining delta. - delta.range.start.row += 65000; - delta.range.start.column = 0; + delta.start.row += 65000; + delta.start.column = 0; } // Apply. applyDelta(this.$lines, delta, doNotValidate); - this._emit("change", { data: delta }); + this._emit("change", { data: delta }); }; /** * Reverts `delta` from the document. - * @param {Object} delta A delta object (can include 'insert' and 'remove' actions) + * @param {Object} delta A delta object (can include "insert" and "remove" actions) **/ this.revertDelta = function(delta) { + var range = Range.fromPoints(delta.start, delta.end); this.applyDelta({ - action: (delta.action == 'insert' ? 'remove' : 'insert'), - range: delta.range.clone(), + action: (delta.action == "insert" ? "remove" : "insert"), + start: range.start, + end: range.end, lines: delta.lines.slice() }); }; diff --git a/lib/ace/edit_session.js b/lib/ace/edit_session.js index 7cfa344c..4baa525f 100644 --- a/lib/ace/edit_session.js +++ b/lib/ace/edit_session.js @@ -253,7 +253,7 @@ var EditSession = function(text, mode) { var delta = e.data; this.$modified = true; - this.$resetRowCache(delta.range.start.row); + this.$resetRowCache(delta.start.row); var removedFolds = this.$updateInternalDataOnChange(e); if (!this.$fromUndo && this.$undoManager && !delta.ignore) { @@ -1247,30 +1247,29 @@ var EditSession = function(text, mode) { var range, point; var lastDeltaIsInsert = false; if (isInsert(delta)) { - range = Range.fromPoints(delta.range.start, delta.range.end); + range = Range.fromPoints(delta.start, delta.end); lastDeltaIsInsert = true; } else { - range = Range.fromPoints(delta.range.start, delta.range.start); + range = Range.fromPoints(delta.start, delta.start); lastDeltaIsInsert = false; } for (var i = 1; i < deltas.length; i++) { delta = deltas[i]; if (isInsert(delta)) { - point = delta.range.start; + point = delta.start; if (range.compare(point.row, point.column) == -1) { - range.setStart(delta.range.start); + range.setStart(point); } - point = delta.range.end; + point = delta.end; if (range.compare(point.row, point.column) == 1) { - range.setEnd(delta.range.end); + range.setEnd(point); } lastDeltaIsInsert = true; } else { - point = delta.range.start; + point = delta.start; if (range.compare(point.row, point.column) == -1) { - range = - Range.fromPoints(delta.range.start, delta.range.start); + range = Range.fromPoints(delta.start, delta.start); } lastDeltaIsInsert = false; } @@ -1676,8 +1675,8 @@ var EditSession = function(text, mode) { this.$updateInternalDataOnChange = function(e) { var useWrapMode = this.$useWrapMode; var action = e.data.action; - var start = e.data.range.start; - var end = e.data.range.end; + var start = e.data.start; + var end = e.data.end; var firstRow = start.row; var lastRow = end.row; var len = lastRow - firstRow; @@ -1685,11 +1684,11 @@ var EditSession = function(text, mode) { this.$updating = true; if (len != 0) { - if (action == 'remove') { + if (action == "remove") { this[useWrapMode ? "$wrapData" : "$rowLengthCache"].splice(firstRow, len); var foldLines = this.$foldData; - removedFolds = this.getFoldsInRange(e.data.range); + removedFolds = this.getFoldsInRange(e.data); this.removeFolds(removedFolds); var foldLine = this.getFoldLine(end.row); @@ -1759,10 +1758,10 @@ var EditSession = function(text, mode) { } else { // Realign folds. E.g. if you add some new chars before a fold, the // fold should "move" to the right. - len = Math.abs(e.data.range.start.column - e.data.range.end.column); - if (action == 'remove') { + len = Math.abs(e.data.start.column - e.data.end.column); + if (action == "remove") { // Get all the folds in the change range and remove them. - removedFolds = this.getFoldsInRange(e.data.range); + removedFolds = this.getFoldsInRange(e.data); this.removeFolds(removedFolds); len = -len; diff --git a/lib/ace/edit_session/folding.js b/lib/ace/edit_session/folding.js index 25adc909..857382d8 100644 --- a/lib/ace/edit_session/folding.js +++ b/lib/ace/edit_session/folding.js @@ -830,9 +830,8 @@ function Folding() { this.updateFoldWidgets = function(e) { var delta = e.data; - var range = delta.range; - var firstRow = range.start.row; - var len = range.end.row - firstRow; + var firstRow = delta.start.row; + var len = delta.end.row - firstRow; if (len === 0) { this.foldWidgets[firstRow] = null; diff --git a/lib/ace/editor.js b/lib/ace/editor.js index 6b046a89..16d79785 100644 --- a/lib/ace/editor.js +++ b/lib/ace/editor.js @@ -607,11 +607,10 @@ var Editor = function(renderer, session) { * **/ this.onDocumentChange = function(e) { - // Rerender and emit "change" event. - var range = e.data.range; - var lastRow = (range.start.row == range.end.row ? range.end.row : Infinity); - this.renderer.updateLines(range.start.row, lastRow); + var delta = e.data; + var lastRow = (delta.start.row == delta.end.row ? delta.end.row : Infinity); + this.renderer.updateLines(delta.start.row, lastRow); this._signal("change", e); // Update cursor because tab characters can influence the cursor position. diff --git a/lib/ace/ext/elastic_tabstops_lite.js b/lib/ace/ext/elastic_tabstops_lite.js index 9901c5df..ce5e55f9 100644 --- a/lib/ace/ext/elastic_tabstops_lite.js +++ b/lib/ace/ext/elastic_tabstops_lite.js @@ -45,7 +45,7 @@ var ElasticTabstopsLite = function(editor) { recordChanges = true; }; this.onChange = function(e) { - var range = e.data.range + var range = e.data; if (recordChanges) { if (changedRows.indexOf(range.start.row) == -1) changedRows.push(range.start.row); diff --git a/lib/ace/keyboard/vim/maps/operators.js b/lib/ace/keyboard/vim/maps/operators.js index 067562a0..73c6922e 100644 --- a/lib/ace/keyboard/vim/maps/operators.js +++ b/lib/ace/keyboard/vim/maps/operators.js @@ -94,11 +94,9 @@ module.exports = { editor.removeLines(); util.insertMode(editor); } - break; default: if (range) { - // range.end.column ++; editor.session.remove(range); util.insertMode(editor); diff --git a/lib/ace/layer/gutter.js b/lib/ace/layer/gutter.js index 45c34565..59aa35fd 100644 --- a/lib/ace/layer/gutter.js +++ b/lib/ace/layer/gutter.js @@ -103,9 +103,8 @@ var Gutter = function(parentEl) { if (!this.$annotations.length) return; var delta = e.data; - var range = delta.range; - var firstRow = range.start.row; - var len = range.end.row - firstRow; + var firstRow = delta.start.row; + var len = delta.end.row - firstRow; if (len === 0) { // do nothing } else if (delta.action == 'remove') { diff --git a/lib/ace/lib/lang.js b/lib/ace/lib/lang.js index d6a98149..863bbb55 100644 --- a/lib/ace/lib/lang.js +++ b/lib/ace/lib/lang.js @@ -150,7 +150,6 @@ exports.getMatchOffsets = function(string, regExp) { /* deprecated */ exports.deferredCall = function(fcn) { - var timer = null; var callback = function() { timer = null; diff --git a/lib/ace/line_widgets.js b/lib/ace/line_widgets.js index 651f038d..185f6de4 100644 --- a/lib/ace/line_widgets.js +++ b/lib/ace/line_widgets.js @@ -119,9 +119,8 @@ function LineWidgets(session) { if (!lineWidgets) return; var delta = e.data; - var range = delta.range; - var startRow = range.start.row; - var len = range.end.row - startRow; + var startRow = delta.start.row; + var len = delta.end.row - startRow; if (len === 0) { // return diff --git a/lib/ace/undomanager.js b/lib/ace/undomanager.js index bd95bae9..71b4ba65 100644 --- a/lib/ace/undomanager.js +++ b/lib/ace/undomanager.js @@ -178,29 +178,31 @@ var UndoManager = function() { function $serializeDelta(delta){ return { action: delta.action, - range: delta.range, - lines: (delta.lines.length == 1 ? null : delta.lines), - text: (delta.lines.length == 1 ? delta.lines[0] : null ), + start: delta.start, + end: delta.end, + lines: delta.lines.length == 1 ? null : delta.lines, + text: delta.lines.length == 1 ? delta.lines[0] : null, }; } function $deserializeDelta(delta) { return { action: delta.action, - range: delta.range, - lines: (delta.text === null ? delta.lines : [delta.text]) + start: delta.start, + end: delta.end, + lines: delta.lines || [delta.text] }; } function cloneDeltaSetsObj(deltaSets_old, fnGetModifiedDelta) { var deltaSets_new = new Array(deltaSets_old.length); - for (var i in deltaSets_old) { + for (var i = 0; i < deltaSets_old.length; i++) { var deltaSet_old = deltaSets_old[i]; var deltaSet_new = { group: deltaSet_old.group, deltas: new Array(deltaSet_old.length)}; - for (var i_ in deltaSet_old.deltas) { - var delta_old = deltaSet_old.deltas[i_]; - deltaSet_new.deltas[i_] = fnGetModifiedDelta(delta_old); + for (var j = 0; j < deltaSet_old.deltas.length; j++) { + var delta_old = deltaSet_old.deltas[j]; + deltaSet_new.deltas[j] = fnGetModifiedDelta(delta_old); } deltaSets_new[i] = deltaSet_new; diff --git a/lib/ace/worker/mirror.js b/lib/ace/worker/mirror.js index 2f33fea6..8254f205 100644 --- a/lib/ace/worker/mirror.js +++ b/lib/ace/worker/mirror.js @@ -13,16 +13,7 @@ var Mirror = exports.Mirror = function(sender) { var _self = this; sender.on("change", function(e) { - - // Convert delta.range back into a Range instance since - // window.onMessage loses non-primitive data. See http://jsfiddle.net/nqJfw/1/. - var deltas = e.data; - for (var i in deltas) { - var delta = deltas[i]; - delta.range = Range.fromPoints(delta.range.start, delta.range.end); - } - - doc.applyDeltas(deltas); + doc.applyDeltas(e.data); if (_self.$timeout) return deferredUpdate.schedule(_self.$timeout); _self.onUpdate();