[html] fold multi line comments
This commit is contained in:
parent
ff3c40353b
commit
21d517efd6
2 changed files with 20 additions and 12 deletions
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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 = [
|
||||
|
|
Loading…
Reference in a new issue