# { } CodeMirror

    /* Old release
       history */

22-10-2012: Version 3.0, beta 2:

- Fix page-based coordinate computation.
- Fix firing of `gutterClick` event.
- Add `cursorHeight` option.
- Fix bi-directional text regression.
- Add `viewportMargin` option.
- Directly handle mousewheel events (again, hopefully better).
- Make vertical cursor movement more robust (through widgets, big line gaps).
- Add `flattenSpans` option.
- Many optimizations. Poor responsiveness should be fixed.
- Initialization in hidden state works again.
- Full list of patches.

19-09-2012: Version 2.34:

- New mode: Common Lisp.
- Fix right-click select-all on most browsers.
- Change the way highlighting happens:
  Saves memory and CPU cycles.
  `compareStates` is no longer needed.
  `onHighlightComplete` no longer works.
- Integrate mode (Markdown, XQuery, CSS, sTex) tests in central testsuite.
- Add a `CodeMirror.version` property.
- More robust handling of nested modes in formatting and closetag plug-ins.
- Un/redo now preserves marked text and bookmarks.
- Full list of patches.

19-09-2012: Version 3.0, beta 1:

- Bi-directional text support.
- More powerful gutter model.
- Support for arbitrary text/widget height.
- In-line widgets.
- Generalized event handling.

23-08-2012: Version 2.33:

- New mode: Sieve.
- New `getViewPort` and `onViewportChange` API.
- Configurable cursor blink rate.
- Make binding a key to `false` disabling handling (again).
- Show non-printing characters as red dots.
- More tweaks to the scrolling model.
- Expanded testsuite. Basic linter added.
- Remove most uses of `innerHTML`. Remove `CodeMirror.htmlEscape`.
- Full list of patches.

23-07-2012: Version 2.32:

Emergency fix for a bug where an editor with line wrapping on IE will break when there is no scrollbar.

20-07-2012: Version 2.31:

- New modes: OCaml, Haxe, and VB.NET.
- Several fixes to the new scrolling model.
- Add a `setSize` method for programmatic resizing.
- Add `getHistory` and `setHistory` methods.
- Allow custom line separator string in `getValue` and `getRange`.
- Support double- and triple-click drag, double-clicking whitespace.
- And more... (all patches)

22-06-2012: Version 2.3:

- New scrollbar implementation. Should flicker less. Changes DOM structure of the editor.
- New theme: vibrant-ink.
- Many extensions to the VIM keymap (including text objects).
- Add mode-multiplexing utility script.
- Fix bug where right-click paste works in read-only mode.
- Add a `getScrollInfo` method.
- Lots of other fixes.

23-05-2012: Version 2.25:

- New mode: Erlang.
- Remove xmlpure mode (use xml.js).
- Fix line-wrapping in Opera.
- Fix X Windows middle-click paste in Chrome.
- Fix bug that broke pasting of huge documents.
- Fix backspace and tab key repeat in Opera.

23-04-2012: Version 2.24:

- Drop support for Internet Explorer 6.
- New modes: Shell, Tiki wiki, Pig Latin.
- New themes: Ambiance, Blackboard.
- More control over drag/drop with `dragDrop` and `onDragEvent` options.
- Make HTML mode a bit less pedantic.
- Add `compoundChange` API method.
- Several fixes in undo history and line hiding.
- Remove (broken) support for `catchall` in key maps, add `nofallthrough` boolean field instead.

26-03-2012: Version 2.23:

- Change default binding for tab [more]
  Starting in 2.23, these bindings are default:
  - Tab: Insert tab character
  - Shift-tab: Reset line indentation to default
  - Ctrl/Cmd-[: Reduce line indentation (old tab behaviour)
  - Ctrl/Cmd-]: Increase line indentation (old shift-tab behaviour)
- New modes: XQuery and VBScript.
- Two new themes: lesser-dark and xq-dark.
- Differentiate between background and text styles in `setLineClass`.
- Fix drag-and-drop in IE9+.
- Extend `charCoords` and `cursorCoords` with a `mode` argument.
- Add `autofocus` option.
- Add `findMarksAt` method.

27-02-2012: Version 2.22:

