CodeMirror is a JavaScript library that can be used to create a relatively pleasant editor interface for code-like content ― computer programs, HTML markup, and similar. If a parser has been written for the language you are editing (see below for a list of supported languages), the code will be coloured, and the editor will help you with indentation.
To get a look at CodeMirror, see the test pages for the various parsers...
Or take a look at some real-world uses of the system...
22-07-2010: Version 0.8:
cursorCoords
method to find the screen
coordinates of the cursor.height: dynamic
mode, where the editor's
height will adjust to the size of its content.toTextArea
method in instances created with
fromTextArea
.21-06-2010: Version 0.7:
.submit()
on a form with
a fromTextArea
CodeMirror failed to submit the
edited content.27-04-2010: Version
0.67: More consistent page-up/page-down behaviour across browsers.
Fix some issues with hidden editors looping forever when line-numbers
were enabled. Make PHP parser parse "\\"
correctly. Have
jumpToLine
work on line handles, and add
cursorLine
function to fetch the line handle where the
cursor currently is. Add new setStylesheet
function to
switch style-sheets in a running editor.
01-03-2010: Version
0.66: Adds removeLine
method to API. Introduces the
PLSQL parser. Marks XML errors
by adding (rather than replacing) a CSS class, so that they can be
disabled by modifying their style. Fixes several selection bugs, and a
number of small glitches.
12-11-2009: Version
0.65: Add support for having both line-wrapping and line-numbers
turned on, make paren-highlighting style customisable
(markParen
and unmarkParen
config options),
work around a selection bug that Opera reintroduced in
version 10.
23-10-2009: Version
0.64: Solves some issues introduced by the paste-handling changes
from the previous release. Adds setSpellcheck
,
setTextWrapping
, setIndentUnit
,
setUndoDepth
, setTabMode
, and
setLineNumbers
to customise a running editor. Introduces
an SQL parser. Fixes a few small
problems in the Python parser.
And, as usual, add workarounds for various newly discovered browser
incompatibilities.
31-08-2009: Version 0.63: Overhaul of paste-handling (less fragile), fixes for several serious IE8 issues (cursor jumping, end-of-document bugs) and a number of small problems.
30-05-2009: Version
0.62: Introduces Python
and Lua parsers. Add
setParser
(on-the-fly mode changing) and
clearHistory
methods. Make parsing passes time-based
instead of lines-based (see the passTime
option).
At this time, the following browsers are supported:
Making it work on other browsers that have decent support for the W3C DOM model should not be too hard, but I am not actively testing against those.
All of CodeMirror is released under a zlib-style license. To get it, you can download the latest release or the current development snapshot as zip files, try the compression API to create a compressed version, or use git to get the repository:
git clone http://marijn.haverbeke.nl/codemirror/.git
This second method is recommended if you are planning to hack on CodeMirror ― it makes it easy to record your patches and share them with me. CodeMirror can also be found on GitHub: http://github.com/marijnh/CodeMirror.
There is a Google group (a sort of mailing list/newsgroup thingy) for discussion and news related to CodeMirror. Please check the FAQ before asking a questoin. You can also e-mail me directly: Marijn Haverbeke.