From: Kai Moritz Date: Sat, 4 Jul 2026 18:53:24 +0000 (+0000) Subject: fix: XML-Blöcke mit Template-Syntax werden korrekt als xml highlighted X-Git-Url: https://juplo.de/gitweb/?a=commitdiff_plain;h=2cc7b48b2f60651b469b37dd47786050f0c6b913;p=website fix: XML-Blöcke mit Template-Syntax werden korrekt als xml highlighted 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 --- diff --git a/src/components/ProjectPage.astro b/src/components/ProjectPage.astro index 0d06039e..74533f7e 100644 --- a/src/components/ProjectPage.astro +++ b/src/components/ProjectPage.astro @@ -1,6 +1,6 @@ --- 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'; @@ -66,9 +66,12 @@ async function highlightBody(html: string): Promise { 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); } );