Skip to content

Commit 760874d

Browse files
committed
fix(shiki): allow overriding base transformers
close #366
1 parent cd1c4fd commit 760874d

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

src/runtime/highlighter/shiki.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -129,23 +129,26 @@ export function createShikiHighlighter({
129129
}
130130
}
131131

132-
const transformers: ShikiTransformer[] = [
133-
...baseTransformers
134-
]
132+
const transformersMap = new Map<string, ShikiTransformer>()
133+
for (const transformer of baseTransformers) {
134+
transformersMap.set(transformer.name || `transformer:${Math.random()}-${transformer.constructor.name}`, transformer)
135+
}
135136

136137
for (const config of await getConfigs()) {
137138
const newTransformers = typeof config.shiki?.transformers === 'function'
138139
? await config.shiki?.transformers(code, lang, theme, options)
139140
: config.shiki?.transformers || []
140-
transformers.push(...newTransformers)
141+
for (const transformer of newTransformers) {
142+
transformersMap.set(transformer.name || `transformer:${Math.random()}-${transformer.constructor.name}`, transformer)
143+
}
141144
}
142145

143146
const root = shiki.codeToHast(code.trimEnd(), {
144147
lang,
145148
...codeToHastOptions,
146149
themes: themesObject,
147150
transformers: [
148-
...transformers,
151+
...transformersMap.values(),
149152
{
150153
name: 'mdc:highlight',
151154
line(node, line) {

0 commit comments

Comments
 (0)