Right now we use codemirror's JavaScript mode on the website but there's a JSX mode now so we should start using that instead.

signal(cm, override || e.type, cm, e);
    return e_defaultPrevented(e) || e.codemirrorIgnore;
  }
  function fireDelayed() {
    --delayedCallbackDepth;
    var delayed = delayedCallbacks;
    delayedCallbacks = null;
    for (var i = 0; i < delayed.length; ++i) delayed[i]();
  }
  function hasHandler(emitter, type) {
    var arr = emitter._handlers && emitter._handlers[type];
    return arr && arr.length > 0;
  }
  CodeMirror.on = on; CodeMirror.off = off; CodeMirror.signal = signal;
  function eventMixin(ctor) {
    ctor.prototype.on = function(type, f) {on(this, type, f);};
    ctor.prototype.off = function(type, f) {off(this, type, f);};
  }
  
  
  var scrollerCutOff = 30;
  
  
  var Pass = CodeMirror.Pass = {toString: function(){return "CodeMirror.Pass";}};
  function Delayed() {this.id = null;}
  Delayed.prototype = {set: function(ms, f) {clearTimeout(this.id); this.id = setTimeout(f, ms);}};
  
  
  function countColumn(string, end, tabSize, startIndex, startValue) {