lib/assets/scripts/vendor/codemirror/codemirror.js
function registerEventHandlers(cm) {
    var d = cm.display;
    on(d.scroller, "mousedown", operation(cm, onMouseDown));
    on(d.scroller, "dblclick", operation(cm, e_preventDefault));
    on(d.lineSpace, "selectstart", function(e) {
      if (!mouseEventInWidget(d, e)) e_preventDefault(e);
    });
    // Gecko browsers fire contextmenu *after* opening the menu, at
    // which point we can't mess with it anymore. Context menu is
    // handled in onMouseDown for Gecko.
    if (!gecko) on(d.scroller, "contextmenu", function(e) {onContextMenu(cm, e);});

    on(d.scroller, "scroll", function() {
      setScrollTop(cm, d.scroller.scrollTop);
      setScrollLeft(cm, d.scroller.scrollLeft, true);
      signal(cm, "scroll", cm);
    });
    on(d.scrollbarV, "scroll", function() {
      setScrollTop(cm, d.scrollbarV.scrollTop);
    });
    on(d.scrollbarH, "scroll", function() {
      setScrollLeft(cm, d.scrollbarH.scrollLeft);
    });

    on(d.scroller, "mousewheel", function(e){onScrollWheel(cm, e);});
    on(d.scroller, "DOMMouseScroll", function(e){onScrollWheel(cm, e);});

    function reFocus() { if (cm.view.focused) setTimeout(bind(focusInput, cm), 0); }
    on(d.scrollbarH, "mousedown", reFocus);
    on(d.scrollbarV, "mousedown", reFocus);
    // Prevent wrapper from ever scrolling
    on(d.wrapper, "scroll", function() { d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; });
    on(window, "resize", function resizeHandler() {
      // Might be a text scaling operation, clear size caches.
      d.cachedCharWidth = d.cachedTextHeight = null;
      clearCaches(cm);
      if (d.wrapper.parentNode) updateDisplay(cm, true);
      else off(window, "resize", resizeHandler);
    });

    on(d.input, "keyup", operation(cm, function(e) {
      if (cm.options.onKeyEvent && cm.options.onKeyEvent(cm, addStop(e))) return;
      if (e_prop(e, "keyCode") == 16) cm.view.sel.shift = false;
    }));
    on(d.input, "input", bind(fastPoll, cm));
    on(d.input, "keydown", operation(cm, onKeyDown));
    on(d.input, "keypress", operation(cm, onKeyPress));
    on(d.input, "focus", bind(onFocus, cm));
    on(d.input, "blur", bind(onBlur, cm));

    function drag_(e) {
      if (cm.options.onDragEvent && cm.options.onDragEvent(cm, addStop(e))) return;
      e_stop(e);
    }
    if (cm.options.dragDrop) {
      on(d.scroller, "dragstart", function(e){onDragStart(cm, e);});
      on(d.scroller, "dragenter", drag_);
      on(d.scroller, "dragover", drag_);
      on(d.scroller, "drop", operation(cm, onDrop));
    }
    on(d.scroller, "paste", function(){focusInput(cm); fastPoll(cm);});
    on(d.input, "paste", function() {
      d.pasteIncoming = true;
      fastPoll(cm);
    });

    function prepareCopy() {
      if (d.inaccurateSelection) {
        d.prevInput = "";
        d.inaccurateSelection = false;
        d.input.value = cm.getSelection();
        selectInput(d.input);
      }
    }
    on(d.input, "cut", prepareCopy);
    on(d.input, "copy", prepareCopy);

    // Needed to handle Tab key in KHTML
    if (khtml) on(d.sizer, "mouseup", function() {
        if (document.activeElement == d.input) d.input.blur();
        focusInput(cm);
    });
  }
