Merge pull request #2235 from ajaxorg/hotfix/php_folding
Hotfix for regression in php folding
This commit is contained in:
commit
c5c1bb2b13
4 changed files with 36 additions and 6 deletions
|
|
@ -696,7 +696,8 @@ function Folding() {
|
||||||
|
|
||||||
this.$foldMode = foldMode;
|
this.$foldMode = foldMode;
|
||||||
|
|
||||||
this.removeListener('change', this.$updateFoldWidgets);
|
this.off('change', this.$updateFoldWidgets);
|
||||||
|
this.off('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets);
|
||||||
this._emit("changeAnnotation");
|
this._emit("changeAnnotation");
|
||||||
|
|
||||||
if (!foldMode || this.$foldStyle == "manual") {
|
if (!foldMode || this.$foldStyle == "manual") {
|
||||||
|
|
@ -709,8 +710,9 @@ function Folding() {
|
||||||
this.getFoldWidgetRange = foldMode.getFoldWidgetRange.bind(foldMode, this, this.$foldStyle);
|
this.getFoldWidgetRange = foldMode.getFoldWidgetRange.bind(foldMode, this, this.$foldStyle);
|
||||||
|
|
||||||
this.$updateFoldWidgets = this.updateFoldWidgets.bind(this);
|
this.$updateFoldWidgets = this.updateFoldWidgets.bind(this);
|
||||||
|
this.$tokenizerUpdateFoldWidgets = this.tokenizerUpdateFoldWidgets.bind(this);
|
||||||
this.on('change', this.$updateFoldWidgets);
|
this.on('change', this.$updateFoldWidgets);
|
||||||
|
this.on('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets);
|
||||||
};
|
};
|
||||||
|
|
||||||
this.getParentFoldRangeData = function (row, ignoreCurrent) {
|
this.getParentFoldRangeData = function (row, ignoreCurrent) {
|
||||||
|
|
@ -843,7 +845,13 @@ function Folding() {
|
||||||
this.foldWidgets.splice.apply(this.foldWidgets, args);
|
this.foldWidgets.splice.apply(this.foldWidgets, args);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
this.tokenizerUpdateFoldWidgets = function(e) {
|
||||||
|
var rows = e.data;
|
||||||
|
if (rows.first != rows.last) {
|
||||||
|
if (this.foldWidgets.length > rows.first)
|
||||||
|
this.foldWidgets.splice(rows.first, this.foldWidgets.length);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.Folding = Folding;
|
exports.Folding = Folding;
|
||||||
|
|
|
||||||
|
|
@ -153,6 +153,30 @@ module.exports = {
|
||||||
|
|
||||||
assert.range(session.getFoldWidgetRange(0), 0, 5, 5, 0);
|
assert.range(session.getFoldWidgetRange(0), 0, 5, 5, 0);
|
||||||
assert.range(session.getFoldWidgetRange(5), 0, 5, 5, 0);
|
assert.range(session.getFoldWidgetRange(5), 0, 5, 5, 0);
|
||||||
|
},
|
||||||
|
|
||||||
|
"test: fold multiple nested optional elements": function() {
|
||||||
|
var session = new EditSession([
|
||||||
|
'<p>',
|
||||||
|
'<li>',
|
||||||
|
'<p>juhu',
|
||||||
|
'<p>',
|
||||||
|
'kinners',
|
||||||
|
'</li>'
|
||||||
|
]);
|
||||||
|
|
||||||
|
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);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -192,9 +192,6 @@ function is(token, type) {
|
||||||
if (!tag || top.tagName == tag.tagName) {
|
if (!tag || top.tagName == tag.tagName) {
|
||||||
return stack.pop();
|
return stack.pop();
|
||||||
}
|
}
|
||||||
else if (this.optionalEndTags.hasOwnProperty(tag.tagName)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else if (this.optionalEndTags.hasOwnProperty(top.tagName)) {
|
else if (this.optionalEndTags.hasOwnProperty(top.tagName)) {
|
||||||
stack.pop();
|
stack.pop();
|
||||||
continue;
|
continue;
|
||||||
|
|
|
||||||
|
|
@ -110,6 +110,7 @@ var Mode = function(opts) {
|
||||||
"css-": CssMode,
|
"css-": CssMode,
|
||||||
"php-": PhpMode
|
"php-": PhpMode
|
||||||
});
|
});
|
||||||
|
this.foldingRules.subModes["php-"] = new CStyleFoldMode();
|
||||||
};
|
};
|
||||||
oop.inherits(Mode, HtmlMode);
|
oop.inherits(Mode, HtmlMode);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue