diff --git a/lib/ace/editor.js b/lib/ace/editor.js index 387757d6..98d82c48 100644 --- a/lib/ace/editor.js +++ b/lib/ace/editor.js @@ -910,14 +910,24 @@ var Editor = function(renderer, session) { this.$moveLines = function(mover) { var rows = this.$getSelectedRows(); + var selection = this.selection; + if (!selection.isMultiLine()) { + var range = selection.getRange(); + var reverse = selection.isBackwards(); + } var linesMoved = mover.call(this, rows.first, rows.last); - var selection = this.selection; - selection.setSelectionAnchor(rows.last+linesMoved+1, 0); - selection.$moveSelection(function() { - selection.moveCursorTo(rows.first+linesMoved, 0); - }); + if (range) { + range.start.row += linesMoved; + range.end.row += linesMoved; + selection.setSelectionRange(range, reverse); + } else { + selection.setSelectionAnchor(rows.last+linesMoved+1, 0); + selection.$moveSelection(function() { + selection.moveCursorTo(rows.first+linesMoved, 0); + }); + } }; this.$getSelectedRows = function() {