function registerEventHandlers(cm) {
    var d = cm.display;
    on(d.scroller, "mousedown", operation(cm, onMouseDown));
    on(d.scroller, "dblclick", operation(cm, e_preventDefault));
    on(d.lineSpace, "selectstart", function(e) {
      if (!mouseEventInWidget(d, e)) e_preventDefault(e);
    });
    // Gecko browsers fire contextmenu *after* opening the menu, at
    // which point we can't mess with it anymore. Context menu is
    // handled in onMouseDown for Gecko.
    if (!gecko) on(d.scroller, "contextmenu", function(e) {onContextMenu(cm, e);});

    on(d.scroller, "scroll", function() {
      setScrollTop(cm, d.scroller.scrollTop);
      setScrollLeft(cm, d.scroller.scrollLeft, true);
      signal(cm, "scroll", cm);
    });
    on(d.scrollbarV, "scroll", function() {
      setScrollTop(cm, d.scrollbarV.scrollTop);
    });
    on(d.scrollbarH, "scroll", function() {
      setScrollLeft(cm, d.scrollbarH.scrollLeft);
    });

    on(d.scroller, "mousewheel", function(e){onScrollWheel(cm, e);});
    on(d.scroller, "DOMMouseScroll", function(e){onScrollWheel(cm, e);});

    function reFocus() { if (cm.view.focused) setTimeout(bind(focusInput, cm), 0); }
    on(d.scrollbarH, "mousedown", reFocus);
    on(d.scrollbarV, "mousedown", reFocus);
    // Prevent wrapper from ever scrolling
    on(d.wrapper, "scroll", function() { d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; });
    on(window, "resize", function resizeHandler() {
      // Might be a text scaling operation, clear size caches.
      d.cachedCharWidth = d.cachedTextHeight = null;
      clearCaches(cm);
      if (d.wrapper.parentNode) updateDisplay(cm, true);
      else off(window, "resize", resizeHandler);
    });

    on(d.input, "keyup", operation(cm, function(e) {
      if (cm.options.onKeyEvent && cm.options.onKeyEvent(cm, addStop(e))) return;
      if (e_prop(e, "keyCode") == 16) cm.view.sel.shift = false;
    }));
    on(d.input, "input", bind(fastPoll, cm));
    on(d.input, "keydown", operation(cm, onKeyDown));
    on(d.input, "keypress", operation(cm, onKeyPress));
    on(d.input, "focus", bind(onFocus, cm));
    on(d.input, "blur", bind(onBlur, cm));

    function drag_(e) {
      if (cm.options.onDragEvent && cm.options.onDragEvent(cm, addStop(e))) return;
      e_stop(e);
    }
    if (cm.options.dragDrop) {
      on(d.scroller, "dragstart", function(e){onDragStart(cm, e);});
      on(d.scroller, "dragenter", drag_);
      on(d.scroller, "dragover", drag_);
      on(d.scroller, "drop", operation(cm, onDrop));
    }
    on(d.scroller, "paste", function(){focusInput(cm); fastPoll(cm);});
    on(d.input, "paste", function() {
      d.pasteIncoming = true;
      fastPoll(cm);
    });

    function prepareCopy() {
      if (d.inaccurateSelection) {
        d.prevInput = "";
        d.inaccurateSelection = false;
        d.input.value = cm.getSelection();
        selectInput(d.input);
      }
    }
    on(d.input, "cut", prepareCopy);
    on(d.input, "copy", prepareCopy);

    // Needed to handle Tab key in KHTML
    if (khtml) on(d.sizer, "mouseup", function() {
        if (document.activeElement == d.input) d.input.blur();
        focusInput(cm);
    });
  }
