diff --git a/lib/ace/mode/folding/html_test.js b/lib/ace/mode/folding/html_test.js index 2698d936..3471ee57 100644 --- a/lib/ace/mode/folding/html_test.js +++ b/lib/ace/mode/folding/html_test.js @@ -153,6 +153,30 @@ module.exports = { assert.range(session.getFoldWidgetRange(0), 0, 5, 5, 0); assert.range(session.getFoldWidgetRange(5), 0, 5, 5, 0); + }, + + "test: fold multiple nested optional elements": function() { + var session = new EditSession([ + '

', + '

  • ', + '

    juhu', + '

    ', + 'kinners', + '

  • ' + ]); + + var mode = new HtmlMode(); + session.setMode(mode); + session.setFoldStyle("markbeginend"); + + assert.equal(session.getFoldWidget(0), "start"); + assert.equal(session.getFoldWidget(1), "start"); + assert.equal(session.getFoldWidget(2), "start"); + assert.equal(session.getFoldWidget(3), "start"); + assert.equal(session.getFoldWidget(4), ""); + assert.equal(session.getFoldWidget(5), "end"); + + assert.range(session.getFoldWidgetRange(1), 1, 4, 5, 0); } }; diff --git a/lib/ace/mode/folding/xml.js b/lib/ace/mode/folding/xml.js index 3a353eba..27f57a8c 100644 --- a/lib/ace/mode/folding/xml.js +++ b/lib/ace/mode/folding/xml.js @@ -192,9 +192,6 @@ function is(token, type) { if (!tag || top.tagName == tag.tagName) { return stack.pop(); } - else if (this.optionalEndTags.hasOwnProperty(tag.tagName)) { - return; - } else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { stack.pop(); continue;