splitSelectionIntolines was toggling block selection instead
This commit is contained in:
parent
907b46aed1
commit
e34fb3668a
2 changed files with 70 additions and 28 deletions
|
|
@ -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];
|
||||||
|
|
|
||||||
|
|
@ -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() {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue