diff --git a/packages/core/src/highlight/code-to-tokens.ts b/packages/core/src/highlight/code-to-tokens.ts index ea52bd249..f48e00d09 100644 --- a/packages/core/src/highlight/code-to-tokens.ts +++ b/packages/core/src/highlight/code-to-tokens.ts @@ -42,6 +42,7 @@ export function codeToTokens( primitive, code, options, + codeToTokensBase, ) grammarState = getLastGrammarStateFromMap(themeTokens) diff --git a/packages/primitive/src/highlight/code-to-tokens-themes.ts b/packages/primitive/src/highlight/code-to-tokens-themes.ts index 198246a79..3ad8656fb 100644 --- a/packages/primitive/src/highlight/code-to-tokens-themes.ts +++ b/packages/primitive/src/highlight/code-to-tokens-themes.ts @@ -14,6 +14,7 @@ export function codeToTokensWithThemes( primitive: ShikiPrimitive, code: string, options: CodeToTokensWithThemesOptions, + codeToTokensBaseFn: typeof codeToTokensBase = codeToTokensBase, ): ThemedTokenWithVariants[][] { const themes = Object .entries(options.themes) @@ -21,7 +22,7 @@ export function codeToTokensWithThemes( .map(i => ({ color: i[0], theme: i[1]! })) const themedTokens = themes.map((t) => { - const tokens = codeToTokensBase(primitive, code, { + const tokens = codeToTokensBaseFn(primitive, code, { ...options, theme: t.theme, }) diff --git a/packages/shiki/test/ansi.test.ts b/packages/shiki/test/ansi.test.ts index 149f01b65..ea835e864 100644 --- a/packages/shiki/test/ansi.test.ts +++ b/packages/shiki/test/ansi.test.ts @@ -44,3 +44,13 @@ Done in 15.7s`, { theme: 'dark-plus', lang: 'ansi' }) await expect(out).toMatchFileSnapshot('./out/ansi-dark-plus.html') }) + +// https://github.com/shikijs/shiki/issues/1257 +it('renders ansi with multiple themes', async () => { + const out = await codeToHtml('\x1B[32mhello\x1B[0m', { + lang: 'ansi', + themes: { light: 'github-light', dark: 'github-dark' }, + }) + + await expect(out).toMatchFileSnapshot('./out/ansi-multi-themes.html') +}) diff --git a/packages/shiki/test/out/ansi-multi-themes.html b/packages/shiki/test/out/ansi-multi-themes.html new file mode 100644 index 000000000..5bc24b4df --- /dev/null +++ b/packages/shiki/test/out/ansi-multi-themes.html @@ -0,0 +1 @@ +
hello
\ No newline at end of file