fix folding for c9search (for lines matching /\w:$/)

This commit is contained in:
nightwing 2012-06-11 11:12:50 +04:00
commit 3e99b7f4fa
4 changed files with 21 additions and 53 deletions

View file

@ -194,7 +194,7 @@ function BracketMatch() {
return null;
};
this.$findClosingBracket = function(bracket, position, typeRe, allowBlankLine) {
this.$findClosingBracket = function(bracket, position, typeRe) {
var closingBracket = this.$brackets[bracket];
var depth = 1;
@ -239,12 +239,6 @@ function BracketMatch() {
// whose type matches typeRe
do {
token = iterator.stepForward();
if (allowBlankLine) {
// if you've reached the doc end, or, you match a new content line
if (token === null || token.type == "string") {
return {row: iterator.getCurrentTokenRow() + (token === null ? 1 : -1), column: 0};
}
}
} while (token && !typeRe.test(token.type));
if (token == null)

View file

@ -56,18 +56,6 @@ oop.inherits(Mode, TextMode);
this.getNextLineIndent = function(state, line, tab) {
var indent = this.$getIndent(line);
// ignore braces in comments
var tokens = this.$tokenizer.getLineTokens(line, state).tokens;
if (tokens.length && tokens[tokens.length-1].type == "comment") {
return indent;
}
var match = line.match(/^.*\{\s*$/);
if (match) {
indent += tab;
}
return indent;
};

View file

@ -48,46 +48,32 @@ oop.inherits(FoldMode, BaseFoldMode);
(function() {
this.foldingStartMarker = /[a-zA-Z](:)\s*$/;
this.foldingStopMarker = /^(\s*)$/;
this.foldingStartMarker = /^(\w.*\:|Searching for.*)$/;
this.foldingStopMarker = /^(\s+|Found.*)$/;
this.getFoldWidgetRange = function(session, foldStyle, row) {
var line = session.getLine(row);
var match = line.match(this.foldingStartMarker);
if (match) {
var i = match.index;
var level1 = /^(Found.*|Searching for.*)$/;
var level2 = /^(\w.*\:|\s+)$/;
var re = level1.test(line) ? level1 : level2;
if (match[1])
return this.openingBracketBlock(session, match[1], row, i, false, true);
var range = session.getCommentFoldRange(row, i + match[0].length);
range.end.column -= 2;
return range;
}
if (foldStyle !== "markbeginend")
return;
var match = line.match(this.foldingStopMarker);
if (match) {
var i = match.index + match[0].length;
if (match[2]) {
var range = session.getCommentFoldRange(row, i);
range.end.column -= 2;
return range;
if (this.foldingStartMarker.test(line)) {
for (var i = row + 1, l = session.getLength(); i < l; i++) {
if (re.test(session.getLine(i)))
break;
}
var end = {row: row, column: i};
var start = session.$findOpeningBracket(match[1], end);
if (!start)
return;
return new Range(row, line.length, i, 0);
}
start.column++;
end.column--;
if (this.foldingStopMarker.test(line)) {
for (var i = row - 1; i >= 0; i--) {
line = session.getLine(i);
if (re.test(line))
break;
}
return Range.fromPoints(start, end);
return new Range(i, line.length, row, 0);
}
};

View file

@ -91,9 +91,9 @@ var FoldMode = exports.FoldMode = function() {};
}
};
this.openingBracketBlock = function(session, bracket, row, column, typeRe, allowBlankLine) {
this.openingBracketBlock = function(session, bracket, row, column, typeRe) {
var start = {row: row, column: column + 1};
var end = session.$findClosingBracket(bracket, start, typeRe, allowBlankLine);
var end = session.$findClosingBracket(bracket, start, typeRe);
if (!end)
return;