- Allow key handlers to pass up events, allow binding characters.
- Add `autoClearEmptyLines` option.
- Properly use tab stops when rendering tabs.
- Make PHP mode more robust.
- Support indentation blocks in code folder.
- Add a script for highlighting instances of the selection.
- New .properties mode.
- Fix many bugs.

27-01-2012: Version 2.21:

- Added LESS, MySQL, Go, and Verilog modes.
- Add `smartIndent` option.
- Support a cursor in `readOnly`-mode.
- Support assigning multiple styles to a token.
- Use a new approach to drawing the selection.
- Add `scrollTo` method.
- Allow undo/redo events to span non-adjacent lines.
- Lots and lots of bugfixes.

20-12-2011: Version 2.2:

- Slightly incompatible API changes. Read this.
- New approach to binding keys, support for custom bindings.
- Support for overwrite (insert).
- Custom-width and stylable tabs.
- Moved more code into add-on scripts.
- Support for sane vertical cursor movement in wrapped lines.
- More reliable handling of editing marked text.
- Add minimal emacs and vim bindings.
- Rename `coordsFromIndex` to `posFromIndex`, add `indexFromPos` method.

21-11-2011: Version 2.18:

Fixes `TextMarker.clear`, which is broken in 2.17.

21-11-2011: Version 2.17:

- Add support for line wrapping and code folding.
- Add Github-style Markdown mode.
- Add Monokai and Rubyblue themes.
- Add `setBookmark` method.
- Move some of the demo code into reusable components under `lib/util`.
- Make screen-coord-finding code faster and more reliable.
- Fix drag-and-drop in Firefox.
- Improve support for IME.
- Speed up content rendering.
- Fix browser's built-in search in Webkit.
- Make double- and triple-click work in IE.
- Various fixes to modes.

27-10-2011: Version 2.16:

- Add Perl, Rust, TiddlyWiki, and Groovy modes.
- Dragging text inside the editor now moves, rather than copies.
- Add a `coordsFromIndex` method.
- API change: `setValue` now no longer clears history. Use `clearHistory` for that.
- API change: `markText` now returns an object with `clear` and `find` methods. Marked text is now more robust when edited.
- Fix editing code with tabs in Internet Explorer.

26-09-2011: Version 2.15:

Fix bug that snuck into 2.14: Clicking the character that currently has the cursor didn't re-focus the editor.

26-09-2011: Version 2.14:

- Add Clojure, Pascal, NTriples, Jinja2, and Markdown modes.
- Add Cobalt and Eclipse themes.
- Add a `fixedGutter` option.
- Fix bug with `setValue` breaking cursor movement.
- Make gutter updates much more efficient.
- Allow dragging of text out of the editor (on modern browsers).

23-08-2011: Version 2.13:

- Add Ruby, R, CoffeeScript, and Velocity modes.
- Add `getGutterElement` to API.
- Several fixes to scrolling and positioning.
- Add `smartHome` option.
- Add an experimental pure XML mode.

25-07-2011: Version 2.12:

- Add a SPARQL mode.
- Fix bug with cursor jumping around in an unfocused editor in IE.
- Allow key and mouse events to bubble out of the editor. Ignore widget clicks.
- Solve cursor flakiness after undo/redo.
- Fix block-reindent ignoring the last few lines.
- Fix parsing of multi-line attrs in XML mode.
- Use `innerHTML` for HTML-escaping.
- Some fixes to indentation in C-like mode.
- Shrink horiz scrollbars when long lines removed.
- Fix width feedback loop bug that caused the width of an inner DIV to shrink.

04-07-2011: Version 2.11:

- Add a Scheme mode.
- Add a `replace` method to search cursors, for cursor-preserving replacements.
- Make the C-like mode mode more customizable.
- Update XML mode to spot mismatched tags.
- Add `getStateAfter` API and `compareState` mode API methods for finer-grained mode magic.
- Add a `getScrollerElement` API method to manipulate the scrolling DIV.
- Fix drag-and-drop for Firefox.
- Add a C# configuration for the C-like mode.
- Add full-screen editing and mode-changing demos.

07-06-2011: Version 2.1:

Add a theme system (demo). Note that this is not backwards-compatible—you'll have to update your styles and modes!

