Add support for folded lines in Selection.selectLine
This commit is contained in:
parent
825cf26478
commit
61fc8d04c4
3 changed files with 40 additions and 6 deletions
|
|
@ -1268,7 +1268,12 @@ var EditSession = function(text, mode) {
|
||||||
this.getDocumentLastRowColumn = function(docRow, docColumn) {
|
this.getDocumentLastRowColumn = function(docRow, docColumn) {
|
||||||
var screenRow = this.documentToScreenRow(docRow, docColumn);
|
var screenRow = this.documentToScreenRow(docRow, docColumn);
|
||||||
return this.getScreenLastRowColumn(screenRow);
|
return this.getScreenLastRowColumn(screenRow);
|
||||||
}
|
};
|
||||||
|
|
||||||
|
this.getDocumentLastRowColumnPosition = function(docRow, docColumn) {
|
||||||
|
var screenRow = this.documentToScreenRow(docRow, docColumn);
|
||||||
|
return this.screenToDocumentPosition(screenRow, Number.MAX_VALUE / 10);
|
||||||
|
};
|
||||||
|
|
||||||
this.getRowSplitData = function(row) {
|
this.getRowSplitData = function(row) {
|
||||||
if (!this.$useWrapMode) {
|
if (!this.$useWrapMode) {
|
||||||
|
|
|
||||||
|
|
@ -371,7 +371,22 @@ function Folding() {
|
||||||
}
|
}
|
||||||
}.bind(this), endRow, endColumn);
|
}.bind(this), endRow, endColumn);
|
||||||
return textLine;
|
return textLine;
|
||||||
}
|
};
|
||||||
|
|
||||||
|
this.getDisplayLine = function(row, endColumn) {
|
||||||
|
var foldLine = this.getFoldLine(row);
|
||||||
|
|
||||||
|
if (!foldLine) {
|
||||||
|
if (endColumn == null) {
|
||||||
|
return this.doc.$lines[row];
|
||||||
|
} else {
|
||||||
|
var line = this.doc.$lines[row];
|
||||||
|
return line.substring(endColumn);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return this.getFoldDisplayLine(foldLine, row, endColumn);
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.Folding = Folding;
|
exports.Folding = Folding;
|
||||||
|
|
|
||||||
|
|
@ -247,9 +247,19 @@ var Selection = function(session) {
|
||||||
};
|
};
|
||||||
|
|
||||||
this.selectLine = function() {
|
this.selectLine = function() {
|
||||||
this.setSelectionAnchor(this.selectionLead.row, 0);
|
var rowStart = this.selectionLead.row;
|
||||||
|
var rowEnd;
|
||||||
|
|
||||||
|
var foldLine = this.session.getFoldLine(rowStart);
|
||||||
|
if (foldLine) {
|
||||||
|
rowStart = foldLine.start.row;
|
||||||
|
rowEnd = foldLine.end.row;
|
||||||
|
} else {
|
||||||
|
rowEnd = rowStart;
|
||||||
|
}
|
||||||
|
this.setSelectionAnchor(rowStart, 0);
|
||||||
this.$moveSelection(function() {
|
this.$moveSelection(function() {
|
||||||
this.moveCursorTo(this.selectionLead.row + 1, 0);
|
this.moveCursorTo(rowEnd + 1, 0);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -310,7 +320,6 @@ var Selection = function(session) {
|
||||||
var beforeCursor = this.doc.getLine(row).slice(firstRowColumn, column);
|
var beforeCursor = this.doc.getLine(row).slice(firstRowColumn, column);
|
||||||
var leadingSpace = beforeCursor.match(/^\s*/);
|
var leadingSpace = beforeCursor.match(/^\s*/);
|
||||||
if (leadingSpace[0].length == 0) {
|
if (leadingSpace[0].length == 0) {
|
||||||
var lastRowColumn = this.session.getDocumentLastRowColumn(row, column);
|
|
||||||
leadingSpace = this.doc.getLine(row).
|
leadingSpace = this.doc.getLine(row).
|
||||||
substring(firstRowColumn, lastRowColumn).
|
substring(firstRowColumn, lastRowColumn).
|
||||||
match(/^\s*/);
|
match(/^\s*/);
|
||||||
|
|
@ -324,7 +333,12 @@ var Selection = function(session) {
|
||||||
|
|
||||||
this.moveCursorLineEnd = function() {
|
this.moveCursorLineEnd = function() {
|
||||||
var lead = this.selectionLead;
|
var lead = this.selectionLead;
|
||||||
this.moveCursorTo(lead.row, this.session.getDocumentLastRowColumn(lead.row, lead.column));
|
var lastRowColumnPosition =
|
||||||
|
this.session.getDocumentLastRowColumnPosition(lead.row, lead.column);
|
||||||
|
this.moveCursorTo(
|
||||||
|
lastRowColumnPosition.row,
|
||||||
|
lastRowColumnPosition.column
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
this.moveCursorFileEnd = function() {
|
this.moveCursorFileEnd = function() {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue