From dfa2eaf5ac9d073717a1cb50a54f8a521b429578 Mon Sep 17 00:00:00 2001 From: nightwing Date: Wed, 6 Nov 2013 11:34:41 +0400 Subject: [PATCH] do not include empty lines in section fold --- lib/ace/mode/folding/cstyle.js | 7 ++++--- lib/ace/mode/folding/cstyle_test.js | 24 ++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/lib/ace/mode/folding/cstyle.js b/lib/ace/mode/folding/cstyle.js index 9ffb3438..dd151e24 100644 --- a/lib/ace/mode/folding/cstyle.js +++ b/lib/ace/mode/folding/cstyle.js @@ -73,7 +73,7 @@ oop.inherits(FoldMode, BaseFoldMode); return range; } - if (foldStyle !== "markbeginend") + if (foldStyle === "markbegin") return; var match = line.match(this.foldingStopMarker); @@ -105,10 +105,11 @@ oop.inherits(FoldMode, BaseFoldMode); var subRange = this.getFoldWidgetRange(session, "all", row); if (subRange) { - if (subRange.isMultiLine()) { + if (subRange.start.row <= startRow) { + break; + } else if (subRange.isMultiLine()) { row = subRange.end.row; } else if (startIndent == indent) { - endRow = row - 1; break; } } diff --git a/lib/ace/mode/folding/cstyle_test.js b/lib/ace/mode/folding/cstyle_test.js index e007c792..f199c916 100644 --- a/lib/ace/mode/folding/cstyle_test.js +++ b/lib/ace/mode/folding/cstyle_test.js @@ -76,6 +76,30 @@ module.exports = { assert.range(session.getFoldWidgetRange(0), 0, 2, 2, 7); assert.range(session.getFoldWidgetRange(2), 0, 2, 2, 7); + }, + + "test: fold sections": function() { + var session = new EditSession([ + '/* section0 */', + '{', + ' /* section1 */', + ' stuff', + ' ', + ' /* section2 */', + ' ', + ' stuff', + ' ', + ' }', + 'foo' + ]); + + var mode = new JavaScriptMode(); + session.setFoldStyle("markbegin"); + session.setMode(mode); + + assert.range(session.getFoldWidgetRange(0, true), 0, 14, 10, 3); + assert.range(session.getFoldWidgetRange(2, true), 2, 18, 3, 9); + assert.range(session.getFoldWidgetRange(5, true), 5, 18, 7, 9); } };