@bhsd/codemirror-mediawiki
Version:
Modified CodeMirror mode based on wikimedia/mediawiki-extensions-CodeMirror
32 lines (31 loc) • 1.28 kB
JavaScript
import { configureNesting } from '@lezer/html';
import { htmlLanguage, htmlCompletionSourceWith } from '@codemirror/lang-html';
import { javascript, javascriptLanguage } from '@codemirror/lang-javascript';
import { cssLanguage } from '@codemirror/lang-css';
import { LanguageSupport } from '@codemirror/language';
import { jsCompletion } from './javascript';
import { mediawiki } from './mediawiki';
import { cssCompletion } from './css';
export default (config) => {
const { language, support } = mediawiki(config), lang = new LanguageSupport(htmlLanguage.configure({
wrap: configureNesting([
{ tag: 'script', parser: javascriptLanguage.parser },
{ tag: 'style', parser: cssLanguage.parser },
{ tag: 'noinclude', parser: language.parser },
], [{ name: 'style', parser: cssLanguage.parser.configure({ top: 'Styles' }) }]),
}), [
htmlLanguage.data.of({
autocomplete: htmlCompletionSourceWith({
extraTags: {
noinclude: { globalAttrs: false },
},
}),
}),
javascript().support,
jsCompletion,
cssCompletion(),
support,
]);
Object.assign(lang, { nestedMWLanguage: language });
return lang;
};