diff --git a/compress.html b/compress.html
index 9d9609a8d65465f2c4dc19ad3b55d1da8ed225e8..7d346b78c25f9680298ded91457e77fe458dc7ee 100644
--- a/compress.html
+++ b/compress.html
@@ -1,12 +1,26 @@
 <!doctype html>
 <html>
   <head>
-    <title>CodeMirror 2: Compression Helper</title>
+    <title>CodeMirror: Compression Helper</title>
+    <link rel="stylesheet" type="text/css" href="css/docs.css"/>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
-    <link rel="stylesheet" href="docs.css">
   </head>
   <body>
-    <h1>CodeMirror 2: Compression Helper</h1>
+
+<h1><span class="logo-braces">{ }</span> <a href="http://codemirror.net/">CodeMirror</a></h1>
+
+<pre class="grey">
+<img src="css/baboon.png" class="logo" alt="logo"/>/* Script compression
+   helper */
+</pre>
+
+    <p>To optimize loading CodeMirror, especially when including a
+    bunch of different modes, it is recommended that you combine and
+    minify (and preferably also gzip) the scrips. This page makes
+    those first two steps very easy. Simply select the version and
+    scripts you need in the form below, and
+    click <strong>Compress</strong> to download the minified script
+    file.</p>
 
     <form id="form" action="http://marijnhaverbeke.nl/uglifyjs" method="post">
       <input type="hidden" id="download" name="download" value="codemirror-compressed.js"/>
@@ -30,6 +44,7 @@
           <option value="http://codemirror.net/2/mode/php/php.js">php.js</option>
           <option value="http://codemirror.net/2/mode/haskell/haskell.js">haskell.js</option>
           <option value="http://codemirror.net/2/mode/diff/diff.js">diff.js</option>
+          <option value="http://codemirror.net/2/mode/stex/stex.js">stex.js</option>
         </optgroup>
       </select></p>
 
@@ -55,6 +70,7 @@
           }
        }
     </script>
+    <script type="text/javascript" src="css/font.js"></script>
 
   </body>
 </html>
