fix folding for c9search (for lines matching /\w:$/)
This commit is contained in:
parent
dbe4d0531e
commit
3e99b7f4fa
4 changed files with 21 additions and 53 deletions
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue