diff --git a/extensions/markdown-language-features/src/markdownEngine.ts b/extensions/markdown-language-features/src/markdownEngine.ts index c6b107af855bdb46fa31e093034d01e9cd40edaa..bc67e0bee186669e3c9a47e80ce2cafdc3385080 100644 --- a/extensions/markdown-language-features/src/markdownEngine.ts +++ b/extensions/markdown-language-features/src/markdownEngine.ts @@ -107,6 +107,7 @@ export class MarkdownEngine { return engine.parse(text, {}).map(token => { if (token.map) { token.map[0] += offset; + token.map[1] += offset; } return token; }); diff --git a/extensions/markdown-language-features/src/test/foldingProvider.test.ts b/extensions/markdown-language-features/src/test/foldingProvider.test.ts index fad172dba2428a6157ef7c38ef4c1f2e20f6acde..667968d6bd8c2e22cabd5968ea8f0922d3dc0023 100644 --- a/extensions/markdown-language-features/src/test/foldingProvider.test.ts +++ b/extensions/markdown-language-features/src/test/foldingProvider.test.ts @@ -122,6 +122,36 @@ d`); assert.strictEqual(firstFold.start, 1); assert.strictEqual(firstFold.end, 3); }); + + test('Should fold fenced code blocks', async () => { + const folds = await getFoldsForDocument(`~~~ts +a +~~~ +b`); + assert.strictEqual(folds.length, 1); + const firstFold = folds[0]; + assert.strictEqual(firstFold.start, 0); + assert.strictEqual(firstFold.end, 2); + }); + + test('Should fold fenced code blocks with yaml front matter', async () => { + const folds = await getFoldsForDocument(`--- +title: bla +--- + +~~~ts +a +~~~ + +a +a +b +a`); + assert.strictEqual(folds.length, 1); + const firstFold = folds[0]; + assert.strictEqual(firstFold.start, 4); + assert.strictEqual(firstFold.end, 6); + }); });