Release 3.0

Showing 1-7 of 7 messages
Release 3.0 Marijn Haverbeke 12/10/12 5:23 AM
Hi list,

Finally, almost four months after the v3 branch was originally opened,
there's a stable version 3.0 out. That means that even the most
cautious users can now feel comfortable using its wonderful new

 - Use arbitrary fonts and line heights inside the editor
 - Proper handling of right-to-left scripts (Arabic, Hebrew)
 - Insert widgets inline (between lines) in the editor
 - Replace arbitrary pieces of content with widgets
 - Mark ranges of text as read-only or atomic (a single unit wrt cursor motion)
 - More modular event handling (.on / .off methods, rather than a
single option per event)
 - Improved add-on API (define new options, modularly add keymaps or
line styles without trampling on other code)
 - Support for multiple gutters
 - Gutter no longer scrolls horizontally with the content

See for an upgrade guide.

This means that from now on, the 3.x branch is the active branch.
There will, most likely, be several more 2.x releases, but these will
only contain important bugfixes. Day-to-day maintenance and
improvement will only happen on the 3.x branch.

Logistically, the 'master' branch of the repository now holds the 3.x
code. The 2.x code lives under the 'v2' branch. The 'v3' branch is no
more. now refers to a checkout of the 3.x
branch. refers to a 2.x checkout.

Get yours at . Find a full
list of patches that have been added since v3 branched off v2 at

Have fun,
Re: [CodeMirror] Release 3.0 Johannes Reichardt 12/12/12 5:30 AM
Found a small bug with undefined element "elt" using getHistory, this
hack on line 2393 solved it for me for now:

     if (typeof elt != 'undefined' && elt.length) {
         for (var j = 0, elt =; j < elt.length; ++j) {
             var old = [], cur = elt[j];
             nwelt.push({start: cur.start, added: cur.added, old: old});
             for (var k = 0; k < cur.old.length; ++k)

- Johannes
Re: [CodeMirror] Release 3.0 Marijn Haverbeke 12/12/12 6:14 AM
>     if (typeof elt != 'undefined' && elt.length) {
>         for (var j = 0, elt =; j < elt.length; ++j) {

That makes no sense whatsoever. You're checking for properties on the
elt variable right before it is going to be set to its initial value,
which will just result in the loop never being run. Can you describe
the steps you took that triggered the problem?
Re: [CodeMirror] Release 3.0 Johannes Reichardt 12/12/12 6:47 AM
Yeah you are right, it is hard to track down where it came from - right
now it doesnt appear anymore even without the code. I am not sure what
happens if you call getHistory when the document ist not fully parsed or
something like that, probably it makes sense to check if arr[i].events
is defined?
Re: Release 3.0 Narciso Jaramillo 12/12/12 9:12 AM
Congratulations! So many great additions in this version.

Re: [CodeMirror] Re: Release 3.0 Ian Johnson 12/12/12 11:20 AM
congrats! this is awesome. can't wait to upgrade :)

You are receiving this because you are currently a member of the CodeMirror Google group. To send something to list, use, to unsubscribe, send a message to

Ian Johnson - 周彦
Re: Release 3.0 Artur Carvalho 12/12/12 2:19 PM
Congrats and thank you for the great framework!