| import { LanguageDescription } from '@codemirror/language'; | |
| export const supportedLanguages = [ | |
| LanguageDescription.of({ | |
| name: 'VUE', | |
| extensions: ['vue'], | |
| async load() { | |
| return import('@codemirror/lang-vue').then((module) => module.vue()); | |
| }, | |
| }), | |
| LanguageDescription.of({ | |
| name: 'TS', | |
| extensions: ['ts'], | |
| async load() { | |
| return import('@codemirror/lang-javascript').then((module) => module.javascript({ typescript: true })); | |
| }, | |
| }), | |
| LanguageDescription.of({ | |
| name: 'JS', | |
| extensions: ['js', 'mjs', 'cjs'], | |
| async load() { | |
| return import('@codemirror/lang-javascript').then((module) => module.javascript()); | |
| }, | |
| }), | |
| LanguageDescription.of({ | |
| name: 'TSX', | |
| extensions: ['tsx'], | |
| async load() { | |
| return import('@codemirror/lang-javascript').then((module) => module.javascript({ jsx: true, typescript: true })); | |
| }, | |
| }), | |
| LanguageDescription.of({ | |
| name: 'JSX', | |
| extensions: ['jsx'], | |
| async load() { | |
| return import('@codemirror/lang-javascript').then((module) => module.javascript({ jsx: true })); | |
| }, | |
| }), | |
| LanguageDescription.of({ | |
| name: 'HTML', | |
| extensions: ['html'], | |
| async load() { | |
| return import('@codemirror/lang-html').then((module) => module.html()); | |
| }, | |
| }), | |
| LanguageDescription.of({ | |
| name: 'CSS', | |
| extensions: ['css'], | |
| async load() { | |
| return import('@codemirror/lang-css').then((module) => module.css()); | |
| }, | |
| }), | |
| LanguageDescription.of({ | |
| name: 'SASS', | |
| extensions: ['sass'], | |
| async load() { | |
| return import('@codemirror/lang-sass').then((module) => module.sass({ indented: true })); | |
| }, | |
| }), | |
| LanguageDescription.of({ | |
| name: 'SCSS', | |
| extensions: ['scss'], | |
| async load() { | |
| return import('@codemirror/lang-sass').then((module) => module.sass({ indented: false })); | |
| }, | |
| }), | |
| LanguageDescription.of({ | |
| name: 'JSON', | |
| extensions: ['json'], | |
| async load() { | |
| return import('@codemirror/lang-json').then((module) => module.json()); | |
| }, | |
| }), | |
| LanguageDescription.of({ | |
| name: 'Markdown', | |
| extensions: ['md'], | |
| async load() { | |
| return import('@codemirror/lang-markdown').then((module) => module.markdown()); | |
| }, | |
| }), | |
| LanguageDescription.of({ | |
| name: 'Wasm', | |
| extensions: ['wat'], | |
| async load() { | |
| return import('@codemirror/lang-wast').then((module) => module.wast()); | |
| }, | |
| }), | |
| LanguageDescription.of({ | |
| name: 'Python', | |
| extensions: ['py'], | |
| async load() { | |
| return import('@codemirror/lang-python').then((module) => module.python()); | |
| }, | |
| }), | |
| LanguageDescription.of({ | |
| name: 'C++', | |
| extensions: ['cpp'], | |
| async load() { | |
| return import('@codemirror/lang-cpp').then((module) => module.cpp()); | |
| }, | |
| }), | |
| ]; | |
| export async function getLanguage(fileName: string) { | |
| const languageDescription = LanguageDescription.matchFilename(supportedLanguages, fileName); | |
| if (languageDescription) { | |
| return await languageDescription.load(); | |
| } | |
| return undefined; | |
| } | |