diff --git a/css/baboon.png b/css/baboon.png
new file mode 100644
index 0000000000000000000000000000000000000000..55d97f70b817ff2b78ebb409bf34a5147fe40d07
Binary files /dev/null and b/css/baboon.png differ
diff --git a/css/baboon_vector.svg b/css/baboon_vector.svg
new file mode 100644
index 0000000000000000000000000000000000000000..dc1667af91371787b979f9155061ff5d954f3ece
--- /dev/null
+++ b/css/baboon_vector.svg
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   id="svg3181"
+   version="1.1"
+   inkscape:version="0.48.0 r9654"
+   width="1750"
+   height="960"
+   xml:space="preserve"
+   sodipodi:docname="baboon_vector.svg"><metadata
+     id="metadata3187"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+     id="defs3185"><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath3195"><path
+         d="M 0,768 1400,768 1400,0 0,0 0,768 z"
+         id="path3197" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath3215"><path
+         d="M 0,768 1400,768 1400,0 0,0 0,768 z"
+         id="path3217" /></clipPath></defs><sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1440"
+     inkscape:window-height="851"
+     id="namedview3183"
+     showgrid="false"
+     inkscape:zoom="0.20550291"
+     inkscape:cx="1534.1667"
+     inkscape:cy="795.78156"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="g3189" /><g
+     id="g3189"
+     inkscape:groupmode="layer"
+     inkscape:label="baboon_vector"
+     transform="matrix(1.25,0,0,-1.25,0,960)"><g
+       id="g3191"><g
+         id="g3193"
+         clip-path="url(#clipPath3195)"><g
+           id="g3199"
+           transform="translate(458.9561,569.9678)"><path
+             d="m 0,0 59.835,69.355 87.034,26.518 133.949,-7.479 c 0,0 74.116,-32.639 74.795,-34.678 0.68,-2.04 84.314,-59.155 84.314,-59.155 l 12.238,-74.795 5.439,-97.912 -13.598,-25.159 -4.76,-40.797 -18.358,-23.118 24.39,-5.561 0.501,-5.192 -14.012,-60.641 16.477,-93.368 7.223,-49.972 -208.295,-51.754 -18.552,4.005 -37.468,8.325 -10.036,4.036 -66.885,10.101 c 0,0 -14.959,74.793 -16.999,73.433 -2.039,-1.359 -42.836,56.437 -42.836,56.437 l -19.719,65.274 12.48,74.571 -7.961,9.643 -26.479,16.187 -12.716,38.309 4.08,48.277 8.769,38.985 L 6.608,-74.308 0,0 z"
+             style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             id="path3201" /></g><g
+           id="g3203"
+           transform="translate(78.8657,682.1582)"><path
+             d="M 0,0 142.789,40.797 259.74,52.355 313.457,-232.543 204.665,-291.698 78.194,-293.738 0,0 z"
+             style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             id="path3205" /></g><g
+           id="g3207"
+           transform="translate(269.5122,345.2344)"><path
+             d="M 0,0 18.801,-74.425 40.728,-85.408 59.539,-59.541 40.259,13.503 36.821,15.669 0,0 z"
+             style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+             id="path3209" /></g></g></g><g
+       id="g3223"
+       transform="translate(741.918,109.0332)"><path
+         d="m 0,0 -17.236,-9.401 -16.452,-22.721 -0.783,12.537 6.268,17.234 13.317,6.268 L 0,7.833 14.884,3.917 0,0 z m 172.622,-21.824 c -0.031,0.271 -0.081,0.535 -0.117,0.804 -20.85,7.653 -49.59,7.327 -66.874,10.927 -13.849,2.886 -23.047,9.119 -27.032,12.298 -9.863,-8.494 -12.025,-14.377 -12.025,-14.377 0,0 -9.816,15.309 -30.17,25.76 -7.05,3.621 -17.767,5.691 -29.341,5.691 -24.297,0 -52.384,-9.155 -58.339,-32.223 -10.458,-40.511 9.697,-76.594 49.814,-77.623 1.325,-0.034 2.623,-0.12 3.894,-0.12 36.131,0 48.855,8.572 58.323,15.478 0.027,0.021 0.104,0 0.104,0 0,0 25.126,-11.506 53.529,-11.506 4.419,0 9.156,0.415 14.249,1.063 31.641,4.018 47.989,28.124 43.985,63.828"
+         style="fill:#df0019;fill-opacity:1;fill-rule:nonzero;stroke:none"
+         id="path3225"
+         inkscape:connector-curvature="0" /></g><g
+       id="g3227"
+       transform="translate(300.8481,270.0254)"><path
+         d="m 0,0 c -3.063,-0.691 -12.535,0.784 -12.535,0.784 l 6.267,-25.853 43.481,13.319 -9.01,27.418 C 28.203,15.668 7.867,1.777 0,0"
+         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+         id="path3229"
+         inkscape:connector-curvature="0" /></g><g
+       id="g3231"
+       transform="translate(211.66052,615.85984)"><path
+         d="m 0,0 -16.243,-2.871 -15.462,-9.4 4.323,-10.938 14.568,9.89 L 2.75,-8.771 0,0 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+         id="path3233"
+         inkscape:connector-curvature="0" /></g><g
+       id="g3235"
+       transform="translate(274.15732,626.4084)"><path
+         d="m 0,0 -15.64,0.407 -14.279,-3.608 2.008,-9.747 14.756,4.208 L 1.111,-8.215 0,0 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+         id="path3237"
+         inkscape:connector-curvature="0" /></g><path
+       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       d="M 436.65625 22.28125 C 436.65625 22.28125 338.18375 25.385 251 42.8125 C 163.24875 60.35375 70.40625 99.65625 70.40625 99.65625 L 175.1875 495.28125 L 327.96875 492.34375 L 337.75 527.59375 C 337.75 527.59375 365.095 523.25875 373 518.78125 C 376.31375 516.90375 383.78125 508 383.78125 508 L 377.75 484.65625 L 504.21875 407.15625 L 436.65625 22.28125 z M 410.53125 55.1875 L 465.6875 393.3125 L 346.59375 456.625 L 202.75 466.46875 L 112 114.40625 L 263 79.1875 L 410.53125 55.1875 z "
+       transform="matrix(0.8,0,0,-0.8,0,768)"
+       id="path3253" /><g
+       id="g3247"
+       transform="matrix(1.199238,-0.02879331,0.02673084,1.0520756,172.41935,498.37339)"><path
+         d="m 0,0 c 0,0 -1.861,1.481 -9.143,-1.457 9.712,18.867 9.439,39.989 9.439,39.989 0,0 -3.106,-2.465 -11.311,-8.47 9.241,23.044 5.338,72.525 5.338,72.525 0,0 -17.493,40.746 -13.657,45.799 8.841,11.65 23.834,23.968 44.295,25.594 17.935,1.424 44.606,-4.953 55.865,-15.284 4.536,-4.161 23.367,-47.493 23.367,-47.493 0,0 6.104,-35.271 11.619,-54.108 5.513,-18.839 11.054,-26.674 21.284,-34.825 17.831,-14.207 27.076,-29.938 27.076,-29.938 L 143.399,3.945 c 3.655,-17.356 14.875,-34.28 27.39,-47.672 -12.863,1.507 -19.61,8.783 -19.61,8.783 0,0 2.151,-12.664 9.109,-26.554 l 28.712,15.264 -1.762,10.805 c -5.128,9.304 -9.336,15.534 -9.336,15.534 0,0 2.089,0.956 7.385,-3.572 l -2.005,12.296 c -4.814,9.391 -11.773,16.752 -25.115,31.113 5.944,-6.087 15.438,-5.379 20.751,-4.356 l -0.572,3.512 c -2.231,1.278 -5.494,3.171 -10.241,5.957 -12.43,7.299 -22.326,21.049 -22.326,21.049 0,0 12.85,1.815 20.513,11.022 -7.316,-2.641 -18.585,0.799 -18.585,0.799 -17.086,6.772 -15.022,30.217 -17.687,50.587 -2.667,20.37 -9.299,34.125 -9.299,34.125 0,0 -0.243,2.149 11.91,-5.906 -7.744,33.215 -35.545,44.94 -35.545,44.94 0,0 2.223,2.79 22.843,0.044 -16.469,15.817 -32.303,16.896 -32.303,16.896 0,0 10.077,2.25 23.611,0.24 0,0 -3.327,3.508 -7.549,6.453 L 35.985,194.291 -77.543,167.815 -8.211,-101.17 17.481,-99.413 C 8.602,-85.114 -0.371,-63.837 -2.15,-40.857 -4.911,-5.208 0,0 0,0"
+         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+         id="path3249"
+         inkscape:connector-curvature="0" /></g><g
+       id="g3255"
+       transform="translate(204.22134,580.88353)"><path
+         d="m 0,0 c 0,-1.418 0.43,-2.736 1.168,-3.83 1.523,0.677 3.551,1.094 5.786,1.094 2.164,0 4.133,-0.39 5.639,-1.029 0.711,1.081 1.129,2.374 1.129,3.765 0,3.79 -3.072,6.861 -6.861,6.861 C 3.071,6.861 0,3.79 0,0"
+         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+         id="path3257"
+         inkscape:connector-curvature="0" /></g><g
+       id="g3259"
+       transform="translate(256.3311,595.31646)"><path
+         d="m 0,0 c 0,-1.418 0.43,-2.736 1.168,-3.83 1.524,0.677 3.552,1.094 5.787,1.094 2.163,0 4.132,-0.39 5.638,-1.029 0.712,1.081 1.129,2.373 1.129,3.765 0,3.79 -3.072,6.861 -6.861,6.861 C 3.071,6.861 0,3.79 0,0"
+         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+         id="path3261"
+         inkscape:connector-curvature="0" /></g><g
+       id="g4174"
+       transform="matrix(0.99694509,0.07810563,-0.07810563,0.99694509,47.348748,-15.348299)"><g
+         transform="translate(222.5098,610.1558)"
+         id="g3219"><path
+           inkscape:connector-curvature="0"
+           id="path3221"
+           style="fill:#df0019;fill-opacity:1;fill-rule:nonzero;stroke:none"
+           d="m 0,0 4.45,2.752 5.34,3.785 7.05,-8.226 7.093,-33.359 17.801,-51.259 13.86,-30.215 26.261,-1.55 -6.685,-35.653 c 0,0 -49.98,-21.871 -49.545,-21.911 -42.657,4.001 -12.553,43.066 -8.631,47.301 L 3.666,-47.869 0,0 z" /></g><g
+         transform="translate(247.626,467.3545)"
+         id="g3239"><path
+           inkscape:connector-curvature="0"
+           id="path3241"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+           d="M 0,0 C -3.044,-0.345 -5.232,-3.092 -4.888,-6.136 -4.543,-9.18 1.576,-2.254 13.308,-4.961 13.971,-1.97 3.044,0.344 0,0" /></g><g
+         transform="translate(279.4419,476.5762)"
+         id="g3243"><path
+           inkscape:connector-curvature="0"
+           id="path3245"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+           d="M 0,0 C 3.271,1.08 6.798,-0.697 7.88,-3.969 8.96,-7.24 -0.55,-3.044 -11.258,-11.329 -13.345,-8.586 -3.272,-1.081 0,0" /></g><g
+         transform="translate(284.1929,525.9082)"
+         id="g3263"><path
+           inkscape:connector-curvature="0"
+           id="path3265"
+           style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+           d="M 0,0 C 0,0 -6.972,28.671 -6.972,29.355 L 1.585,2.864 9.999,-10.564 13.634,-32.697 7.922,-11.098 0,0 z M -0.633,-15.036 -9.19,-4.86 -16.478,25.776 c -0.202,0.684 9.106,-28.811 9.106,-28.811 l 8.64,-11.642 2.469,-17.336 -4.37,16.977 z m -6.339,-6.085 -10.457,16.826 -5.444,28.646 6.614,-27.842 11.311,-18.026 1.413,-9.583 -3.437,9.979 z m -53.462,-13.246 -1.437,24.944 -2.682,28.754 5.106,-29.895 1.212,-21.677 4.139,-18.236 -6.338,16.11 z m -4.265,-19.55 -6.665,15.516 0.404,29.205 -0.882,28.169 3.104,-28.396 0.808,-26.697 4.242,-15.972 2.423,-6.617 -3.434,4.792 z m -9.695,-2.967 -7.117,16.885 1.318,32.01 0,25.223 2.115,-25.061 -0.581,-31.259 5.869,-16.429 5.056,-8.671 -6.66,7.302 z m 103.144,-7.97 -6.676,20.38 2.141,11.54 L 16.499,-9.376 4.557,13.104 -5.879,53.97 c 0,0 -8.325,-7.41 -16.781,-8.08 -8.455,-0.671 -15.09,4.018 -15.09,4.018 0,0 3.592,-17.761 8.659,-37.597 5.069,-19.836 17.528,-44.866 17.528,-44.866 0,0 21.578,-8.197 24.302,-16.587 2.724,-8.391 -3.508,-22.911 -14.102,-26.551 -10.593,-3.64 -32.284,-8.262 -32.284,-8.262 0,0 -19,1.512 -20.438,14.26 0,0 4.131,16.406 10.418,19.225 6.285,2.819 21.362,11.174 21.362,11.174 l -8.254,1.332 -7.664,-1.332 c 0,0 -4.784,11.295 -10.973,35.086 -6.19,23.79 -8.967,42.485 -8.967,42.485 0,0 -3.912,-4.391 -14.199,-4.885 -10.286,-0.494 -16.031,7.988 -16.031,7.988 l 1.027,-30.185 -1.049,-25.83 -0.15,-29.22 5.102,-15.99 19.818,-30.448 c 0,0 14.102,-9.293 31.728,-9.293 16.453,1.328 51.131,18.047 51.131,18.047 l 9.536,16.687 z" /></g></g><g
+       id="g3267"
+       transform="translate(847.2637,321.5059)"><path
+         d="m 0,0 c 2.252,3.516 6.693,15.3 6.693,15.3 0,0 3.778,-13.306 1.912,-17.213 -3.056,-6.404 -23.905,-15.3 -23.905,-15.3 0,0 12.196,12.364 15.3,17.213 m -33.514,23.16 -0.757,56.352 c 0,0 11.136,-14.028 11.843,-19.739 1.176,-9.491 -11.086,-36.613 -11.086,-36.613 m -17.575,236.921 c 0,0 12.453,-15.338 14.854,-21.39 1.424,-3.591 2.286,-15.287 2.286,-15.287 l -17.14,36.677 z M -98.574,-86.136 c -9.757,-0.906 -29.836,1.016 -38.912,4.708 -7.499,3.05 -25.734,19.656 -25.734,19.656 l 24.187,-10.86 -4.701,17.627 15.272,-22.009 41.813,-5.356 c 0,0 -8.812,-3.477 -11.925,-3.766 m -74.428,157.941 c -4.518,10.057 -1.763,44.065 -1.763,44.065 0,0 7.544,-31.093 12.338,-40.541 6.978,-13.754 37.015,-49.352 37.015,-49.352 0,0 -40.824,30.759 -47.59,45.828 m -17.833,-149.47 -40.407,24.724 1.636,-17.575 0.026,-0.035 -5.178,-29.811 -2.056,-10.701 0.383,-33.34 -4.982,36.406 6.41,41.45 -11.063,8.338 -17.532,43.159 23.502,-38.779 2.351,14.101 40.634,-25.695 11.924,-5.651 13.809,-28.871 -19.457,22.28 z m -85.522,138.863 17.212,-34.424 c 0,0 -12.972,11.185 -15.299,16.257 -1.905,4.152 -1.913,18.167 -1.913,18.167 m -2.367,66.042 c 0,0 -6.206,15.581 -6.323,21.082 -0.168,7.817 4.568,23.148 7.695,30.315 0.755,1.73 4.103,6.341 4.103,6.341 0,0 -4.654,-24.542 -5.347,-32.829 -0.518,-6.205 -0.128,-24.909 -0.128,-24.909 m -7.195,-114.809 c -0.334,3.363 1.912,13.387 1.912,13.387 l 3.825,-29.643 c 0,0 -5.313,11.967 -5.737,16.256 m -20.082,53.549 c -1.394,3.571 -0.956,15.301 -0.956,15.301 l 13.388,-30.6 c 0,0 -10.639,10.71 -12.432,15.299 m -6.03,106.795 c 0,0 -0.315,35.831 4.637,46.379 4.531,9.647 29.936,30.356 29.936,30.356 0,0 -17.824,-22.47 -21.503,-31.2 -5.089,-12.077 -10.119,-51.437 -10.119,-51.437 l -2.951,5.902 z M 50.121,205.01 c 3.335,-9.155 1.168,-38.956 1.168,-38.956 0,0 -5.451,29.987 -9.221,39.366 -4.214,10.487 -23.014,38.907 -23.014,38.907 0,0 26.78,-27.546 31.067,-39.317 M 54.506,95.624 c 0,0 6.884,-18.586 5.738,-24.861 -0.773,-4.241 -9.562,-14.345 -9.562,-14.345 0,0 2.414,12.874 2.868,17.212 0.573,5.474 0.956,21.994 0.956,21.994 M 19.125,-13.389 c 0,0 9.656,22.183 11.062,30.068 1.235,6.941 0,28.203 0,28.203 0,0 8.477,-22.819 7.106,-30.538 C 35.845,6.183 19.125,-13.389 19.125,-13.389 m 441.487,-40.965 c -3.249,8.935 -6.587,17.23 -10.01,24.928 l -1.862,28.873 -8.857,-4.876 -25.862,49.457 -4.828,-10.34 c -32.69,31.48 -70.457,34.284 -111.982,31.646 -65.568,-4.163 -91.587,-41.63 -79.098,-57.241 12.49,-15.613 18.733,-5.205 40.589,5.203 21.858,10.407 74.937,26.017 110.323,-2.082 35.386,-28.1 86.383,-109.281 50.997,-169.646 -35.386,-60.365 -105.626,-105.385 -182.135,-88.465 -86.422,19.112 -126.078,60.082 -177.675,74.811 -8.311,1.334 -18.347,2.789 -24.791,3.191 -12.671,0.792 -21.6,14.727 -21.6,14.727 l 17.181,-9.327 25.763,-2.36 c 2.331,14 9.395,49.054 9.395,49.054 l -8.688,87.29 -18.668,-27.06 -7.246,10.184 -21.349,-22.915 -15.473,-1.959 14.67,6.596 21.38,29.409 6.7,-13.754 19.485,24.691 0.004,-0.011 16.47,9.525 -3.123,68.69 10.407,-10.407 -4.163,40.59 22.173,71.502 -34.662,91.899 16.652,-4.162 -19.773,35.386 -40.591,38.509 9.368,17.693 -93.671,9.368 -20.229,-7.165 -18.437,38.292 13.22,8.813 -69.039,14.69 2.938,19.095 -80.791,-23.303 -26.147,-19.191 -116.339,0 8.814,-10.188 -42.501,-40.641 -8.911,-78.491 7.344,-1.494 8.814,-45.548 23.502,-24.978 19.096,45.533 -14.689,-4.409 41.13,48.474 30.848,26.44 -14.69,-1.469 19.096,16.158 105.763,2.938 72.917,15.799 -41.623,-14.742 -30.181,-7.285 -104.079,-1.043 1.04,-11.449 -64.526,-61.403 14.571,2.081 -27.844,-63.28 c -15.017,-13.719 -28.06,-55.016 -36.687,-75.145 -9.367,-21.856 -20.816,-39.55 -20.816,-39.55 0,0 -30.182,-6.244 -61.405,-18.734 -31.224,-12.489 -43.713,4.163 -43.713,4.163 l -3.122,-8.326 c 0,0 -18.28,-9.057 -39.303,-11.825 -16.43,-2.162 -9.967,-20.946 -9.613,-26.684 0.405,-6.57 4.294,-19.774 8.325,-24.978 3.227,-4.165 12.525,-10.425 17.694,-11.448 12.039,-2.385 28.101,5.204 45.794,17.693 74.936,-6.245 103.241,-10.321 126.974,8.326 14.572,11.448 29.142,22.897 41.631,40.59 l -15.611,42.671 -8.327,-14.569 -5.807,44.931 1.841,17.863 5.547,-51.234 7.789,9.257 35.387,-70.772 11.448,4.164 c 0,0 13.515,-18.583 23.057,-32.881 l -26.02,25.006 -10.224,-5.964 -11.076,22.152 c 0,0 -13.383,-2.353 -24.727,-18.027 -15.862,-21.915 -23.503,-24.678 -17.627,-78.735 5.876,-54.055 16.452,-54.055 64.632,-121.039 11.752,-16.452 14.601,-18.465 14.601,-18.465 l -51.03,-27.365 -22.327,-5.876 -21.384,-11.28 c 0,0 4.744,-8.174 7.495,-9.369 4.739,-2.062 20.613,1.56 20.613,1.56 0,0 15.603,-6.763 36.756,-6.763 21.152,0 32.903,8.225 47.005,8.225 14.101,0 38.78,-8.225 57.582,-5.876 18.802,2.351 22.328,12.927 22.328,12.927 l -51.706,54.057 -4.675,47.096 -56.605,75.769 -3.038,9.437 65.791,-82.24 5.107,-46.75 55.161,-61.405 37.468,-8.325 c 0,0 -0.257,1.226 -0.625,3.114 -6.146,15.664 -6.986,34.894 -1.999,54.214 6.975,27.012 38.85,36.596 64.029,36.596 12.506,0 24.179,-2.312 32.025,-6.341 12.912,-6.63 21.851,-15.076 27.029,-20.917 3.673,4.516 7.133,7.194 11.833,11.11 0,0 12.143,-11.751 45.047,-14.101 27.14,-1.939 45.048,-8.226 70.901,-19.585 53.676,-23.584 102.5,-61.785 207.618,-45.132 105.119,16.651 206.073,113.444 164.442,227.929"
+         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+         id="path3269"
+         inkscape:connector-curvature="0" /></g><path
+       inkscape:connector-curvature="0"
+       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+       d="m 329.26398,723.3082 -118.025,-19.2 -120.800003,-28.175 72.600003,-281.65 115.075,7.875 95.275,50.65 -44.125,270.5 z m -6.55,-10.575 40.675,-252.4 -87.85,-47.275 -106.125,-7.325 -66.95,262.8 111.4,26.275 108.85,17.925 z"
+       id="path3253-3" /></g></svg>
\ No newline at end of file
diff --git a/css/docs.css b/css/docs.css
new file mode 100644
index 0000000000000000000000000000000000000000..dbe1e0828d6e2f5727573d0e0f758a79c299512e
--- /dev/null
+++ b/css/docs.css
@@ -0,0 +1,158 @@
+body {
+  font-family: Arial, sans-serif;
+  line-height: 1.5;
+  max-width: 64.3em;
+  margin: 3em auto;
+  padding: 0 1em;
+}
+body.droid {
+  font-family: Droid Sans, Arial, sans-serif;
+}
+
+h1 {
+  letter-spacing: -3px;
+  font-size: 3.23em;
+  font-weight: bold;
+  margin: 0;
+}
+
+h2 {
+  font-size: 1.23em;
+  font-weight: bold;
+  margin: .5em 0;
+  letter-spacing: -1px;
+}
+
+h3 {
+  font-size: 1em;
+  font-weight: bold;
+  margin: .4em 0;
+}
+
+pre {
+  font-family: Courier New, monospaced;
+  background-color: #eee;
+  -moz-border-radius: 6px;
+  -webkit-border-radius: 6px;
+  border-radius: 6px;
+  padding: 1em;
+}
+
+pre.code {
+  margin: 0 1em;
+}
+
+.grey {
+  font-size: 2em;
+  padding: .5em 1em;
+  line-height: 1.2em;
+  margin-top: .5em;
+  position: relative;
+}
+
+img.logo {
+  position: absolute;
+  right: -25px;
+  bottom: 4px;
+}
+
+a:link, a:visited, .quasilink {
+  color: #df0019;
+  cursor: pointer;
+  text-decoration: none;
+}
+
+a:hover, .quasilink:hover {
+  color: #800004;
+}
+
+h1 a:link, h1 a:visited, h1 a:hover {
+  color: black;
+}
+
+ul {
+  margin: 0;
+  padding-left: 1.2em;
+}
+
+a.download {
+  color: white;
+  background-color: #df0019;
+  width: 100%;
+  display: block;
+  text-align: center;
+  font-size: 1.23em;
+  font-weight: bold;
+  text-decoration: none;
+  -moz-border-radius: 6px;
+  -webkit-border-radius: 6px;
+  border-radius: 6px;
+  padding: .5em 0;
+  margin-bottom: 1em;
+}
+
+a.download:hover {
+  background-color: #bb0010;
+}
+
+.rel {
+  margin-bottom: 0;
+}
+
+.rel-note {
+  color: #777;
+  font-size: .9em;
+  margin-top: .1em;
+}
+
+.logo-braces {
+  color: #df0019;
+  position: relative;
+  top: -4px;
+}
+
+.blk {
+  float: left;
+}
+
+.left {
+  width: 37em;
+  padding-right: 6.53em;
+  padding-bottom: 1em;
+}
+
+.left1 {
+  width: 15.24em;
+  padding-right: 6.45em;
+}
+
+.left2 {
+  width: 15.24em;
+}
+
+.right {
+  width: 20.68em;
+}
+
+.leftbig {
+  width: 42.44em;
+  padding-right: 6.53em;
+}
+
+.rightsmall {
+  width: 15.24em;
+}
+
+.clear:after {
+  visibility: hidden;
+  display: block;
+  font-size: 0;
+  content: " ";
+  clear: both;
+  height: 0;
+}
+.clear { display: inline-block; }
+/* start commented backslash hack \*/
+* html .clear { height: 1%; }
+.clear { display: block; }
+/* close commented backslash hack */
diff --git a/css/font.js b/css/font.js
new file mode 100644
index 0000000000000000000000000000000000000000..31e3f06ed5f752fc47bafccc0ef7fb674f80ce74
--- /dev/null
+++ b/css/font.js
@@ -0,0 +1,15 @@
+function waitForStyles() {
+  for (var i = 0; i < document.styleSheets.length; i++)
+    if (/googleapis/.test(document.styleSheets[i].href))
+      return document.body.className += " droid";
+  setTimeout(waitForStyles, 100);
+}
+setTimeout(function() {
+  if (/AppleWebKit/.test(navigator.userAgent) && /iP[oa]d|iPhone/.test(navigator.userAgent)) return;
+  var link = document.createElement("LINK");
+  link.type = "text/css";
+  link.rel = "stylesheet";
+  link.href = "http://fonts.googleapis.com/css?family=Droid+Sans|Droid+Sans:bold";
+  document.documentElement.getElementsByTagName("HEAD")[0].appendChild(link);
+  waitForStyles();
+}, 10);
diff --git a/demo/activeline.html b/demo/activeline.html
new file mode 100644
index 0000000000000000000000000000000000000000..7a169663e77ae91ce49f6759fe93c85608a4423b
--- /dev/null
+++ b/demo/activeline.html
@@ -0,0 +1,71 @@
+<!doctype html>
+<html>
+  <head>
+    <title>CodeMirror 2: Active Line Demo</title>
+    <link rel="stylesheet" href="../lib/codemirror.css">
+    <script src="../lib/codemirror.js"></script>
+    <link rel="stylesheet" href="../mode/xml/xml.css">
+    <script src="../mode/xml/xml.js"></script>
+    <link rel="stylesheet" href="../css/docs.css">
+
+    <style type="text/css">
+      .CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}
+      .activeline {background: #f0fcff !important;}
+    </style>
+  </head>
+  <body>
+    <h1>CodeMirror 2: Active Line Demo</h1>
+
+    <form><textarea id="code" name="code">
+<?xml version="1.0" encoding="UTF-8"?>
+<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"
+     xmlns:georss="http://www.georss.org/georss"
+     xmlns:twitter="http://api.twitter.com">
+  <channel>
+    <title>Twitter / codemirror</title>
+    <link>http://twitter.com/codemirror</link>
+    <atom:link type="application/rss+xml"
+               href="http://twitter.com/statuses/user_timeline/242283288.rss" rel="self"/>
+    <description>Twitter updates from CodeMirror / codemirror.</description>
+    <language>en-us</language>
+    <ttl>40</ttl>
+  <item>
+    <title>codemirror: http://cloud-ide.com &#8212; they're springing up like mushrooms. This one
+      uses CodeMirror as its editor.</title>
+    <description>codemirror: http://cloud-ide.com &#8212; they're springing up like mushrooms. This
+      one uses CodeMirror as its editor.</description>
+    <pubDate>Thu, 17 Mar 2011 23:34:47 +0000</pubDate>
+    <guid>http://twitter.com/codemirror/statuses/48527733722058752</guid>
+    <link>http://twitter.com/codemirror/statuses/48527733722058752</link>
+    <twitter:source>web</twitter:source>
+    <twitter:place/>
+  </item>
+  <item>
+    <title>codemirror: Posted a description of the CodeMirror 2 internals at
+      http://codemirror.net/2/internals.html</title>
+    <description>codemirror: Posted a description of the CodeMirror 2 internals at
+      http://codemirror.net/2/internals.html</description>
+    <pubDate>Wed, 02 Mar 2011 12:15:09 +0000</pubDate>
+    <guid>http://twitter.com/codemirror/statuses/42920879788789760</guid>
+    <link>http://twitter.com/codemirror/statuses/42920879788789760</link>
+    <twitter:source>web</twitter:source>
+    <twitter:place/>
+  </item>
+</feed></textarea></form>
+
+    <script>
+var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
+  mode: "application/xml",
+  lineNumbers: true,
+  onCursorActivity: function() {
+    editor.setLineClass(hlLine, null);
+    hlLine = editor.setLineClass(editor.getCursor().line, "activeline");
+  }
+});
+var hlLine = editor.setLineClass(0, "activeline");
+</script>
+
+    <p>Styling the current cursor line.</p>
+
+  </body>
+</html>
diff --git a/demo/complete.html b/demo/complete.html
index 4fd3538901be311c06fcf01239e3fc0519c325f1..4dfef30b29376efeac5621702b7eafeed66bee57 100644
--- a/demo/complete.html
+++ b/demo/complete.html
@@ -6,7 +6,7 @@
     <script src="../lib/codemirror.js"></script>
     <link rel="stylesheet" href="../mode/javascript/javascript.css">
     <script src="../mode/javascript/javascript.js"></script>
