hljs erkennt APT-Blöcke mit \${...}-Platzhaltern fälschlich als 'dust'
(Dust.js-Templates), das nicht in Shikis bundledLanguages ist, weshalb
der Block auf 'text' zurückfiel.
Neues Fallback-Kriterium: Code, der mit '<' beginnt, wird als 'xml'
behandelt, wenn hljs entweder keine in Shiki verfügbare Sprache findet
oder unter dem Relevanz-Schwellenwert liegt.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
---
import { getEntry } from 'astro:content';
-import { codeToHtml } from 'shiki';
+import { codeToHtml, bundledLanguages } from 'shiki';
import hljs from 'highlight.js';
import BaseLayout from '../layouts/BaseLayout.astro';
import Breadcrumb from '../components/Breadcrumb.astro';
async (_, rawCode) => {
const code = decodeEntities(rawCode).trimEnd();
const detected = hljs.highlightAuto(code);
- const lang = (detected.language && detected.relevance >= MIN_RELEVANCE)
- ? detected.language
- : 'text';
+ let lang = 'text';
+ if (detected.language && detected.relevance >= MIN_RELEVANCE && detected.language in bundledLanguages) {
+ lang = detected.language;
+ } else if (code.trimStart().startsWith('<')) {
+ lang = 'xml';
+ }
return toShiki(code, lang);
}
);