fix folding for self closing tags. fix #548
This commit is contained in:
parent
70cef75704
commit
9fee4b7d96
4 changed files with 227 additions and 40 deletions
|
|
@ -40,8 +40,6 @@ if (typeof process !== "undefined")
|
|||
|
||||
define(function(require, exports, module) {
|
||||
|
||||
var FoldMode = require("./mixed").FoldMode;
|
||||
var XmlFoldMode = require("./xml").FoldMode;
|
||||
var HtmlMode = require("../html").Mode;
|
||||
var EditSession = require("../../edit_session").EditSession;
|
||||
var assert = require("../../test/assertions");
|
||||
|
|
@ -59,6 +57,7 @@ module.exports = {
|
|||
|
||||
var mode = new HtmlMode();
|
||||
session.setMode(mode);
|
||||
session.setFoldStyle("markbeginend");
|
||||
|
||||
assert.equal(session.getFoldWidget(0), "start");
|
||||
assert.equal(session.getFoldWidget(1), "start");
|
||||
|
|
@ -84,6 +83,7 @@ module.exports = {
|
|||
|
||||
var mode = new HtmlMode();
|
||||
session.setMode(mode);
|
||||
session.setFoldStyle("markbeginend");
|
||||
|
||||
assert.equal(session.getFoldWidget(0), "start");
|
||||
assert.equal(session.getFoldWidget(1), "start");
|
||||
|
|
@ -96,11 +96,73 @@ module.exports = {
|
|||
|
||||
assert.range(session.getFoldWidgetRange(1), 1, 17, 3, 4);
|
||||
assert.range(session.getFoldWidgetRange(3), 1, 17, 3, 4);
|
||||
}
|
||||
},
|
||||
|
||||
"test: fold should skip self closing elements": function() {
|
||||
var session = new EditSession([
|
||||
'<body>',
|
||||
'<br />',
|
||||
'</body>'
|
||||
]);
|
||||
|
||||
var mode = new HtmlMode();
|
||||
session.setMode(mode);
|
||||
session.setFoldStyle("markbeginend");
|
||||
|
||||
assert.equal(session.getFoldWidget(0), "start");
|
||||
assert.equal(session.getFoldWidget(1), "");
|
||||
assert.equal(session.getFoldWidget(2), "end");
|
||||
|
||||
assert.range(session.getFoldWidgetRange(0), 0, 7, 2, 0);
|
||||
assert.range(session.getFoldWidgetRange(2), 0, 7, 2, 0);
|
||||
},
|
||||
|
||||
"test: fold should skip void elements": function() {
|
||||
var session = new EditSession([
|
||||
'<body>',
|
||||
'<br>',
|
||||
'</body>'
|
||||
]);
|
||||
|
||||
var mode = new HtmlMode();
|
||||
session.setMode(mode);
|
||||
session.setFoldStyle("markbeginend");
|
||||
|
||||
assert.equal(session.getFoldWidget(0), "start");
|
||||
assert.equal(session.getFoldWidget(1), "");
|
||||
assert.equal(session.getFoldWidget(2), "end");
|
||||
|
||||
assert.range(session.getFoldWidgetRange(0), 0, 7, 2, 0);
|
||||
assert.range(session.getFoldWidgetRange(2), 0, 7, 2, 0);
|
||||
},
|
||||
|
||||
"test: fold multiple unclosed elements": function() {
|
||||
var session = new EditSession([
|
||||
'<div>',
|
||||
'<p>',
|
||||
'juhu',
|
||||
'<p>',
|
||||
'kinners',
|
||||
'</div>'
|
||||
]);
|
||||
|
||||
var mode = new HtmlMode();
|
||||
session.setMode(mode);
|
||||
session.setFoldStyle("markbeginend");
|
||||
|
||||
assert.equal(session.getFoldWidget(0), "start");
|
||||
assert.equal(session.getFoldWidget(1), "");
|
||||
assert.equal(session.getFoldWidget(2), "");
|
||||
assert.equal(session.getFoldWidget(3), "");
|
||||
assert.equal(session.getFoldWidget(4), "");
|
||||
assert.equal(session.getFoldWidget(5), "end");
|
||||
|
||||
assert.range(session.getFoldWidgetRange(0), 0, 6, 5, 0);
|
||||
assert.range(session.getFoldWidgetRange(5), 0, 6, 5, 0);
|
||||
}
|
||||
};
|
||||
|
||||
});
|
||||
|
||||
if (typeof process !== "undefined")
|
||||
if (typeof module !== "undefined" && module === require.main)
|
||||
require("asyncjs").test.testcase(module.exports).exec();
|
||||
Loading…
Add table
Add a link
Reference in a new issue