splitSelectionIntolines was toggling block selection instead

This commit is contained in:
nightwing 2012-04-26 23:49:32 +04:00
commit e34fb3668a
2 changed files with 70 additions and 28 deletions

View file

@ -193,6 +193,37 @@ var EditSession = require("./edit_session").EditSession;
}; };
this.splitIntoLines = function () { this.splitIntoLines = function () {
if (this.rangeCount > 1) {
var ranges = this.rangeList.ranges;
var lastRange = ranges[ranges.length - 1];
var range = Range.fromPoints(ranges[0].start, lastRange.end);
this.toSingleRange();
this.setSelectionRange(range, lastRange.cursor == lastRange.start);
} else {
var range = this.getRange();
var startRow = range.start.row;
var endRow = range.end.row;
if (startRow == endRow)
return;
var rectSel = [];
var r = this.getLineRange(startRow, true);
r.start.column = range.start.column;
rectSel.push(r);
for (var i = startRow + 1; i < endRow; i++)
rectSel.push(this.getLineRange(i, true));
r = this.getLineRange(endRow, true);
r.end.column = range.end.column;
rectSel.push(r);
rectSel.forEach(this.addRange, this);
}
};
this.toggleBlockSelection = function () {
if (this.rangeCount > 1) { if (this.rangeCount > 1) {
var ranges = this.rangeList.ranges; var ranges = this.rangeList.ranges;
var lastRange = ranges[ranges.length - 1]; var lastRange = ranges[ranges.length - 1];

View file

@ -243,10 +243,17 @@ var Selection = function(session) {
this.$moveSelection(this.moveCursorWordLeft); this.$moveSelection(this.moveCursorWordLeft);
}; };
this.getWordRange = function(row, column) {
if (typeof column == "undefined") {
var cursor = row || this.selectionLead;
row = cursor.row;
column = cursor.column;
}
return this.session.getWordRange(row, column);
};
this.selectWord = function() { this.selectWord = function() {
var cursor = this.getCursor(); this.setSelectionRange(this.getWordRange());
var range = this.session.getWordRange(cursor.row, cursor.column);
this.setSelectionRange(range);
}; };
// Selects a word including its right whitespace // Selects a word including its right whitespace
@ -256,8 +263,8 @@ var Selection = function(session) {
this.setSelectionRange(range); this.setSelectionRange(range);
}; };
this.selectLine = function() { this.getLineRange = function(row, excludeLastChar) {
var rowStart = this.selectionLead.row; var rowStart = typeof row == "number" ? row : this.selectionLead.row;
var rowEnd; var rowEnd;
var foldLine = this.session.getFoldLine(rowStart); var foldLine = this.session.getFoldLine(rowStart);
@ -267,10 +274,14 @@ var Selection = function(session) {
} else { } else {
rowEnd = rowStart; rowEnd = rowStart;
} }
this.setSelectionAnchor(rowStart, 0); if (excludeLastChar)
this.$moveSelection(function() { return new Range(rowStart, 0, rowEnd, this.session.getLine(rowEnd).length);
this.moveCursorTo(rowEnd + 1, 0); else
}); return new Range(rowStart, 0, rowEnd + 1, 0);
};
this.selectLine = function() {
this.setSelectionRange(this.getLineRange());
}; };
this.moveCursorUp = function() { this.moveCursorUp = function() {