| 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; |
| } |
|
|