From 004a19855a6ca4c0636f48db28f0fb902cfe2ffc Mon Sep 17 00:00:00 2001 From: nightwing Date: Thu, 20 Nov 2014 23:23:46 +0400 Subject: [PATCH] do not throw for broken anchors since that can break editor --- lib/ace/anchor.js | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/lib/ace/anchor.js b/lib/ace/anchor.js index ff85c13b..39b78e0f 100644 --- a/lib/ace/anchor.js +++ b/lib/ace/anchor.js @@ -70,7 +70,6 @@ var Anchor = exports.Anchor = function(doc, row, column) { * @returns {Object} **/ this.getPosition = function() { - //process.exit(2) return this.$clipPositionToDocument(this.row, this.column); }; @@ -107,7 +106,7 @@ var Anchor = exports.Anchor = function(doc, row, column) { if (delta.start.row > this.row) return; - var point = this.$getTransformedPoint(delta, {row: this.row, column: this.column}); + var point = $getTransformedPoint(delta, {row: this.row, column: this.column}, this.$insertRight); this.setPosition(point.row, point.column, true); }; @@ -116,14 +115,13 @@ var Anchor = exports.Anchor = function(doc, row, column) { return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter); } - this.$getTransformedPoint = function (delta, point) { + function $getTransformedPoint(delta, point, moveIfEqual) { // Get delta info. - var moveIfEqual = this.$insertRight; - var deltaIsInsert = (delta.action == "insert") + 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. + var deltaStart = delta.start; + var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range. // DELTA AFTER POINT: No change needed. if ($pointsInOrder(point, deltaStart, moveIfEqual)) { @@ -142,14 +140,13 @@ 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."; + // TODO warn if delta.action != "remove" ? return { row: deltaStart.row, column: deltaStart.column }; - }; + } /** * Sets the anchor position to the specified row and column. If `noClip` is `true`, the position is not clipped.