From bfa4748b1b6dc1e15c2e4be3d61d57cd3666f868 Mon Sep 17 00:00:00 2001 From: Fabian Jakobs Date: Wed, 15 Dec 2010 18:40:46 +0100 Subject: [PATCH] add collapse lines in range --- lib/ace/editor.js | 11 +++-------- lib/ace/range.js | 7 +++++++ lib/ace/test/range_test.js | 14 ++++++++++++++ 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/lib/ace/editor.js b/lib/ace/editor.js index 0471196a..c8647636 100644 --- a/lib/ace/editor.js +++ b/lib/ace/editor.js @@ -715,16 +715,11 @@ var Editor =function(renderer, doc) { }; this.$getSelectedRows = function() { - var range = this.getSelectionRange(); - var firstRow = range.start.row; - var lastRow = range.end.row; - if (range.end.column == 0 && (range.start.row !== range.end.row)) { - lastRow -= 1; - } + var range = this.getSelectionRange().collapseRows(); return { - first: firstRow, - last: lastRow + first: range.start.row, + last: range.end.row }; }; diff --git a/lib/ace/range.js b/lib/ace/range.js index a818617a..ae49f04e 100644 --- a/lib/ace/range.js +++ b/lib/ace/range.js @@ -137,6 +137,13 @@ var Range = function(startRow, startColumn, endRow, endColumn) { this.clone = function() { return Range.fromPoints(this.start, this.end); }; + + this.collapseLines = function() { + if (this.end.column == 0) + return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row-1), 0) + else + return new Range(this.start.row, 0, this.end.row, 0) + }; this.toScreenRange = function(doc) { return new Range( diff --git a/lib/ace/test/range_test.js b/lib/ace/test/range_test.js index a590889a..471c6857 100644 --- a/lib/ace/test/range_test.js +++ b/lib/ace/test/range_test.js @@ -144,6 +144,20 @@ var Test = { var range = range.extend(6, 10); assert.range(range, 1, 4, 6, 10); + }, + + "test: collapse rows" : function() { + var range = new Range(0, 2, 1, 2); + assert.range(range.collapseRows(), 0, 0, 1, 0); + + var range = new Range(2, 2, 3, 1); + assert.range(range.collapseRows(), 2, 0, 3, 0); + + var range = new Range(2, 2, 3, 0); + assert.range(range.collapseRows(), 2, 0, 2, 0); + + var range = new Range(2, 0, 2, 0); + assert.range(range.collapseRows(), 2, 0, 2, 0); } };