-    <link rel="stylesheet" href="../docs.css">
+    <link rel="stylesheet" href="../css/docs.css">
 
     <style type="text/css">
       .completions {
diff --git a/demo/marker.html b/demo/marker.html
index 16232f91dab64a673dfe6eaedcd5c2f32918fd96..7b3a2ba9d4c06508e5a41ea7cb8c988ae3ee077a 100644
--- a/demo/marker.html
+++ b/demo/marker.html
@@ -6,7 +6,7 @@
     <script src="../lib/codemirror.js"></script>
     <link rel="stylesheet" href="../mode/javascript/javascript.css">
     <script src="../mode/javascript/javascript.js"></script>
-    <link rel="stylesheet" href="../docs.css">
+    <link rel="stylesheet" href="../css/docs.css">
 
     <style type="text/css">
       .CodeMirror-gutter {
diff --git a/demo/mustache.html b/demo/mustache.html
index 7e0ea78bbd7f3da1eb56bb3ddc304820b7dbcb4d..6541f10592c0f6bdef98c9e92572d07f6c63dc4a 100644
--- a/demo/mustache.html
+++ b/demo/mustache.html
@@ -7,7 +7,7 @@
     <script src="../lib/overlay.js"></script>
     <link rel="stylesheet" href="../mode/xml/xml.css">
     <script src="../mode/xml/xml.js"></script>
-    <link rel="stylesheet" href="../docs.css">
+    <link rel="stylesheet" href="../css/docs.css">
 
     <style type="text/css">
       .CodeMirror {border: 1px solid black;}
diff --git a/demo/resize.html b/demo/resize.html
index d6cf44d51670cbf1cbc01764bd5ebe77735cadb1..0022044d29deec2984043695f545b620d58e2ed6 100644
--- a/demo/resize.html
+++ b/demo/resize.html
@@ -6,7 +6,7 @@
     <script src="../lib/codemirror.js"></script>
     <link rel="stylesheet" href="../mode/css/css.css">
     <script src="../mode/css/css.js"></script>
-    <link rel="stylesheet" href="../docs.css">
+    <link rel="stylesheet" href="../css/docs.css">
 
     <style type="text/css">
       .CodeMirror {
diff --git a/demo/search.html b/demo/search.html
index 38bee7d0e183eb33f8a2e4e14f411ca5be822cc2..5fe8c9d0b4e9bbd86cc67298bc6d9a3e37730a61 100644
--- a/demo/search.html
+++ b/demo/search.html
@@ -6,7 +6,7 @@
     <script src="../lib/codemirror.js"></script>
     <link rel="stylesheet" href="../mode/xml/xml.css">
     <script src="../mode/xml/xml.js"></script>
-    <link rel="stylesheet" href="../docs.css">
+    <link rel="stylesheet" href="../css/docs.css">
 
     <style type="text/css">
       .CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}
diff --git a/docs.css b/docs.css
deleted file mode 100644
index c2c59a7665897907d19f3348175e7ed0992ed4da..0000000000000000000000000000000000000000
--- a/docs.css
+++ /dev/null
@@ -1,9 +0,0 @@
-body {
-  max-width: 70em;
-  margin-left: 2em;
-  margin-bottom: 4em;
-  font-family: tahoma, arial, sans-serif;
-}
-
-pre {margin-left: 2em;}
-dl dl {margin: 0;}
diff --git a/index.html b/index.html
index 3c05cc1e5ca23c84e1ed0a7eefac7153b6a3e9c6..e1ce6e31ae7416033f7e36683c346f6792489522 100644
--- a/index.html
+++ b/index.html
@@ -1,135 +1,224 @@
 <!doctype html>
 <html>
   <head>
-    <title>CodeMirror 2</title>
+    <title>CodeMirror</title>
+    <link rel="stylesheet" type="text/css" href="css/docs.css"/>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
-    <link rel="stylesheet" href="lib/codemirror.css">
-    <script src="lib/codemirror.js"></script>
-    <script src="mode/javascript/javascript.js"></script>
-    <link rel="stylesheet" href="mode/javascript/javascript.css">
-    <style type="text/css">
-      .CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}
-    </style>
-    <link rel="stylesheet" href="docs.css">
+    <link rel="alternate" href="http://twitter.com/statuses/user_timeline/242283288.rss" type="application/rss+xml"/>
   </head>
   <body>
-    <h1>CodeMirror 2</h1>
-
-<form><textarea id="code" name="code">
-// Demo code (the actual new parser character stream implementation)
-
-function StringStream(string) {
-  this.pos = 0;
-  this.string = string;
-}
-
-StringStream.prototype = {
-  done: function() {return this.pos >= this.string.length;},
-  peek: function() {return this.string.charAt(this.pos);},
-  next: function() {
-    if (this.pos &lt; this.string.length)
-      return this.string.charAt(this.pos++);
-  },
-  eat: function(match) {
-    var ch = this.string.charAt(this.pos);
-    if (typeof match == "string") var ok = ch == match;
-    else var ok = ch &amp;&amp; match.test ? match.test(ch) : match(ch);
-    if (ok) {this.pos++; return ch;}
-  },
-  eatWhile: function(match) {
-    var start = this.pos;
-    while (this.eat(match));
-    if (this.pos > start) return this.string.slice(start, this.pos);
-  },
-  backUp: function(n) {this.pos -= n;},
-  column: function() {return this.pos;},
-  eatSpace: function() {
-    var start = this.pos;
-    while (/\s/.test(this.string.charAt(this.pos))) this.pos++;
-    return this.pos - start;
-  },
-  match: function(pattern, consume, caseInsensitive) {
-    if (typeof pattern == "string") {
-      function cased(str) {return caseInsensitive ? str.toLowerCase() : str;}
-      if (cased(this.string).indexOf(cased(pattern), this.pos) == this.pos) {
-        if (consume !== false) this.pos += str.length;
-        return true;
-      }
-    }
-    else {
-      var match = this.string.slice(this.pos).match(pattern);
-      if (match &amp;&amp; consume !== false) this.pos += match[0].length;
-      return match;
-    }
-  }
-};
-</textarea></form>
-
-    <script>
-      var editor = CodeMirror.fromTextArea(document.getElementById("code"), {
-        lineNumbers: true,
-        matchBrackets: true
-      });
-    </script>
-
-    <h3>Available modes:</h3>
 
-    <ul>
-      <li><a href="mode/javascript/">JavaScript</a></li>
-      <li><a href="mode/xml/">XML/HTML</a></li>
-      <li><a href="mode/css/">CSS</a></li>
-      <li><a href="mode/htmlmixed/">Mixed-mode HTML</a></li>
-      <li><a href="mode/clike/">Simple mode for C-like languages (C, C++, Java)</a></li>
-      <li><a href="mode/php/">PHP</a></li>
-      <li><a href="mode/diff/">Diff</a></li>
-      <li><a href="mode/haskell/">Haskell</a></li>
-      <li><a href="mode/stex/">sTeX</a></li>
-    </ul>
+<h1><span class="logo-braces">{ }</span> <a href="http://codemirror.net/">CodeMirror</a></h1>
 
-    <h3>Usage demos:</h3>
+<pre class="grey">
+<img src="css/baboon.png" class="logo" alt="logo"/>/* In-browser code editing
+   made bearable */
+</pre>
 
-    <ul>
-      <li><a href="demo/complete.html">Clever JS autocompletion</a></li>
-      <li><a href="demo/mustache.html">Parsing Mustache templates using an overlay</a></li>
-      <li><a href="demo/search.html">Search/replace and text marking</a></li>
-      <li><a href="demo/resize.html">Non-scrolling, resizing editor</a></li>
-      <li><a href="demo/marker.html">Setting breakpoints</a></li>
-    </ul>
+<div class="clear"><div class="left blk">
 
-    <h3>Getting the Code</h3>
+  <p style="margin-top: 0">CodeMirror is a JavaScript library that can
+  be used to create a relatively pleasant editor interface for
+  code-like content &#x2015; computer programs, HTML markup, and
+  similar. If a mode has been written for the language you are
+  editing, the code will be coloured, and the editor will optionally
+  help you with indentation.</p>
 
-    <p>The recommended way to get the files is...</p>
+  <p>This is the project page for CodeMirror 2, the currently more
+  actively developed, and recommended
+  version. <a href="1/index.html">CodeMirror 1</a> is still available
+  from here.</p>
+ 
+  <div class="clear"><div class="left1 blk">
 
-    <pre style="margin-left: 1em">git clone http://marijnhaverbeke.nl/git/codemirror2</pre>
+    <h2 style="margin-top: 0">Supported modes:</h2>
 
-    <p>There is
-    also <a href="https://github.com/marijnh/codemirror2">github</a>
-    and a zip containing the
-    current <a href="http://codemirror.net/2/codemirror2-latest.zip">development
-    snapshot</a>. Once we have non-beta releases, those will also be
-    avaible in zip form.</p>
+    <ul>
+      <li><a href="mode/javascript/index.html">JavaScript</a></li>
+      <li><a href="mode/xml/index.html">XML/HTML</a></li>
+      <li><a href="mode/css/index.html">CSS</a></li>
+      <li><a href="mode/htmlmixed/index.html">HTML mixed-mode</a></li>
+      <li><a href="mode/php/index.html">PHP</a></li>
+      <li><a href="mode/diff/index.html">diff</a></li>
+      <li><a href="mode/clike/index.html">C, Java, and similar</a></li>
+      <li><a href="mode/stex/index.html">sTeX, LaTeX</a></li>
+      <li><a href="mode/haskell/index.html">Haskell</a></li>
+    </ul>
+
+  </div><div class="left2 blk">
 
-    <h3>CodeMirror 2: beta 2</h3>
+    <h2 style="margin-top: 0">Usage demos:</h2>
 
-    <p><a href="https://github.com/marijnh/codemirror2/tree/beta2">Beta
-    2</a> was released on February 22th 2011. The code is somewhat
-    more well-tested, and the API has matured a bit since beta 1. The
-    main thing we need right now is more ports of CodeMirror 1
-    modes—you're invited to <a href="manual.html#modeapi">help</a>
-    with that!</p>
+    <ul>
+      <li><a href="demo/complete.html">Autocompletion</a></li>
+      <li><a href="demo/mustache.html">Mode overlays</a></li>
+      <li><a href="demo/search.html">Search/replace</a></li>
+      <li><a href="demo/resize.html">Auto-resizing editor</a></li>
+      <li><a href="demo/marker.html">Setting breakpoints</a></li>
+      <li><a href="demo/activeline.html">Highlighting the current line</a></li>
+    </ul>
 
-    <h3>CodeMirror 2: beta 1</h3>
+  </div></div>
 
-    <p>Beta 1 was released on February 8th 2011. There are no release
-    files yet, just
-    a <a href="https://github.com/marijnh/codemirror2/tree/beta1">git
-    tag</a>.</p>
+  <h2 id="code">Getting the code</h2>
 
-    <p>There is now a <a href="manual.html">manual</a>, and you are
-    encouraged to try the library out and leave bug reports at
-    the <a href="https://github.com/marijnh/codemirror2/issues">github
-    issue tracker</a> (anything from the editor behaving badly to a
-    typo in the docs).</p>
+  <p>All of CodeMirror is released under a <a
+  href="LICENSE">MIT-style</a> license. To get it, you can download
+  the <a href="http://codemirror.net/codemirror.zip">latest
+  release</a> or the current <a
+  href="http://codemirror.net/codemirror-latest.zip">development
+  snapshot</a> as zip files. To create a custom minified script file,
+  you can use the <a href="compress.html">compression API</a>.</p>
+
+  <p>We use <a href="http://git-scm.com/">git</a> for version control.
+  The main repository can be fetched in this way:</p>
+
+  <pre class="code">git clone http://marijnhaverbeke.nl/git/codemirror2</pre>
+
+  <p>CodeMirror can also be found on GitHub at <a
+  href="http://github.com/marijnh/CodeMirror2">marijnh/CodeMirror2</a>.
+  If you plan to hack on the code and contribute patches, the best way
+  to do it is to create a GitHub fork, and send pull requests.</p>
+
+  <h2 id="documention">Documentation</h2>
+
+  <p>The <a href="manual.html">manual</a> is your first stop for
+  learning how to use this library. It starts with a quick explanation
+  of how to use the editor, and then describes all of the (many)
+  options and methods that CodeMirror exposes.</p>
+
+  <p>For those who want to learn more about the code, there is
+  an <a href="internals.html">overview of the internals</a> available.
+  The <a href="http://github.com/marijnh/CodeMirror2">source code</a>
+  itself is, for the most part, also well commented.</p>
+
+  <h2 id="support">Support and bug reports</h2>
+
+  <p>There is
+  a <a href="http://groups.google.com/group/codemirror">Google
+  group</a> (a sort of mailing list/newsgroup thing) for discussion
+  and news related to CodeMirror. Reporting bugs is best done
+  on <a href="http://github.com/marijnh/CodeMirror2/issues">github</a>.
+  You can also e-mail me
+  directly: <a href="mailto:marijnh@gmail.com">Marijn
+  Haverbeke</a>.</p>
+
+  <h2 id="supported">Supported browsers</h2>
+
+  <p>The following browsers are able to run CodeMirror:</p>
+
+  <ul>
+    <li>Firefox 2 or higher</li>
+    <li>Chrome, any version</li>
+    <li>Safari 3 or higher</li>
+    <li>Internet Explorer 6 or higher</li>
+    <li>Opera 9 or higher (with some key-handling problems on OS X)</li>
+  </ul>
+
+  <p>I am not actively testing against every new browser release, and
+  vendors have a habit of introducing bugs all the time, so I am
+  relying on the community to tell me when something breaks.
+  See <a href="#support">below</a> for information on how to contact
+  me.</p>
+
+</div>
+
+<div class="right blk">
+
+  <a href="http://codemirror.net/codemirror.zip" class="download">Download the latest release</a>
+
+  <h2>Make a donation</h2>
+
+  <ul>
+    <li><span onclick="document.getElementById('paypal').submit();" class="quasilink">Paypal</span></li>
+    <li><span onclick="document.getElementById('bankinfo').style.display = 'block';" class="quasilink">Bank</span></li>
+  </ul>
+
+  <p id="bankinfo" style="display: none;">
+    Bank: <i>Rabobank</i><br/>
+    Country: <i>Netherlands</i><br/>
+    SWIFT: <i>RABONL2U</i><br/>
+    Account: <i>147850770</i><br/>
+    Name: <i>Marijn Haverbeke</i><br/>
+    IBAN: <i>NL26 RABO 0147 8507 70</i>
+  </p>
+
+  <h2>Releases:</h2>
+
+  <p class="rel">22-02-2011: <a href="https://github.com/marijnh/codemirror2/tree/beta2">Version 2.0 beta 2</a>:</p>
+  <p class="rel-note">Somewhate more mature API, lots of bugs shaken out.</a>
+
+  <p class="rel">17-02-2011: <a href="http://codemirror.net/codemirror-0.94.zip">Version 0.94</a>:</p>
+  <ul class="rel-note">
+    <li><code>tabMode: "spaces"</code> was modified slightly (now indents when something is selected).</li>
+    <li>Fixes a bug that would cause the selection code to break on some IE versions.</li>
+    <li>Disabling spell-check on WebKit browsers now works.</li>
+  </ul>
+
+  <p class="rel">08-02-2011: <a href="http://codemirror.net/2/">Version 2.0 beta 1</a>:</p>
+  <p class="rel-note">CodeMirror 2 is a complete rewrite of
+  CodeMirror, no longer depending on an editable frame.</p>
+
+  <p class="rel">19-01-2011: <a href="http://codemirror.net/codemirror-0.93.zip">Version 0.93</a>:</p>
+  <ul class="rel-note">
+    <li>Added a <a href="contrib/regex/index.html">Regular Expression</a> parser.</li>
+    <li>Fixes to the PHP parser.</li>
+    <li>Support for regular expression in search/replace.</li>
+    <li>Add <code>save</code> method to instances created with <code>fromTextArea</code>.</li>
+    <li>Add support for MS T-SQL in the SQL parser.</li>
+    <li>Support use of CSS classes for highlighting brackets.</li>
+    <li>Fix yet another hang with line-numbering in hidden editors.</li>
+  </ul>
+
+  <p class="rel">17-12-2010: <a href="http://codemirror.net/codemirror-0.92.zip">Version 0.92</a>:</p>
+  <ul class="rel-note">
+    <li>Make CodeMirror work in XHTML documents.</li>
+    <li>Fix bug in handling of backslashes in Python strings.</li>
+    <li>The <code>styleNumbers</code> option is now officially
+    supported and documented.</li>
+    <li><code>onLineNumberClick</code> option added.</li>
+    <li>More consistent names <code>onLoad</code> and
+    <code>onCursorActivity</code> callbacks. Old names still work, but
+    are deprecated.</li>
+    <li>Add a <a href="contrib/freemarker/index.html">Freemarker</a> mode.</li>
+  </ul>
+
+  <p class="rel">11-11-2010: <a
+  href="http://codemirror.net/codemirror-0.91.zip">Version 0.91</a>:</p>
+  <ul class="rel-note">
+    <li>Adds support for <a href="contrib/java">Java</a>.</li>
+    <li>Small additions to the <a href="contrib/php">PHP</a> and <a href="contrib/sql">SQL</a> parsers.</li>
+    <li>Work around various <a href="https://bugs.webkit.org/show_bug.cgi?id=47806">Webkit</a> <a href="https://bugs.webkit.org/show_bug.cgi?id=23474">issues</a>.</li>
+    <li>Fix <code>toTextArea</code> to update the code in the textarea.</li>
+    <li>Add a <code>noScriptCaching</code> option (hack to ease development).</li>
+    <li>Make sub-modes of <a href="mixedtest.html">HTML mixed</a> mode configurable.</li>
+  </ul>
+
+  <p class="rel">02-10-2010: <a
+  href="http://codemirror.net/codemirror-0.9.zip">Version 0.9</a>:</p>
+  <ul class="rel-note">
+    <li>Add support for searching backwards.</li>
+    <li>There are now parsers for <a href="contrib/scheme/index.html">Scheme</a>, <a href="contrib/xquery/index.html">XQuery</a>, and <a href="contrib/ometa/index.html">OmetaJS</a>.</li>
+    <li>Makes <code>height: "dynamic"</code> more robust.</li>
+    <li>Fixes bug where paste did not work on OS X.</li>
+    <li>Add a <code>enterMode</code> and <code>electricChars</code> options to make indentation even more customizable.</li>
+    <li>Add <code>firstLineNumber</code> option.</li>
+    <li>Fix bad handling of <code>@media</code> rules by the CSS parser.</li>
+    <li>Take a new, more robust approach to working around the invisible-last-line bug in WebKit.</li>
+  </ul>
+
+  <p><a href="oldrelease.html">Older releases...</a></p>
+
+</div></div>
+
+<div style="height: 2em">&nbsp;</div>
+
+  <form action="https://www.paypal.com/cgi-bin/webscr" method="post" id="paypal">
+    <input type="hidden" name="cmd" value="_s-xclick"/>
+    <input type="hidden" name="hosted_button_id" value="3FVHS5FGUY7CC"/>
+  </form>
+
+  <script type="text/javascript" src="css/font.js"></script>
 
   </body>
 </html>
diff --git a/lib/codemirror.css b/lib/codemirror.css
index a40f062979a5e832dddaaf6deeb69de615d3415f..578af41ae9d0a84ec439dee0f2eeba740e14ae0d 100644
--- a/lib/codemirror.css
+++ b/lib/codemirror.css
@@ -23,6 +23,10 @@
 }
 
 .CodeMirror pre {
+  -moz-border-radius: 0;
+  -webkit-border-radius: 0;
+  -o-border-radius: 0;
+  border-radius: 0;
   border-width: 0; margin: 0; padding: 0; background: transparent;
   font-family: inherit;
 }
