打开/关闭菜单
打开/关闭外观设置菜单
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

OTTOWiki:Gadget-CodeMirror6.js

来自OTTOWiki
OctoberSama留言 | 贡献2025年7月5日 (六) 19:59的版本 (创建页面,内容为“if (mw.config.get('wgAction') === 'edit' || mw.config.get('wgAction') === 'submit') { mw.loader.load('https://cdn.jsdelivr.net/npm/@bhsd/codemirror-mediawiki/mediawiki.css', 'text/css'); (async function() { await mw.loader.using('mediawiki.Title'); if (!window.CodeMirror6) { await import('https://cdn.jsdelivr.net/npm/@bhsd/codemirror-mediawiki/dist/wiki.min.js'); } const textarea = document.getElementById('wpT…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)

if (mw.config.get('wgAction') === 'edit' || mw.config.get('wgAction') === 'submit') {

   mw.loader.load('https://cdn.jsdelivr.net/npm/@bhsd/codemirror-mediawiki/mediawiki.css', 'text/css');
   (async function() {
       await mw.loader.using('mediawiki.Title');
       if (!window.CodeMirror6) {
           await import('https://cdn.jsdelivr.net/npm/@bhsd/codemirror-mediawiki/dist/wiki.min.js');
       }
       const textarea = document.getElementById('wpTextbox1');
       if (textarea) {
           const page = new mw.Title(mw.config.get('wgPageName'));
           const getPageMode = (page) => {
               const { namespace, title } = page;
               const ext = page.getExtension()?.toLowerCase();
               const isSubject = namespace % 2 === 0;
               if (ext === 'css' && isSubject) {
                   return [2, 8, 2300].includes(namespace) ? 'css' : 'sanitized-css';
               } else if (ext === 'js' && isSubject) {
                   return 'javascript';
               } else if (ext === 'json' && isSubject) {
                   return 'json';
               } else if (namespace === 828 && !title.endsWith('/doc')) {
                   return 'lua';
               } else if (namespace === 274 && !title.endsWith('/doc')) {
                   return 'html';
               }
               return 'mediawiki';
           };
           const mode = getPageMode(page);
           const cm = await CodeMirror6.fromTextArea(textarea, mode, page.getNamespaceId());
           if (mode === 'mediawiki') {
               try {
                   const config = mw.config.get('extCodeMirrorConfig');
                   if (config?.urlProtocols.includes('\\:')) {
                       config.urlProtocols = config.urlProtocols.replace(/\\:/g, ':');
                       cm.setLanguage('mediawiki', config);
                   }
               } catch (error) {
                   console.error('Failed to load or apply mwConfig:', error.message, error.stack);
               }
           }
       }
   })();

}