提交 21d517ef 编写于 作者: M Martin Aeschlimann

[html] fold multi line comments

上级 ff3c4035
...@@ -149,12 +149,12 @@ export function getHTMLFoldingRegions(htmlLanguageService: HTMLLanguageService, ...@@ -149,12 +149,12 @@ export function getHTMLFoldingRegions(htmlLanguageService: HTMLLanguageService,
break; break;
} }
case TokenType.Comment: { case TokenType.Comment: {
let startLine = document.positionAt(scanner.getTokenOffset()).line;
let text = scanner.getTokenText(); let text = scanner.getTokenText();
let m = text.match(/^\s*#(region\b)|(endregion\b)/); let m = text.match(/^\s*#(region\b)|(endregion\b)/);
if (m) { if (m) {
let line = document.positionAt(scanner.getTokenOffset()).line;
if (m[1]) { // start pattern match 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); stack.push(range);
elementNames.push(''); elementNames.push('');
} else { } else {
...@@ -165,13 +165,19 @@ export function getHTMLFoldingRegions(htmlLanguageService: HTMLLanguageService, ...@@ -165,13 +165,19 @@ export function getHTMLFoldingRegions(htmlLanguageService: HTMLLanguageService,
if (i >= 0) { if (i >= 0) {
let range = stack[i]; let range = stack[i];
stack.length = i; stack.length = i;
if (line > range.startLine && prevStart !== range.startLine) { if (startLine > range.startLine && prevStart !== range.startLine) {
range.endLine = line; range.endLine = startLine;
addRange(range); addRange(range);
prevStart = range.startLine; 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; break;
} }
......
...@@ -84,14 +84,16 @@ suite('Object Folding', () => { ...@@ -84,14 +84,16 @@ suite('Object Folding', () => {
assertRanges(input, [r(0, 7), r(5, 6)]); assertRanges(input, [r(0, 7), r(5, 6)]);
}); });
// test('Fold commment', () => { test('Fold commment', () => {
// let input = [ let input = [
// /*0*/'/*', /*0*/'<!--',
// /*1*/' multi line', /*1*/' multi line',
// /*2*/'*/', /*2*/'-->',
// ]; /*3*/'<!-- some stuff',
// assertRanges(input, [r(0, 2, 'comment')]); /*4*/' some more stuff -->',
// }); ];
assertRanges(input, [r(0, 2, 'comment'), r(3, 4, 'comment')]);
});
// test('Fold regions', () => { // test('Fold regions', () => {
// let input = [ // let input = [
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册