07-06-2011: Version 2.02:

- Add a Lua mode.
- Fix reverse-searching for a regexp.
- Empty lines can no longer break highlighting.
- Rework scrolling model (the outer wrapper no longer does the scrolling).
- Solve horizontal jittering on long lines.
- Add runmode.js.
- Immediately re-highlight text when typing.
- Fix problem with 'sticking' horizontal scrollbar.

26-05-2011: Version 2.01:

- Add a Smalltalk mode.
- Add a reStructuredText mode.
- Add a Python mode.
- Add a PL/SQL mode.
- `coordsChar` now works
- Fix a problem where `onCursorActivity` interfered with `onChange`.
- Fix a number of scrolling and mouse-click-position glitches.
- Pass information about the changed lines to `onChange`.
- Support cmd-up/down on OS X.
- Add triple-click line selection.
- Don't handle shift when changing the selection through the API.
- Support `"nocursor"` mode for `readOnly` option.
- Add an `onHighlightComplete` option.
- Fix the context menu for Firefox.

28-03-2011: Version 2.0:

CodeMirror 2 is a complete rewrite that's faster, smaller, simpler to use, and less dependent on browser quirks. See this and this for more information.

28-03-2011: Version 1.0:

- Fix error when debug history overflows.
- Refine handling of C# verbatim strings.
- Fix some issues with JavaScript indentation.

22-02-2011: Version 2.0 beta 2:

Somewhat more mature API, lots of bugs shaken out.

17-02-2011: Version 0.94:

- `tabMode: "spaces"` was modified slightly (now indents when something is selected).
- Fixes a bug that would cause the selection code to break on some IE versions.
- Disabling spell-check on WebKit browsers now works.

08-02-2011: Version 2.0 beta 1:

CodeMirror 2 is a complete rewrite of CodeMirror, no longer depending on an editable frame.

19-01-2011: Version 0.93:

- Added a Regular Expression parser.
- Fixes to the PHP parser.
- Support for regular expression in search/replace.
- Add `save` method to instances created with `fromTextArea`.
- Add support for MS T-SQL in the SQL parser.
- Support use of CSS classes for highlighting brackets.
- Fix yet another hang with line-numbering in hidden editors.

17-12-2010: Version 0.92:

- Make CodeMirror work in XHTML documents.
- Fix bug in handling of backslashes in Python strings.
- The `styleNumbers` option is now officially supported and documented.
- `onLineNumberClick` option added.
- More consistent names `onLoad` and `onCursorActivity` callbacks. Old names still work, but are deprecated.
- Add a Freemarker mode.

11-11-2010: Version 0.91:

- Adds support for Java.
- Small additions to the PHP and SQL parsers.
- Work around various Webkit issues.
- Fix `toTextArea` to update the code in the textarea.
- Add a `noScriptCaching` option (hack to ease development).
- Make sub-modes of HTML mixed mode configurable.

02-10-2010: Version 0.9:

- Add support for searching backwards.
- There are now parsers for Scheme, XQuery, and OmetaJS.
- Makes `height: "dynamic"` more robust.
- Fixes bug where paste did not work on OS X.
- Add a `enterMode` and `electricChars` options to make indentation even more customizable.
- Add `firstLineNumber` option.
- Fix bad handling of `@media` rules by the CSS parser.
- Take a new, more robust approach to working around the invisible-last-line bug in WebKit.

22-07-2010: Version 0.8:

- Add a `cursorCoords` method to find the screen coordinates of the cursor.
- A number of fixes and support for more syntax in the PHP parser.
- Fix indentation problem with JSON-mode JS parser in Webkit.
- Add a minification UI.
- Support a `height: dynamic` mode, where the editor's height will adjust to the size of its content.
- Better support for IME input mode.
- Fix JavaScript parser getting confused when seeing a no-argument function call.
- Have CSS parser see the difference between selectors and other identifiers.
- Fix scrolling bug when pasting in a horizontally-scrolled editor.
- Support `toTextArea` method in instances created with `fromTextArea`.
- Work around new Opera cursor bug that causes the cursor to jump when pressing backspace at the end of a line.

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).