diff --git a/manual.html b/manual.html
index f477637e037b2cdbce56dcdd274528eb74a8d457..234ff41063241cedb78df1069eef7958a81eaac8 100644
--- a/manual.html
+++ b/manual.html
@@ -1,23 +1,21 @@
 <!doctype html>
 <html>
   <head>
-    <title>CodeMirror 2 Manual</title>
-    <link rel="stylesheet" href="docs.css">
+    <title>CodeMirror: User Manual</title>
+    <link rel="stylesheet" type="text/css" href="css/docs.css"/>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+    <style>dl dl {margin: 0;}</style>
   </head>
   <body>
-    <h1>CodeMirror 2: The provisionary manual</h1>
 
-    <h2>Contents</h2>
+<h1><span class="logo-braces">{ }</span> <a href="http://codemirror.net/">CodeMirror</a></h1>
 
-    <ul>
-      <li><a href="#overview">Overview</a></li>
-      <li><a href="#usage">Basic Usage</a></li>
-      <li><a href="#config">Configuration</a></li>
-      <li><a href="#styling">Customized Styling</a></li>
-      <li><a href="#api">Programming API</a></li>
-      <li><a href="#modeapi">Writing CodeMirror Modes</a></li>
-    </ul>
+<pre class="grey">
+<img src="css/baboon.png" class="logo" alt="logo"/>/* User manual and
+   reference guide */
+</pre>
+
+<div class="clear"><div class="leftbig blk">
 
     <h2 id="overview">Overview</h2>
 
