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