30 lines · 1021 B · TypeScript
RawDownload
import {  getSharedHighlighter,  type DiffsHighlighter,  type SupportedLanguages,} from "@pierre/diffs"; import { resolveDiffThemeName } from "./diffRendering"; const highlighterPromiseCache = new Map<string, Promise<DiffsHighlighter>>(); export function getSyntaxHighlighterPromise(language: string): Promise<DiffsHighlighter> {  const cached = highlighterPromiseCache.get(language);  if (cached) return cached;   const promise = getSharedHighlighter({    themes: [resolveDiffThemeName("dark"), resolveDiffThemeName("light")],    langs: [language as SupportedLanguages],    preferredHighlighter: "shiki-js",  }).catch((error) => {    if (language === "text") {      highlighterPromiseCache.delete(language);      // "text" itself failed — Shiki cannot initialize at all, surface the error      throw error;    }    // Language not supported by Shiki — fall back to "text"    return getSyntaxHighlighterPromise("text");  });  highlighterPromiseCache.set(language, promise);  return promise;}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t