From 09d0044e1ec0193c09a5680f0826cdb8efbc8488 Mon Sep 17 00:00:00 2001 From: nightwing Date: Thu, 11 Jul 2013 17:35:29 +0400 Subject: [PATCH] fix undo selection range after delete --- lib/ace/edit_session.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/ace/edit_session.js b/lib/ace/edit_session.js index cc34ce6f..69938b6f 100644 --- a/lib/ace/edit_session.js +++ b/lib/ace/edit_session.js @@ -1216,7 +1216,7 @@ var EditSession = function(text, mode) { var range, point; var lastDeltaIsInsert = false; if (isInsert(delta)) { - range = delta.range.clone(); + range = Range.fromPoints(delta.range.start, delta.range.end); lastDeltaIsInsert = true; } else { range = Range.fromPoints(delta.range.start, delta.range.start); @@ -1248,6 +1248,11 @@ var EditSession = function(text, mode) { // Check if this range and the last undo range has something in common. // If true, merge the ranges. if (lastUndoRange != null) { + if (Range.comparePoints(lastUndoRange.start, range.start) == 0) { + lastUndoRange.start.column += range.end.column - range.start.column; + lastUndoRange.end.column += range.end.column - range.start.column; + } + var cmp = lastUndoRange.compareRange(range); if (cmp == 1) { range.setStart(lastUndoRange.start);