feat: add C, C++, and Java syntax highlighting support
Add c, cpp, and java to the highlight.js language bundle for code block rendering. These are among the most commonly used languages in AI coding conversations and were previously unsupported, falling back to plain text. Also adds aliases: h (C headers), cc/cxx/c++/hpp/hxx (C++ variants).
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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<string, LanguageFn> = {
|
||||
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'],
|
||||
|
||||
Reference in New Issue
Block a user