[html] fold multi line comments

This commit is contained in:
Martin Aeschlimann 2018-03-15 15:02:36 +01:00
parent ff3c40353b
commit 21d517efd6
2 changed files with 20 additions and 12 deletions

View file

@ -149,12 +149,12 @@ export function getHTMLFoldingRegions(htmlLanguageService: HTMLLanguageService,
break;
}
case TokenType.Comment: {
let startLine = document.positionAt(scanner.getTokenOffset()).line;
let text = scanner.getTokenText();
let m = text.match(/^\s*#(region\b)|(endregion\b)/);
if (m) {
let line = document.positionAt(scanner.getTokenOffset()).line;
if (m[1]) { // start pattern match
let range = { startLine: line, endLine: line, type: FoldingRangeType.Region };
let range = { startLine, endLine: startLine, type: FoldingRangeType.Region };
stack.push(range);
elementNames.push('');
} else {
@ -165,13 +165,19 @@ export function getHTMLFoldingRegions(htmlLanguageService: HTMLLanguageService,
if (i >= 0) {
let range = stack[i];
stack.length = i;
if (line > range.startLine && prevStart !== range.startLine) {
range.endLine = line;
if (startLine > range.startLine && prevStart !== range.startLine) {
range.endLine = startLine;
addRange(range);
prevStart = range.startLine;
}
}
}
} else {
let endLine = document.positionAt(scanner.getTokenOffset() + scanner.getTokenLength()).line;
if (startLine < endLine) {
addRange({ startLine, endLine, type: FoldingRangeType.Comment });
prevStart = startLine;
}
}
break;
}

View file

@ -84,14 +84,16 @@ suite('Object Folding', () => {
assertRanges(input, [r(0, 7), r(5, 6)]);
});
// test('Fold commment', () => {
// let input = [
// /*0*/'/*',
// /*1*/' multi line',
// /*2*/'*/',
// ];
// assertRanges(input, [r(0, 2, 'comment')]);
// });
test('Fold commment', () => {
let input = [
/*0*/'<!--',
/*1*/' multi line',
/*2*/'-->',
/*3*/'<!-- some stuff',
/*4*/' some more stuff -->',
];
assertRanges(input, [r(0, 2, 'comment'), r(3, 4, 'comment')]);
});
// test('Fold regions', () => {
// let input = [