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;
|
var endColumn = fold.end.column;
|
||||||
|
|
||||||
// --- Some checking ---
|
// --- 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";
|
throw "The range has to be at least 2 characters width";
|
||||||
|
|
||||||
var startFold = this.getFoldAt(startRow, startColumn, 1);
|
var startFold = this.getFoldAt(startRow, startColumn, 1);
|
||||||
|
|
@ -627,19 +628,25 @@ function Folding() {
|
||||||
depth = 100000; // JSON.stringify doesn't hanle Infinity
|
depth = 100000; // JSON.stringify doesn't hanle Infinity
|
||||||
var foldWidgets = this.foldWidgets;
|
var foldWidgets = this.foldWidgets;
|
||||||
endRow = endRow || this.getLength();
|
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)
|
if (foldWidgets[row] == null)
|
||||||
foldWidgets[row] = this.getFoldWidget(row);
|
foldWidgets[row] = this.getFoldWidget(row);
|
||||||
if (foldWidgets[row] != "start")
|
if (foldWidgets[row] != "start")
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
var range = this.getFoldWidgetRange(row);
|
var range = this.getFoldWidgetRange(row);
|
||||||
|
var rangeEndRow = range.end.row;
|
||||||
// sometimes range can be incompatible with existing fold
|
// sometimes range can be incompatible with existing fold
|
||||||
// TODO change addFold to return null istead of throwing
|
// 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);
|
var fold = this.addFold("...", range);
|
||||||
fold.collapseChildren = depth;
|
fold.collapseChildren = depth;
|
||||||
row = range.end.row;
|
// addFold can change the range
|
||||||
|
row = rangeEndRow;
|
||||||
} catch(e) {}
|
} catch(e) {}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue