Fix markdown code block syntax highlighting

Marked v15 removed the highlight option from setOptions.
Use marked.use() with a custom renderer instead.
This commit is contained in:
Mario Zechner 2026-01-01 21:42:18 +01:00
parent cafbca02f9
commit 0ec8509de3
3 changed files with 3291 additions and 8 deletions

11
.pi/hooks/status-demo.ts Normal file
View file

@ -0,0 +1,11 @@
import type { HookAPI } from "@mariozechner/pi-coding-agent";
export default function (pi: HookAPI) {
pi.on("turn_start", async (_event, ctx) => {
ctx.ui.setStatus("demo", "🔄 Thinking...");
});
pi.on("turn_end", async (_event, ctx) => {
ctx.ui.setStatus("demo", "✓ Ready");
});
}

3263
out.html Normal file

File diff suppressed because one or more lines are too long

View file

@ -1058,17 +1058,26 @@
return marked.parse(escaped);
}
// Configure marked
marked.setOptions({
// Configure marked with syntax highlighting
marked.use({
breaks: true,
gfm: true,
highlight: function(code, lang) {
if (lang && hljs.getLanguage(lang)) {
try {
return hljs.highlight(code, { language: lang }).value;
} catch {}
renderer: {
code(token) {
const code = token.text;
const lang = token.lang;
let highlighted;
if (lang && hljs.getLanguage(lang)) {
try {
highlighted = hljs.highlight(code, { language: lang }).value;
} catch {
highlighted = escapeHtml(code);
}
} else {
highlighted = escapeHtml(code);
}
return `<pre><code class="hljs">${highlighted}</code></pre>`;
}
return escapeHtml(code);
}
});