fix foldAll

This commit is contained in:
nightwing 2013-08-26 21:55:34 +04:00
commit 3a23eacda2

View file

@ -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) {}
}
};