diff --git a/src/lib/__tests__/highlight.test.ts b/src/lib/__tests__/highlight.test.ts index 31398d3..7479b40 100644 --- a/src/lib/__tests__/highlight.test.ts +++ b/src/lib/__tests__/highlight.test.ts @@ -3,8 +3,8 @@ import hljs, { rehypeHighlightLanguages, rehypeHighlightOptions } from '../highl describe('highlight', () => { const expectedLanguages = [ - 'bash', 'css', 'diff', 'dockerfile', 'go', 'ini', - 'javascript', 'json', 'markdown', 'python', 'rust', + 'bash', 'c', 'cpp', 'css', 'diff', 'dockerfile', 'go', 'ini', + 'java', 'javascript', 'json', 'markdown', 'python', 'rust', 'shell', 'sql', 'typescript', 'xml', 'yaml', ]; @@ -17,7 +17,7 @@ describe('highlight', () => { }); it('resolves common aliases', () => { - const aliases = ['sh', 'zsh', 'js', 'jsx', 'ts', 'tsx', 'py', 'html', 'yml', 'rs']; + const aliases = ['sh', 'zsh', 'h', 'cc', 'cxx', 'js', 'jsx', 'ts', 'tsx', 'py', 'html', 'yml', 'rs']; for (const alias of aliases) { const lang = hljs.getLanguage(alias); expect(lang, `alias "${alias}" should resolve`).toBeDefined(); diff --git a/src/lib/highlight.ts b/src/lib/highlight.ts index 5392202..991ac38 100644 --- a/src/lib/highlight.ts +++ b/src/lib/highlight.ts @@ -8,11 +8,14 @@ import type { LanguageFn } from 'highlight.js'; // Languages commonly seen in AI assistant conversations import bash from 'highlight.js/lib/languages/bash'; +import c from 'highlight.js/lib/languages/c'; +import cpp from 'highlight.js/lib/languages/cpp'; import css from 'highlight.js/lib/languages/css'; import diff from 'highlight.js/lib/languages/diff'; import dockerfile from 'highlight.js/lib/languages/dockerfile'; import go from 'highlight.js/lib/languages/go'; import ini from 'highlight.js/lib/languages/ini'; +import java from 'highlight.js/lib/languages/java'; import javascript from 'highlight.js/lib/languages/javascript'; import json from 'highlight.js/lib/languages/json'; import markdown from 'highlight.js/lib/languages/markdown'; @@ -25,11 +28,14 @@ import xml from 'highlight.js/lib/languages/xml'; import yaml from 'highlight.js/lib/languages/yaml'; hljs.registerLanguage('bash', bash); +hljs.registerLanguage('c', c); +hljs.registerLanguage('cpp', cpp); hljs.registerLanguage('css', css); hljs.registerLanguage('diff', diff); hljs.registerLanguage('dockerfile', dockerfile); hljs.registerLanguage('go', go); hljs.registerLanguage('ini', ini); +hljs.registerLanguage('java', java); hljs.registerLanguage('javascript', javascript); hljs.registerLanguage('json', json); hljs.registerLanguage('markdown', markdown); @@ -43,6 +49,8 @@ hljs.registerLanguage('yaml', yaml); // Aliases for hljs direct usage (ToolCall.tsx) hljs.registerAliases(['sh', 'zsh'], { languageName: 'bash' }); +hljs.registerAliases(['h'], { languageName: 'c' }); +hljs.registerAliases(['cc', 'cxx', 'c++', 'hpp', 'hxx'], { languageName: 'cpp' }); hljs.registerAliases(['js', 'jsx'], { languageName: 'javascript' }); hljs.registerAliases(['ts', 'tsx'], { languageName: 'typescript' }); hljs.registerAliases(['py'], { languageName: 'python' }); @@ -56,7 +64,7 @@ hljs.registerAliases(['rs'], { languageName: 'rust' }); * rehype-highlight uses lowlight internally and accepts a `languages` record. */ export const rehypeHighlightLanguages: Record = { - bash, css, diff, dockerfile, go, ini, javascript, json, + bash, c, cpp, css, diff, dockerfile, go, ini, java, javascript, json, markdown, python, rust, shell, sql, typescript, xml, yaml, }; @@ -67,6 +75,8 @@ export const rehypeHighlightOptions = { languages: rehypeHighlightLanguages, aliases: { bash: ['sh', 'zsh'], + c: ['h'], + cpp: ['cc', 'cxx', 'c++', 'hpp', 'hxx'], javascript: ['js', 'jsx'], typescript: ['ts', 'tsx'], python: ['py'],