User:Rillke/acewiki.js
Jump to navigation
Jump to search
Note: After saving, you have to bypass your browser's cache to see the changes. Internet Explorer: press Ctrl-F5, Mozilla: hold down Shift while clicking Reload (or press Ctrl-Shift-R), Opera/Konqueror: press F5, Safari: hold down Shift + Alt while clicking Reload, Chrome: hold down Shift while clicking Reload.
Documentation for this user script can be added at User:Rillke/acewiki. |
- Report page listing warnings and errors.
(function() {
var tb1 = document.getElementById('wpTextbox1'),
fileExtRegExp = /\S+\.(\S{2,5})/,
page = mw.config.get( 'wgPageName' ),
ns = mw.config.get( 'wgNamespaceNumber' ),
customScripts = $.noop,
codeNS = [ 8, 2 ],
extensionMap = {
'py': 'python',
'rb': 'ruby',
'cpp': 'c_cpp'
},
deps = [
"ext.codeEditor.ace"
],
deps2 = ["jquery.ui"],
deps3 = ["ext.codeEditor", "ext.wikiEditor", "jquery.client"],
wikiace = 'ext.codeEditor.ace.wiki',
wikiacecodebase = 'https://de.wikipedia.org/w/index.php?title=Benutzer:Matthias_M./AceWiki/$1&action=raw&ctype=text/javascript',
$tb1, type, ext;
ext = page.match(fileExtRegExp);
if (!ext || !($.inArray( ns, codeNS ) > -1)) {
type = 'wiki';
} else {
ext = ext[1].toLowerCase();
if (ext in extensionMap) {
deps2.push('ext.codeEditor.ace.modes');
type = extensionMap[ext];
}
}
if (/\.js(?:\/.+)?$/.test(page) && ($.inArray( ns, codeNS ) > -1)) {
type = 'javascript';
}
switch (type) {
case 'css':
importScript('MediaWiki:Gadget-CSSValidate.js');
break;
case 'javascript':
break;
case 'wiki':
if (null === mw.loader.getState(wikiace))
customScripts = function() {
mw.loader.implement(wikiace, [wikiacecodebase.replace('$1', 'ace/mode-wiki.js'), wikiacecodebase.replace('$1', 'ace/theme-wiki.js')],
{ /*no styles*/ }, { /*no messages*/ });
deps2.push(wikiace);
};
break;
}
if (!tb1) return;
$tb1 = $(tb1);
if ($tb1.attr('readonly')) return;
function allLoaded() {
mw.hook( "codeEditor.configure" ).add(function() {
var ce,
we = $(tb1).data('wikiEditor-context');
// Wiki editor?
if (!we) return;
// Code editor pluggedIn?
ce = we.codeEditor;
if (!ce) return;
var profile = jQuery.client.profile(),
inCompat = $.inArray(profile.name, ['chrome', 'firefox']) < 0;
if (inCompat && we.api && we.fn) {
we.fn.disableCodeEditor();
we.api.removeFromToolbar(context, {
'section': 'main',
'group': 'format',
'tools': 'codeEditor'
});
}
ce.getSession().setUseSoftTabs(false);
if ('wiki' === type) ce.getSession().setUseWrapMode(true);
});
}
mw.config.set('wgCodeEditorCurrentLanguage', type);
mw.loader.using( deps, function() {
customScripts();
mw.loader.using( deps2, function() {
mw.loader.using( deps3, function() {
allLoaded();
});
});
} );
})();