function registerEventHandlers ( cm ) { var d = cm . display ; on ( d . scroller , "mousedown" , operation ( cm , onMouseDown ) ) ; on ( d . scroller , "dblclick" , operation ( cm , e_preventDefault ) ) ; on ( d . lineSpace , "selectstart" , function ( e ) { if ( ! mouseEventInWidget ( d , e ) ) e_preventDefault ( e ) ; } ) ; // Gecko browsers fire contextmenu *after* opening the menu, at // which point we can't mess with it anymore. Context menu is // handled in onMouseDown for Gecko. if ( ! gecko ) on ( d . scroller , "contextmenu" , function ( e ) { onContextMenu ( cm , e ) ; } ) ; on ( d . scroller , "scroll" , function ( ) { setScrollTop ( cm , d . scroller . scrollTop ) ; setScrollLeft ( cm , d . scroller . scrollLeft , true ) ; signal ( cm , "scroll" , cm ) ; } ) ; on ( d . scrollbarV , "scroll" , function ( ) { setScrollTop ( cm , d . scrollbarV . scrollTop ) ; } ) ; on ( d . scrollbarH , "scroll" , function ( ) { setScrollLeft ( cm , d . scrollbarH . scrollLeft ) ; } ) ; on ( d . scroller , "mousewheel" , function ( e ) { onScrollWheel ( cm , e ) ; } ) ; on ( d . scroller , "DOMMouseScroll" , function ( e ) { onScrollWheel ( cm , e ) ; } ) ; function reFocus ( ) { if ( cm . view . focused ) setTimeout ( bind ( focusInput , cm ) , 0 ) ; } on ( d . scrollbarH , "mousedown" , reFocus ) ; on ( d . scrollbarV , "mousedown" , reFocus ) ; // Prevent wrapper from ever scrolling on ( d . wrapper , "scroll" , function ( ) { d . wrapper . scrollTop = d . wrapper . scrollLeft = 0 ; } ) ; on ( window , "resize" , function resizeHandler ( ) { // Might be a text scaling operation, clear size caches. d . cachedCharWidth = d . cachedTextHeight = null ; clearCaches ( cm ) ; if ( d . wrapper . parentNode ) updateDisplay ( cm , true ) ; else off ( window , "resize" , resizeHandler ) ; } ) ; on ( d . input , "keyup" , operation ( cm , function ( e ) { if ( cm . options . onKeyEvent && cm . options . onKeyEvent ( cm , addStop ( e ) ) ) return ; if ( e_prop ( e , "keyCode" ) == 16 ) cm . view . sel . shift = false ; } ) ) ; on ( d . input , "input" , bind ( fastPoll , cm ) ) ; on ( d . input , "keydown" , operation ( cm , onKeyDown ) ) ; on ( d . input , "keypress" , operation ( cm , onKeyPress ) ) ; on ( d . input , "focus" , bind ( onFocus , cm ) ) ; on ( d . input , "blur" , bind ( onBlur , cm ) ) ; function drag_ ( e ) { if ( cm . options . onDragEvent && cm . options . onDragEvent ( cm , addStop ( e ) ) ) return ; e_stop ( e ) ; } if ( cm . options . dragDrop ) { on ( d . scroller , "dragstart" , function ( e ) { onDragStart ( cm , e ) ; } ) ; on ( d . scroller , "dragenter" , drag_ ) ; on ( d . scroller , "dragover" , drag_ ) ; on ( d . scroller , "drop" , operation ( cm , onDrop ) ) ; } on ( d . scroller , "paste" , function ( ) { focusInput ( cm ) ; fastPoll ( cm ) ; } ) ; on ( d . input , "paste" , function ( ) { d . pasteIncoming = true ; fastPoll ( cm ) ; } ) ; function prepareCopy ( ) { if ( d . inaccurateSelection ) { d . prevInput = "" ; d . inaccurateSelection = false ; d . input . value = cm . getSelection ( ) ; selectInput ( d . input ) ; } } on ( d . input , "cut" , prepareCopy ) ; on ( d . input , "copy" , prepareCopy ) ; // Needed to handle Tab key in KHTML if ( khtml ) on ( d . sizer , "mouseup" , function ( ) { if ( document . activeElement == d . input ) d . input . blur ( ) ; focusInput ( cm ) ; } ) ; }
EVENT HANDLERS
EVENT HANDLERS