<!doctype html>

<title>CodeMirror</title>
<meta charset="utf-8"/>

<link rel=stylesheet href="lib/codemirror.css">
<link rel=stylesheet href="doc/docs.css">
<script src="lib/codemirror.js"></script>
<script src="mode/xml/xml.js"></script>
<script src="mode/javascript/javascript.js"></script>
<script src="mode/css/css.js"></script>
<script src="mode/htmlmixed/htmlmixed.js"></script>
<script src="addon/edit/matchbrackets.js"></script>

<script src="doc/activebookmark.js"></script>

<style>
  .CodeMirror { height: auto; border: 1px solid #ddd; }
  .CodeMirror-scroll { max-height: 200px; }
  .CodeMirror pre { padding-left: 7px; line-height: 1.25; }
</style>

<div id=nav>
  <a href="http://codemirror.net"><h1>CodeMirror</h1><img id=logo src="doc/logo.png"></a>

  <ul>
    <li><a class=active data-default="true" href="#description">Home</a>
    <li><a href="doc/manual.html">Manual</a>
    <li><a href="https://github.com/codemirror/codemirror">Code</a>
  </ul>
  <ul>
    <li><a href="#features">Features</a>
    <li><a href="#community">Community</a>
    <li><a href="#browsersupport">Browser support</a>
  </ul>
</div>

<article>

<section id=description class=first>
  <p><strong>CodeMirror</strong> is a versatile text editor
  implemented in JavaScript for the browser. It is specialized for
  editing code, and comes with a number of <a href="mode/index.html">language modes</a> and <a href="doc/manual.html#addons">addons</a>
  that implement more advanced editing functionality.</p>

  <p>A rich <a href="doc/manual.html#api">programming API</a> and a
  CSS <a href="doc/manual.html#styling">theming</a> system are
  available for customizing CodeMirror to fit your application, and
  extending it with new functionality.</p>
</section>

<section id=demo>
  <h2>This is CodeMirror</h2>
  <form style="position: relative; margin-top: .5em;"><textarea id=demotext>
<!-- Create a simple CodeMirror instance -->
<link rel="stylesheet" href="lib/codemirror.css">
<script src="lib/codemirror.js"></script>
<script>
  var editor = CodeMirror.fromTextArea(myTextarea, {
    mode: "text/html"
  });
</script></textarea>
  <select id="demolist" onchange="document.location = this.options[this.selectedIndex].value;">
    <option value="#">Other demos...</option>
    <option value="demo/complete.html">Autocompletion</option>
    <option value="demo/folding.html">Code folding</option>
    <option value="demo/theme.html">Themes</option>
    <option value="mode/htmlmixed/index.html">Mixed language modes</option>
    <option value="demo/bidi.html">Bi-directional text</option>
    <option value="demo/variableheight.html">Variable font sizes</option>
    <option value="demo/search.html">Search interface</option>
    <option value="demo/vim.html">Vim bindings</option>
    <option value="demo/emacs.html">Emacs bindings</option>
    <option value="demo/sublime.html">Sublime Text bindings</option>
    <option value="demo/tern.html">Tern integration</option>
    <option value="demo/merge.html">Merge/diff interface</option>
    <option value="demo/fullscreen.html">Full-screen editor</option>
  </select></form>
  <script>
    var editor = CodeMirror.fromTextArea(document.getElementById("demotext"), {
      lineNumbers: true,
      mode: "text/html",
      matchBrackets: true
    });
  </script>
  <div style="position: relative; margin: 1em 0;">
    <a class="bigbutton left" href="http://codemirror.net/codemirror.zip">DOWNLOAD LATEST RELEASE</a>
    <div><strong>version 4.7</strong> (<a href="doc/releases.html">Release notes</a>)</div>
    <div>or use the <a href="doc/compress.html">minification helper</a></div>
    <div style="position: absolute; top: 0; right: 0; text-align: right">
      <span class="bigbutton right" onclick="document.getElementById('paypal').submit();">DONATE WITH PAYPAL</span>
      <div style="position: relative">
        or <span onclick="document.getElementById('bankinfo').style.display = 'block';" class=quasilink>Bank</span>,
        <span onclick="document.getElementById('bcinfo').style.display = 'block';" class=quasilink>Bitcoin</span>,
        <a href="https://www.gittip.com/marijnh">Gittip</a>,
        <a href="https://flattr.com/profile/marijnh">Flattr</a><br>
        <div id=bankinfo class=bankinfo>
          <span class=bankinfo_close onclick="document.getElementById('bankinfo').style.display = '';">×</span>
          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>
        </div>
        <div id=bcinfo class=bankinfo>
          <span class=bankinfo_close onclick="document.getElementById('bcinfo').style.display = '';">×</span>
          Bitcoin address: 1HVnnU8E9yLPeFyNgNtUPB5deXBvUmZ6Nx
        </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>
      </div>
      <div>
        Purchase <a href="http://codemirror.com">commercial support</a>
      </div>
    </div>
  </div>
</section>

<section id=features>
  <h2>Features</h2>
  <ul>
    <li>Support for <a href="mode/index.html">over 60 languages</a> out of the box
    <li>A powerful, <a href="mode/htmlmixed/index.html">composable</a> language mode <a href="doc/manual.html#modeapi">system</a>
    <li><a href="doc/manual.html#addon_show-hint">Autocompletion</a> (<a href="demo/xmlcomplete.html">XML</a>)
    <li><a href="doc/manual.html#addon_foldcode">Code folding</a>
    <li><a href="doc/manual.html#option_extraKeys">Configurable</a> keybindings
    <li><a href="demo/vim.html">Vim</a>, <a href="demo/emacs.html">Emacs</a>, and <a href="demo/sublime.html">Sublime Text</a> bindings
    <li><a href="doc/manual.html#addon_search">Search and replace</a> interface
    <li><a href="doc/manual.html#addon_matchbrackets">Bracket</a> and <a href="doc/manual.html#addon_matchtags">tag</a> matching
    <li>Support for <a href="demo/buffers.html">split views</a>
    <li><a href="doc/manual.html#addon_lint">Linter integration</a>
    <li><a href="demo/variableheight.html">Mixing font sizes and styles</a>
    <li><a href="demo/theme.html">Various themes</a>
    <li>Able to <a href="demo/resize.html">resize to fit content</a>
    <li><a href="doc/manual.html#mark_replacedWith">Inline</a> and <a href="doc/manual.html#addLineWidget">block</a> widgets
    <li>Programmable <a href="demo/marker.html">gutters</a>
    <li>Making ranges of text <a href="doc/manual.html#markText">styled, read-only, or atomic</a>
    <li><a href="demo/bidi.html">Bi-directional text</a> support
    <li>Many other <a href="doc/manual.html#api">methods</a> and <a href="doc/manual.html#addons">addons</a>...
  </ul>
</section>

<section id=community>
  <h2>Community</h2>

  <p>CodeMirror is an open-source project shared under
  an <a href="LICENSE">MIT license</a>. It is the editor used in the
  dev tools for
  both <a href="https://hacks.mozilla.org/2013/11/firefox-developer-tools-episode-27-edit-as-html-codemirror-more/">Firefox</a>
  and <a href="https://developers.google.com/chrome-developer-tools/">Chrome</a>, <a href="http://www.lighttable.com/">Light
  Table</a>, <a href="http://brackets.io/">Adobe
  Brackets</a>, <a href="http://blog.bitbucket.org/2013/05/14/edit-your-code-in-the-cloud-with-bitbucket/">Bitbucket</a>,
  and <a href="doc/realworld.html">many other projects</a>.</p>

  <p>Development and bug tracking happens
  on <a href="https://github.com/codemirror/CodeMirror/">github</a>
  (<a href="http://marijnhaverbeke.nl/git/codemirror">alternate git
  repository</a>).
  Please <a href="http://codemirror.net/doc/reporting.html">read these
  pointers</a> before submitting a bug. Use pull requests to submit
  patches. All contributions must be released under the same MIT
  license that CodeMirror uses.</p>

  <p>Discussion around the project is done on
  a <a href="http://groups.google.com/group/codemirror">mailing list</a>.
  There is also
  the <a href="http://groups.google.com/group/codemirror-announce">codemirror-announce</a>
  list, which is only used for major announcements (such as new
  versions). If needed, you can
  contact <a href="mailto:marijnh@gmail.com">the maintainer</a>
  directly.</p>

  <p>A list of CodeMirror-related software that is not part of the
  main distribution is maintained
  on <a href="https://github.com/codemirror/CodeMirror/wiki/CodeMirror-addons">our
  wiki</a>. Feel free to add your project.</p>
</section>

<section id=browsersupport>
  <h2>Browser support</h2>
  <p>The <em>desktop</em> versions of the following browsers,
  in <em>standards mode</em> (HTML5 <code>&lt;!doctype html></code>
  recommended) are supported:</p>
  <table style="margin-bottom: 1em">
    <tr><th>Firefox</th><td>version 4 and up</td></tr>
    <tr><th>Chrome</th><td>any version</td></tr>
    <tr><th>Safari</th><td>version 5.2 and up</td></tr>
    <tr><th style="padding-right: 1em;">Internet Explorer</th><td>version 8 and up</td></tr>
    <tr><th>Opera</th><td>version 9 and up</td></tr>
  </table>
  <p>Modern mobile browsers tend to partly work. Bug reports and
  patches for mobile support are welcome, but the maintainer does not
  have the time or budget to actually work on it himself.</p>
</section>

</article>
