forgejo/web_src/js/features/codemirror-lang.ts
Robert Wolff b8a99f2eb4 feat: support C3 language highlighting in file editor (#11241)
See https://codeberg.org/Codeberg/Community/issues/2371#issuecomment-10520506
Closes: Codeberg/Community#2371

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/11241
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: Robert Wolff <mahlzahn@posteo.de>
Co-committed-by: Robert Wolff <mahlzahn@posteo.de>
2026-02-16 06:40:36 +01:00

168 lines
5 KiB
TypeScript

import type {LanguageDescription} from '@codemirror/language';
export function languages(codemirrorLanguage: CodeMirrorLanguage): LanguageDescription[] {
return [
codemirrorLanguage.LanguageDescription.of({
name: 'C',
extensions: ['c', 'h', 'ino'],
async load() {
return (await import('@codemirror/lang-cpp')).cpp();
},
}),
codemirrorLanguage.LanguageDescription.of({
name: 'C3',
extensions: ['c3'],
async load() {
return (await import('@codemirror/lang-cpp')).cpp();
},
}),
codemirrorLanguage.LanguageDescription.of({
name: 'C++',
alias: ['cpp'],
extensions: ['cpp', 'c++', 'cc', 'cxx', 'hpp', 'h++', 'hh', 'hxx'],
async load() {
return (await import('@codemirror/lang-cpp')).cpp();
},
}),
codemirrorLanguage.LanguageDescription.of({
name: 'CSS',
extensions: ['css'],
async load() {
return (await import('@codemirror/lang-css')).css();
},
}),
codemirrorLanguage.LanguageDescription.of({
name: 'Go',
extensions: ['go'],
async load() {
return (await import('@codemirror/lang-go')).go();
},
}),
codemirrorLanguage.LanguageDescription.of({
name: 'HTML',
alias: ['xhtml'],
extensions: ['html', 'htm', 'handlebars', 'hbs'],
async load() {
return (await import('@codemirror/lang-html')).html();
},
}),
codemirrorLanguage.LanguageDescription.of({
name: 'Java',
extensions: ['java'],
async load() {
return (await import('@codemirror/lang-java')).java();
},
}),
codemirrorLanguage.LanguageDescription.of({
name: 'JavaScript',
alias: ['ecmascript', 'js', 'node'],
extensions: ['js', 'mjs', 'cjs'],
async load() {
return (await import('@codemirror/lang-javascript')).javascript();
},
}),
codemirrorLanguage.LanguageDescription.of({
name: 'JSON',
alias: ['json5'],
extensions: ['json', 'map'],
async load() {
return (await import('@codemirror/lang-json')).json();
},
}),
codemirrorLanguage.LanguageDescription.of({
name: 'JSX',
extensions: ['jsx'],
async load() {
return (await import('@codemirror/lang-javascript')).javascript({jsx: true});
},
}),
codemirrorLanguage.LanguageDescription.of({
name: 'LESS',
extensions: ['less'],
async load() {
return (await import('@codemirror/lang-less')).less();
},
}),
codemirrorLanguage.LanguageDescription.of({
name: 'Liquid',
extensions: ['liquid'],
async load() {
return (await import('@codemirror/lang-liquid')).liquid();
},
}),
codemirrorLanguage.LanguageDescription.of({
name: 'Markdown',
extensions: ['md', 'markdown', 'mkd'],
async load() {
return (await import('@codemirror/lang-markdown')).markdown();
},
}),
codemirrorLanguage.LanguageDescription.of({
name: 'PHP',
extensions: ['php', 'php3', 'php4', 'php5', 'php7', 'phtml'],
async load() {
return (await import('@codemirror/lang-php')).php();
},
}),
codemirrorLanguage.LanguageDescription.of({
name: 'Python',
extensions: ['BUILD', 'bzl', 'py', 'pyw'],
filename: /^(BUCK|BUILD)$/,
async load() {
return (await import('@codemirror/lang-python')).python();
},
}),
codemirrorLanguage.LanguageDescription.of({
name: 'Rust',
extensions: ['rs'],
async load() {
return (await import('@codemirror/lang-rust')).rust();
},
}),
codemirrorLanguage.LanguageDescription.of({
name: 'Sass',
extensions: ['sass'],
async load() {
return (await import('@codemirror/lang-sass')).sass({indented: true});
},
}),
codemirrorLanguage.LanguageDescription.of({
name: 'SCSS',
extensions: ['scss'],
async load() {
return (await import('@codemirror/lang-sass')).sass();
},
}),
codemirrorLanguage.LanguageDescription.of({
name: 'TSX',
extensions: ['tsx'],
async load() {
return (await import('@codemirror/lang-javascript')).javascript({jsx: true, typescript: true});
},
}),
codemirrorLanguage.LanguageDescription.of({
name: 'TypeScript',
alias: ['ts'],
extensions: ['ts', 'mts', 'cts'],
async load() {
return (await import('@codemirror/lang-javascript')).javascript({typescript: true});
},
}),
codemirrorLanguage.LanguageDescription.of({
name: 'XML',
alias: ['rss', 'wsdl', 'xsd'],
extensions: ['xml', 'xsl', 'xsd', 'svg'],
async load() {
return (await import('@codemirror/lang-xml')).xml();
},
}),
codemirrorLanguage.LanguageDescription.of({
name: 'YAML',
alias: ['yml'],
extensions: ['yaml', 'yml'],
async load() {
return (await import('@codemirror/lang-yaml')).yaml();
},
}),
];
}