Extension:CodeEditor
CodeEditor Release status: stable |
|
---|---|
![]() |
|
Description | Provides a syntax-highlighting code editor for site & user JS, CSS and Lua pages, integrating with advanced edit toolbar |
Author(s) |
|
Compatibility policy | release branches |
MediaWiki | 1.32+ |
Database changes | No |
License | GPL-2.0-or-later AND BSD-3-Clause |
Download | |
|
|
Translate the CodeEditor extension if it is available at translatewiki.net | |
Issues | Open tasks · Report a bug |
The CodeEditor extension extends the WikiEditor advanced editing toolbar with an embedded Ace editor widget, providing some handy features for user/site JavaScript pages, CSS pages, JSON pages, and when extension Scribunto is also installed, for LUA pages, i.e. pages in the Module namespace. The code editor does not show on regular wiki pages, i.e. wiki pages with the "wikitext" content model.
It provides the following features:
- syntax highlighting for JavaScript, CSS and Lua
- auto-indent
- tab key produces tab indents (since 1.22), soft indents before.
- indent/unindent selection with tab/shift-tab
- syntax validity check for JavaScript
- Pair-matching for parenthesis, braces and square brackets
InstallationEdit
- If using Vagrant , install with
vagrant roles enable codeeditor --provision
- Manual installation
- Download and place the file(s) in a directory called
CodeEditor
in yourextensions/
folder. - Add the following code at the bottom of your LocalSettings.php:
wfLoadExtension( 'CodeEditor' ); $wgDefaultUserOptions['usebetatoolbar'] = 1; // user option provided by WikiEditor extension
- Configure as required.
- Done – Navigate to Special:Version on your wiki to verify that the extension is successfully installed.
ConfigurationEdit
$wgCodeEditorEnableCore
- To disable the editor on JavaScript and CSS pages in the MediaWiki, User and other core namespaces, set
$wgCodeEditorEnableCore = false;
(default is "true")
$wgScribuntoUseCodeEditor
- To disable this extension for Scribunto, i.e. in the module namespace set
$wgScribuntoUseCodeEditor = false;
(default is "true")
- JavaScript
It is possible to change the configuration of the ACE editor, by hooking into the MediaWiki JS hook (i.e. mw.hook( 'codeEditor.configure' ).add( ... )
).
The argument passed to your hook will be an ACE editor session.
WikiEditor integrationEdit
This page is outdated. |
I've been integrating CodeEditor into the pluggable portions of Extension:WikiEditor as prep for Future editor work, since we'll want to be able to extend it to edit things that aren't plain wikitext, which'll need some changes to the toolbar setup and whatnot. JS/CSS here still return plain text in the end, making it an easier intermediate project. --brion 00:26, 14 June 2011 (UTC)
Good:
- special char insertions work, including quote pairs to surround text
- basic formatting insertions work, including link dialogs
- search/replace dialog works
- ace's built-in search/replace UI also triggers from keyboard commands, still need to disable them! (onCommandKey)
Bad:
- multi-line formatting doesn't apply correctly (but really should that apply here? :)
Todo:
- remove toolbar buttons that don't apply (formatting, syntax help?)
- add toolbar buttons that are more directly useful
- indent/outdent
- insertion helpers for common keywords or code bits
- help reference to MW JS API reference, JS & CSS specs/documentation
Known IssuesEdit
This page is outdated. |
- accessibility: tab/shift-tab are overridden. is there a consistent alternative for keyboard-reliant users?
- accessibility: accesskey on the original textarea needs to be moved over or otherwise handled
- scrollbar initializes too wide; need to trigger resize check after that's filled (maybe fixed?)
- cursor/scroll position not maintained over previews/show changes
LicenseEdit
While this extension is licensed GNU General Public License v2.0 or later (GPL-2.0+) it makes use of the Ace editor software which is licensed BSD 3-clause "New" or "Revised" License (BSD-3-Clause).
This extension is being used on one or more Wikimedia projects. This probably means that the extension is stable and works well enough to be used by such high-traffic websites. Look for this extension's name in Wikimedia's CommonSettings.php and InitialiseSettings.php configuration files to see where it's installed. A full list of the extensions installed on a particular wiki can be seen on the wiki's Special:Version page. |