@@ -37,7 +35,8 @@
 
     <p>The easiest way to use CodeMirror is to simply load the script
     and style sheet found under <code>lib/</code> in the distribution,
-    plus the script and style sheet for the mode you want to use. For
+    plus the script and style sheet for the mode(s) you want to use.
+    (See also <a href="compress.html">the compresion helper</a>.) For
     example:</p>
 
     <pre>&lt;script src="lib/codemirror.js">&lt;/script>
@@ -749,5 +748,24 @@
     mode, as in the <a href="#option_mode"><code>mode</code></a>
     option.</p>
 
+</div><div class="rightsmall blk">
+
+    <h2>Contents</h2>
+
+    <ul>
+      <li><a href="#overview">Overview</a></li>
+      <li><a href="#usage">Basic Usage</a></li>
+      <li><a href="#config">Configuration</a></li>
+      <li><a href="#styling">Customized Styling</a></li>
+      <li><a href="#api">Programming API</a></li>
+      <li><a href="#modeapi">Writing CodeMirror Modes</a></li>
+    </ul>
+
+</div></div>
+
+<div style="height: 2em">&nbsp;</div>
+
+<script type="text/javascript" src="css/font.js"></script>
+
   </body>
 </html>
diff --git a/mode/clike/index.html b/mode/clike/index.html
index 1218bb0cac8e826e5108ebfeea3eb0389e554d97..0836535d28c1ca545ae8e0c33bce31af0aebc1a7 100644
--- a/mode/clike/index.html
+++ b/mode/clike/index.html
@@ -6,7 +6,7 @@
     <script src="../../lib/codemirror.js"></script>
     <script src="clike.js"></script>
     <link rel="stylesheet" href="clike.css">
