fix foldAll
This commit is contained in:
parent
3eef5f0a63
commit
3a23eacda2
1 changed files with 11 additions and 4 deletions
|
|
@ -272,7 +272,8 @@ function Folding() {
|
|||
var endColumn = fold.end.column;
|
||||
|
||||
// --- Some checking ---
|
||||
if (startRow == endRow && endColumn - startColumn < 2)
|
||||
if (!(startRow < endRow ||
|
||||
startRow == endRow && startColumn < endColumn - 2))
|
||||
throw "The range has to be at least 2 characters width";
|
||||
|
||||
var startFold = this.getFoldAt(startRow, startColumn, 1);
|
||||
|
|
@ -627,19 +628,25 @@ function Folding() {
|
|||
depth = 100000; // JSON.stringify doesn't hanle Infinity
|
||||
var foldWidgets = this.foldWidgets;
|
||||
endRow = endRow || this.getLength();
|
||||
for (var row = startRow || 0; row < endRow; row++) {
|
||||
startRow = startRow || 0;
|
||||
for (var row = startRow; row < endRow; row++) {
|
||||
if (foldWidgets[row] == null)
|
||||
foldWidgets[row] = this.getFoldWidget(row);
|
||||
if (foldWidgets[row] != "start")
|
||||
continue;
|
||||
|
||||
var range = this.getFoldWidgetRange(row);
|
||||
var rangeEndRow = range.end.row;
|
||||
// sometimes range can be incompatible with existing fold
|
||||
// TODO change addFold to return null istead of throwing
|
||||
if (range && range.end.row <= endRow) try {
|
||||
if (range && range.isMultiLine()
|
||||
&& rangeEndRow <= endRow
|
||||
&& range.start.row >= startRow
|
||||
) try {
|
||||
var fold = this.addFold("...", range);
|
||||
fold.collapseChildren = depth;
|
||||
row = range.end.row;
|
||||
// addFold can change the range
|
||||
row = rangeEndRow;
|
||||
} catch(e) {}
|
||||
}
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue