| 22 | var minSize = getOption(cm, options, "minFoldSize"); |
| 23 | |
| 24 | function getRange(allowFolded) { |
| 25 | var range = finder(cm, pos); |
| 26 | if (!range || range.to.line - range.from.line < minSize) return null; |
| 27 | var marks = cm.findMarksAt(range.from); |
| 28 | for (var i = 0; i < marks.length; ++i) { |
| 29 | if (marks[i].__isFold && force !== "fold") { |
| 30 | if (!allowFolded) return null; |
| 31 | range.cleared = true; |
| 32 | marks[i].clear(); |
| 33 | } |
| 34 | } |
| 35 | return range; |
| 36 | } |
| 37 | |
| 38 | var range = getRange(true); |
| 39 | if (getOption(cm, options, "scanUp")) while (!range && pos.line > cm.firstLine()) { |