-    <link rel="stylesheet" href="../../docs.css">
+    <link rel="stylesheet" href="../../css/docs.css">
     <style>.CodeMirror {border: 2px inset #dee;}</style>
   </head>
   <body>
diff --git a/mode/css/index.html b/mode/css/index.html
index 48c6f84c02c2004cb80eccae342c3d7428c92da1..ad895610f2de36251a4fb6fdafc43cb98b24d5dd 100644
--- a/mode/css/index.html
+++ b/mode/css/index.html
@@ -7,7 +7,7 @@
     <script src="css.js"></script>
     <link rel="stylesheet" href="css.css">
     <style>.CodeMirror {background: #f8f8f8;}</style>
-    <link rel="stylesheet" href="../../docs.css">
+    <link rel="stylesheet" href="../../css/docs.css">
   </head>
   <body>
     <h1>CodeMirror 2: CSS mode</h1>
diff --git a/mode/diff/index.html b/mode/diff/index.html
index 784d3e432101bed2fe3c932c294788b3133b023c..2748f2fa8c406fdb260da337c83c5c581c596a42 100644
--- a/mode/diff/index.html
+++ b/mode/diff/index.html
@@ -7,7 +7,7 @@
     <script src="diff.js"></script>
     <link rel="stylesheet" href="diff.css">
     <style>.CodeMirror {border-top: 1px solid #ddd; border-bottom: 1px solid #ddd;}</style>
-    <link rel="stylesheet" href="../../docs.css">
+    <link rel="stylesheet" href="../../css/docs.css">
   </head>
   <body>
     <h1>CodeMirror 2: Diff mode</h1>
diff --git a/mode/haskell/index.html b/mode/haskell/index.html
index d837cc4dcc682ac384e489a70c6b7d58577d5b71..0bf34d57037fb03a62f26328a39e0cc9b064d337 100644
--- a/mode/haskell/index.html
+++ b/mode/haskell/index.html
@@ -7,7 +7,7 @@
     <script src="haskell.js"></script>
     <link rel="stylesheet" href="haskell.css">
     <style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
-    <link rel="stylesheet" href="../../docs.css">
+    <link rel="stylesheet" href="../../css/docs.css">
   </head>
   <body>
     <h1>CodeMirror 2: Haskell mode</h1>
diff --git a/mode/htmlmixed/index.html b/mode/htmlmixed/index.html
index 86f66d167d5146cc12c5c2580f806f032dfe2cd4..c661c98d54e8e28ecccc57ba9ef04f0e241c3b92 100644
--- a/mode/htmlmixed/index.html
+++ b/mode/htmlmixed/index.html
@@ -11,7 +11,7 @@
     <script src="../css/css.js"></script>
     <link rel="stylesheet" href="../css/css.css">
     <script src="htmlmixed.js"></script>
-    <link rel="stylesheet" href="../../docs.css">
+    <link rel="stylesheet" href="../../css/docs.css">
     <style>.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
   </head>
   <body>
diff --git a/mode/javascript/index.html b/mode/javascript/index.html
index b3c8bbdb6fea0b99107da078325a85cced75d127..7b528e041d9b7630125cbb7f0ba42adf804c7b89 100644
--- a/mode/javascript/index.html
+++ b/mode/javascript/index.html
@@ -6,7 +6,7 @@
     <script src="../../lib/codemirror.js"></script>
     <script src="javascript.js"></script>
     <link rel="stylesheet" href="javascript.css">
-    <link rel="stylesheet" href="../../docs.css">
+    <link rel="stylesheet" href="../../css/docs.css">
     <style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
   </head>
   <body>
diff --git a/mode/php/index.html b/mode/php/index.html
index ea8719a1d48ef4b6814b02375cc7a2e96b994174..020e24898274d1b4a428069c2c3f54feb9d77b2a 100644
--- a/mode/php/index.html
+++ b/mode/php/index.html
@@ -14,7 +14,7 @@
     <link rel="stylesheet" href="../clike/clike.css">
     <script src="php.js"></script>
     <style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
-    <link rel="stylesheet" href="../../docs.css">
+    <link rel="stylesheet" href="../../css/docs.css">
   </head>
   <body>
     <h1>CodeMirror 2: PHP mode</h1>
diff --git a/mode/stex/index.html b/mode/stex/index.html
index 5984ac3d5b7f3dde7a9c7866fe1f2a910ef57e5e..73b07ac13e2969129469a63957c9d5c2ffb5710a 100644
--- a/mode/stex/index.html
+++ b/mode/stex/index.html
@@ -7,7 +7,7 @@
     <script src="stex.js"></script>
     <link rel="stylesheet" href="stex.css">
     <style>.CodeMirror {background: #f8f8f8;}</style>
-    <link rel="stylesheet" href="../../docs.css">
+    <link rel="stylesheet" href="../../css/docs.css">
   </head>
   <body>
     <h1>CodeMirror 2: sTeX mode</h1>
diff --git a/mode/xml/index.html b/mode/xml/index.html
index 789dbb80e4744234ce265862a0d09297a30a709c..5ad7c63fe8a34ccc59a6474bf480599ba1e40e5b 100644
--- a/mode/xml/index.html
+++ b/mode/xml/index.html
@@ -7,7 +7,7 @@
     <script src="xml.js"></script>
     <link rel="stylesheet" href="xml.css">
     <style type="text/css">.CodeMirror {border-top: 1px solid black; border-bottom: 1px solid black;}</style>
-    <link rel="stylesheet" href="../../docs.css">
+    <link rel="stylesheet" href="../../css/docs.css">
   </head>
   <body>
     <h1>CodeMirror 2: XML mode</h1>
diff --git a/oldrelease.html b/oldrelease.html
new file mode 100644
index 0000000000000000000000000000000000000000..0a421e5149dfcf4fb174794e05f3ae69454b06a7
--- /dev/null
+++ b/oldrelease.html
@@ -0,0 +1,103 @@
+<!doctype html>
+<html>
+  <head>
+    <title>CodeMirror</title>
+    <link rel="stylesheet" type="text/css" href="css/docs.css"/>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+    <link rel="alternate" href="http://twitter.com/statuses/user_timeline/242283288.rss" type="application/rss+xml"/>
+  </head>
+  <body>
+
+<h1><span class="logo-braces">{ }</span> <a href="http://codemirror.net/">CodeMirror</a></h1>
+
+<pre class="grey">
+<img src="css/baboon.png" class="logo" alt="logo"/>/* Old release history */
+
+</pre>
+
+  <p class="rel">22-07-2010: <a
+  href="http://codemirror.net/codemirror-0.8.zip">Version 0.8</a>:</p>
+  <ul class="rel-note">
+    <li>Add a <code>cursorCoords</code> method to find the screen
+    coordinates of the cursor.</li>
+    <li>A number of fixes and support for more syntax in the PHP parser.</li>
+    <li>Fix indentation problem with JSON-mode JS parser in Webkit.</li>
+    <li>Add a <a href="compress.html">minification</a> UI.</li>
+    <li>Support a <code>height: dynamic</code> mode, where the editor's
+    height will adjust to the size of its content.</li>
+    <li>Better support for IME input mode.</li>
+    <li>Fix JavaScript parser getting confused when seeing a no-argument
+    function call.</li>
+    <li>Have CSS parser see the difference between selectors and other
+    identifiers.</li>
+    <li>Fix scrolling bug when pasting in a horizontally-scrolled
+    editor.</li>
+    <li>Support <code>toTextArea</code> method in instances created with
+    <code>fromTextArea</code>.</li>
+    <li>Work around new Opera cursor bug that causes the cursor to jump
+    when pressing backspace at the end of a line.</li>
+  </ul>
+
+  <p class="rel">27-04-2010: <a
+  href="http://codemirror.net/codemirror-0.67.zip">Version
+  0.67</a>:</p>
+  <p class="rel-note">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
+  <code>"\\"</code> correctly. Have <code>jumpToLine</code> work on
+  line handles, and add <code>cursorLine</code> function to fetch the
+  line handle where the cursor currently is. Add new
+  <code>setStylesheet</code> function to switch style-sheets in a
+  running editor.</p>
+
+  <p class="rel">01-03-2010: <a
+  href="http://codemirror.net/codemirror-0.66.zip">Version
+  0.66</a>:</p>
+  <p class="rel-note">Adds <code>removeLine</code> method to API.
+  Introduces the <a href="contrib/plsql/index.html">PLSQL parser</a>.
+  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.</p>
+
+  <p class="rel">12-11-2009: <a
+  href="http://codemirror.net/codemirror-0.65.zip">Version
+  0.65</a>:</p>
+  <p class="rel-note">Add support for having both line-wrapping and
+  line-numbers turned on, make paren-highlighting style customisable
+  (<code>markParen</code> and <code>unmarkParen</code> config
+  options), work around a selection bug that Opera
+  <em>re</em>introduced in version 10.</p>
+
+  <p class="rel">23-10-2009: <a
+  href="http://codemirror.net/codemirror-0.64.zip">Version
+  0.64</a>:</p>
+  <p class="rel-note">Solves some issues introduced by the
+  paste-handling changes from the previous release. Adds
+  <code>setSpellcheck</code>, <code>setTextWrapping</code>,
+  <code>setIndentUnit</code>, <code>setUndoDepth</code>,
+  <code>setTabMode</code>, and <code>setLineNumbers</code> to
+  customise a running editor. Introduces an <a
+  href="contrib/sql/index.html">SQL</a> parser. Fixes a few small
+  problems in the <a href="contrib/python/index.html">Python</a>
+  parser. And, as usual, add workarounds for various newly discovered
+  browser incompatibilities.</p>
+
+<p class="rel"><em>31-08-2009</em>: <a
+href="http://codemirror.net/codemirror-0.63.zip">Version
+0.63</a>:</p>
+<p class="rel-note"> Overhaul of paste-handling (less fragile), fixes for several
+serious IE8 issues (cursor jumping, end-of-document bugs) and a number
+of small problems.</p>
+
+<p class="rel"><em>30-05-2009</em>: <a
+href="http://codemirror.net/codemirror-0.62.zip">Version
+0.62</a>:</p>
+<p class="rel-note">Introduces <a href="contrib/python/index.html">Python</a>
+and <a href="contrib/lua/index.html">Lua</a> parsers. Add
+<code>setParser</code> (on-the-fly mode changing) and
+<code>clearHistory</code> methods. Make parsing passes time-based
+instead of lines-based (see the <code>passTime</code> option).</p>
+
+  <script type="text/javascript" src="css/font.js"></script>
+
+</body></html>