2016-02-09 04:51:07 +00:00
! function ( e ) { if ( "object" == typeof exports && "object" == typeof module ) module . exports = e ( ) ; else { if ( "function" == typeof define && define . amd ) return define ( [ ] , e ) ; ( this || window ) . CodeMirror = e ( ) } } ( function ( ) { "use strict" ; function e ( r , n ) { if ( ! ( this instanceof e ) ) return new e ( r , n ) ; this . options = n = n ? Di ( n ) : { } , Di ( ea , n , ! 1 ) , p ( n ) ; var i = n . value ; "string" == typeof i && ( i = new Ca ( i , n . mode , null , n . lineSeparator ) ) , this . doc = i ; var o = new e . inputStyles [ n . inputStyle ] ( this ) , a = this . display = new t ( r , i , o ) ; a . wrapper . CodeMirror = this , c ( this ) , s ( this ) , n . lineWrapping && ( this . display . wrapper . className += " CodeMirror-wrap" ) , n . autofocus && ! Eo && a . input . focus ( ) , v ( this ) , this . state = { keyMaps : [ ] , overlays : [ ] , modeGen : 0 , overwrite : ! 1 , delayingBlurEvent : ! 1 , focused : ! 1 , suppressEdits : ! 1 , pasteIncoming : ! 1 , cutIncoming : ! 1 , selectingText : ! 1 , draggingText : ! 1 , highlight : new Oi , keySeq : null , specialChars : null } ; var l = this ; ko && 11 > xo && setTimeout ( function ( ) { l . display . input . reset ( ! 0 ) } , 20 ) , Ht ( this ) , Zi ( ) , xt ( this ) , this . curOp . forceUpdate = ! 0 , Yn ( this , i ) , n . autofocus && ! Eo || l . hasFocus ( ) ? setTimeout ( ji ( vr , this ) , 20 ) : yr ( this ) ; for ( var u in ta ) ta . hasOwnProperty ( u ) && ta [ u ] ( this , n [ u ] , ra ) ; w ( this ) , n . finishInit && n . finishInit ( this ) ; for ( var f = 0 ; f < aa . length ; ++ f ) aa [ f ] ( this ) ; _t ( this ) , wo && n . lineWrapping && "optimizelegibility" == getComputedStyle ( a . lineDiv ) . textRendering && ( a . lineDiv . style . textRendering = "auto" ) } function t ( e , t , r ) { var n = this ; this . input = r , n . scrollbarFiller = Hi ( "div" , null , "CodeMirror-scrollbar-filler" ) , n . scrollbarFiller . setAttribute ( "cm-not-content" , "true" ) , n . gutterFiller = Hi ( "div" , null , "CodeMirror-gutter-filler" ) , n . gutterFiller . setAttribute ( "cm-not-content" , "true" ) , n . lineDiv = Hi ( "div" , null , "CodeMirror-code" ) , n . selectionDiv = Hi ( "div" , null , null , "position: relative; z-index: 1" ) , n . cursorDiv = Hi ( "div" , null , "CodeMirror-cursors" ) , n . measure = Hi ( "div" , null , "CodeMirror-measure" ) , n . lineMeasure = Hi ( "div" , null , "CodeMirror-measure" ) , n . lineSpace = Hi ( "div" , [ n . measure , n . lineMeasure , n . selectionDiv , n . cursorDiv , n . lineDiv ] , null , "position: relative; outline: none" ) , n . mover = Hi ( "div" , [ Hi ( "div" , [ n . lineSpace ] , "CodeMirror-lines" ) ] , null , "position: relative" ) , n . sizer = Hi ( "div" , [ n . mover ] , "CodeMirror-sizer" ) , n . sizerWidth = null , n . heightForcer = Hi ( "div" , null , null , "position: absolute; height: " + Pa + "px; width: 1px;" ) , n . gutters = Hi ( "div" , null , "CodeMirror-gutters" ) , n . lineGutter = null , n . scroller = Hi ( "div" , [ n . sizer , n . heightForcer , n . gutters ] , "CodeMirror-scroll" ) , n . scroller . setAttribute ( "tabIndex" , "-1" ) , n . wrapper = Hi ( "div" , [ n . scrollbarFiller , n . gutterFiller , n . scroller ] , "CodeMirror" ) , ko && 8 > xo && ( n . gutters . style . zIndex = - 1 , n . scroller . style . paddingRight = 0 ) , wo || vo && Eo || ( n . scroller . draggable = ! 0 ) , e && ( e . appendChild ? e . appendChild ( n . wrapper ) : e ( n . wrapper ) ) , n . viewFrom = n . viewTo = t . first , n . reportedViewFrom = n . reportedViewTo = t . first , n . view = [ ] , n . renderedView = null , n . externalMeasured = null , n . viewOffset = 0 , n . lastWrapHeight = n . lastWrapWidth = 0 , n . updateLineNumbers = null , n . nativeBarWidth = n . barHeight = n . barWidth = 0 , n . scrollbarsClipped = ! 1 , n . lineNumWidth = n . lineNumInnerWidth = n . lineNumChars = null , n . alignWidgets = ! 1 , n . cachedCharWidth = n . cachedTextHeight = n . cachedPaddingH = null , n . maxLine = null , n . maxLineLength = 0 , n . maxLineChanged = ! 1 , n . wheelDX = n . wheelDY = n . wheelStartX = n . wheelStartY = null , n . shift = ! 1 , n . selForContextMenu = null , n . activeTouch = null , r . init ( n ) } function r ( t ) { t . doc . mode = e . getMode ( t . options , t . doc . modeOption ) , n ( t ) } function n ( e ) { e . doc . iter ( function ( e ) { e . stateAfter && ( e . stateAfter = null ) , e . styles && ( e . styles = null ) } ) , e . doc . frontier = e . doc . first , Be ( e , 100 ) , e . state . modeGen ++ , e . curOp && qt ( e ) } function i ( e ) { e . options . lineWrapping ? ( Qa ( e . display . wrapper , "CodeMirror-wrap" ) , e . display . sizer . style . minWidth = "" , e . display . sizerWidth = null ) : ( Ya ( e . display . wrapper , "CodeMirror-wrap" ) , d ( e ) ) , a ( e ) , qt ( e ) , lt ( e ) , setTimeout ( function ( ) { y ( e ) } , 100 ) } function o ( e ) { var t = bt ( e . display ) , r = e . options . lineWrapping , n = r && Math . max ( 5 , e . display . scroller . clientWidth / kt ( e . display ) - 3 ) ; return function ( i ) { if ( _n ( e . doc , i ) ) return 0 ; var o = 0 ; if ( i . widgets ) for ( var a = 0 ; a < i . widgets . length ; a ++ ) i . widgets [ a ] . height && ( o += i . widgets [ a ] . height ) ; return r ? o + ( Math . ceil ( i . text . length / n ) || 1 ) * t : o + t } } function a ( e ) { var t = e . doc , r = o ( e ) ; t . iter ( function ( e ) { var t = r ( e ) ; t != e . height && ti ( e , t ) } ) } function s ( e ) { e . d
var l = e [ s ] , c = e [ s + 1 ] ; if ( l > t ? ( i = 0 , o = 1 , a = "left" ) : c > t ? ( i = t - l , o = i + 1 ) : ( s == e . length - 3 || t == c && e [ s + 3 ] > t ) && ( o = c - l , i = o - 1 , t >= c && ( a = "right" ) ) , null != i ) { if ( n = e [ s + 2 ] , l == c && r == ( n . insertLeft ? "left" : "right" ) && ( a = r ) , "left" == r && 0 == i ) for ( ; s && e [ s - 2 ] == e [ s - 3 ] && e [ s - 1 ] . insertLeft ; ) n = e [ ( s -= 3 ) + 2 ] , a = "left" ; if ( "right" == r && i == c - l ) for ( ; s < e . length - 3 && e [ s + 3 ] == e [ s + 4 ] && ! e [ s + 5 ] . insertLeft ; ) n = e [ ( s += 3 ) + 2 ] , a = "right" ; break } } return { node : n , start : i , end : o , collapse : a , coverStart : l , coverEnd : c } } function it ( e , t , r , n ) { var i , o = nt ( t . map , r , n ) , a = o . node , s = o . start , l = o . end , c = o . collapse ; if ( 3 == a . nodeType ) { for ( var u = 0 ; 4 > u ; u ++ ) { for ( ; s && Fi ( t . line . text . charAt ( o . coverStart + s ) ) ; ) -- s ; for ( ; o . coverStart + l < o . coverEnd && Fi ( t . line . text . charAt ( o . coverStart + l ) ) ; ) ++ l ; if ( ko && 9 > xo && 0 == s && l == o . coverEnd - o . coverStart ) i = a . parentNode . getBoundingClientRect ( ) ; else if ( ko && e . options . lineWrapping ) { var f = $a ( a , s , l ) . getClientRects ( ) ; i = f . length ? f [ "right" == n ? f . length - 1 : 0 ] : $o } else i = $a ( a , s , l ) . getBoundingClientRect ( ) || $o ; if ( i . left || i . right || 0 == s ) break ; l = s , s -= 1 , c = "right" } ko && 11 > xo && ( i = ot ( e . display . measure , i ) ) } else { s > 0 && ( c = n = "right" ) ; var f ; i = e . options . lineWrapping && ( f = a . getClientRects ( ) ) . length > 1 ? f [ "right" == n ? f . length - 1 : 0 ] : a . getBoundingClientRect ( ) } if ( ko && 9 > xo && ! s && ( ! i || ! i . left && ! i . right ) ) { var d = a . parentNode . getClientRects ( ) [ 0 ] ; i = d ? { left : d . left , right : d . left + kt ( e . display ) , top : d . top , bottom : d . bottom } : $o } for ( var p = i . top - t . rect . top , h = i . bottom - t . rect . top , m = ( p + h ) / 2 , g = t . view . measure . heights , u = 0 ; u < g . length - 1 && ! ( m < g [ u ] ) ; u ++ ) ; var v = u ? g [ u - 1 ] : 0 , y = g [ u ] , b = { left : ( "right" == c ? i . right : i . left ) - t . rect . left , right : ( "left" == c ? i . left : i . right ) - t . rect . left , top : v , bottom : y } ; return i . left || i . right || ( b . bogus = ! 0 ) , e . options . singleCursorHeightPerLine || ( b . rtop = p , b . rbottom = h ) , b } function ot ( e , t ) { if ( ! window . screen || null == screen . logicalXDPI || screen . logicalXDPI == screen . deviceXDPI || ! eo ( e ) ) return t ; var r = screen . logicalXDPI / screen . deviceXDPI , n = screen . logicalYDPI / screen . deviceYDPI ; return { left : t . left * r , right : t . right * r , top : t . top * n , bottom : t . bottom * n } } function at ( e ) { if ( e . measure && ( e . measure . cache = { } , e . measure . heights = null , e . rest ) ) for ( var t = 0 ; t < e . rest . length ; t ++ ) e . measure . caches [ t ] = { } } function st ( e ) { e . display . externalMeasure = null , $i ( e . display . lineMeasure ) ; for ( var t = 0 ; t < e . display . view . length ; t ++ ) at ( e . display . view [ t ] ) } function lt ( e ) { st ( e ) , e . display . cachedCharWidth = e . display . cachedTextHeight = e . display . cachedPaddingH = null , e . options . lineWrapping || ( e . display . maxLineChanged = ! 0 ) , e . display . lineNumChars = null } function ct ( ) { return window . pageXOffset || ( document . documentElement || document . body ) . scrollLeft } function ut ( ) { return window . pageYOffset || ( document . documentElement || document . body ) . scrollTop } function ft ( e , t , r , n ) { if ( t . widgets ) for ( var i = 0 ; i < t . widgets . length ; ++ i ) if ( t . widgets [ i ] . above ) { var o = Mn ( t . widgets [ i ] ) ; r . top += o , r . bottom += o } if ( "line" == n ) return r ; n || ( n = "local" ) ; var a = ii ( t ) ; if ( "local" == n ? a += $e ( e . display ) : a -= e . display . viewOffset , "page" == n || "window" == n ) { var s = e . display . lineSpace . getBoundingClientRect ( ) ; a += s . top + ( "window" == n ? 0 : ut ( ) ) ; var l = s . left + ( "window" == n ? 0 : ct ( ) ) ; r . left += l , r . right += l } return r . top += a , r . bottom += a , r } function dt ( e , t , r ) { if ( "div" == r ) return t ; var n = t . left , i = t . top ; if ( "page" == r ) n -= ct ( ) , i -= ut ( ) ; else if ( "local" == r || ! r ) { var o = e . display . sizer . getBoundingClientRect ( ) ; n += o . left , i += o . top } var a = e . display . lineSpace . getBoundingClientRect ( ) ; return { left : n - a . left , top : i - a . top } } function pt ( e , t , r , n , i ) { return n || ( n = Qn ( e . doc , t . line ) ) , ft ( e , n , Je ( e , n , t . ch , i ) , r ) } function ht ( e , t , r , n , i , o ) { function a ( t , a ) { var s = rt ( e , i , t , a ? "right" : "left" , o ) ; return a ? s . left = s . right : s . right = s . left , ft ( e , n , s , r ) } function s ( e , t ) { var r = l [ t ] , n = r . level % 2 ; return e == ro ( r ) && t && r . level < l [ t - 1 ] . level ? ( r = l [ -- t ] , e = no ( r ) - ( r . level % 2 ? 0 : 1 ) , n = ! 0 ) : e == no ( r ) && t < l . length - 1 && r . level < l [ t + 1 ] . level && ( r = l [ ++ t ] , e = ro ( r ) - r . level % 2 , n = ! 1 ) , n && e == r . to && e > r . from ? a ( e - 1 ) : a ( e , n ) } n = n || Qn ( e . doc , t . line ) , i || ( i = tt ( e , n ) ) ; var l = oi ( n ) , c = t . ch ; if ( ! l ) return a ( c ) ; var u = uo ( l , c ) , f = s ( c , u ) ; return null != as && ( f . other = s ( c , as ) ) , f } function mt ( e , t ) { var r = 0 , t = ge ( e . doc , t ) ; e . options . lineWrapping || ( r = kt ( e . display ) * t . ch ) ; var n = Qn ( e . doc , t . line ) , i = ii ( n ) + $e ( e . display ) ; return { left : r , right : r , top : i , bottom : i + n . height } } function gt ( e , t , r , n ) { var i = Do ( e , t ) ; return i . xRel = n , r && ( i . outside = ! 0
2015-05-04 07:53:29 +00:00
2016-02-09 04:51:07 +00:00
var t = e . getCursor ( ) , r = t , n = t ; e . options . lineWrapping || ( r = t . ch ? Do ( t . line , t . ch - 1 ) : t , n = Do ( t . line , t . ch + 1 ) ) , e . curOp . scrollToPos = { from : r , to : n , margin : e . options . cursorScrollMargin , isCursor : ! 0 } } function jr ( e ) { var t = e . curOp . scrollToPos ; if ( t ) { e . curOp . scrollToPos = null ; var r = mt ( e , t . from ) , n = mt ( e , t . to ) , i = qr ( e , Math . min ( r . left , n . left ) , Math . min ( r . top , n . top ) - t . margin , Math . max ( r . right , n . right ) , Math . max ( r . bottom , n . bottom ) + t . margin ) ; e . scrollTo ( i . scrollLeft , i . scrollTop ) } } function Br ( e , t , r , n ) { var i , o = e . doc ; null == r && ( r = "add" ) , "smart" == r && ( o . mode . indent ? i = He ( e , t ) : r = "prev" ) ; var a = e . options . tabSize , s = Qn ( o , t ) , l = Ba ( s . text , null , a ) ; s . stateAfter && ( s . stateAfter = null ) ; var c , u = s . text . match ( /^\s*/ ) [ 0 ] ; if ( n || /\S/ . test ( s . text ) ) { if ( "smart" == r && ( c = o . mode . indent ( i , s . text . slice ( u . length ) , s . text ) , c == qa || c > 150 ) ) { if ( ! n ) return ; r = "prev" } } else c = 0 , r = "not" ; "prev" == r ? c = t > o . first ? Ba ( Qn ( o , t - 1 ) . text , null , a ) : 0 : "add" == r ? c = l + e . options . indentUnit : "subtract" == r ? c = l - e . options . indentUnit : "number" == typeof r && ( c = l + r ) , c = Math . max ( 0 , c ) ; var f = "" , d = 0 ; if ( e . options . indentWithTabs ) for ( var p = Math . floor ( c / a ) ; p ; -- p ) d += a , f += " " ; if ( c > d && ( f += zi ( c - d ) ) , f != u ) return zr ( o , f , Do ( t , 0 ) , Do ( t , u . length ) , "+input" ) , s . stateAfter = null , ! 0 ; for ( var p = 0 ; p < o . sel . ranges . length ; p ++ ) { var h = o . sel . ranges [ p ] ; if ( h . head . line == t && h . head . ch < u . length ) { var d = Do ( t , u . length ) ; _e ( o , p , new de ( d , d ) ) ; break } } } function Wr ( e , t , r , n ) { var i = t , o = t ; return "number" == typeof t ? o = Qn ( e , me ( e , t ) ) : i = ri ( t ) , null == i ? null : ( n ( o , i ) && e . cm && Rt ( e . cm , i , r ) , o ) } function Fr ( e , t ) { for ( var r = e . doc . sel . ranges , n = [ ] , i = 0 ; i < r . length ; i ++ ) { for ( var o = t ( r [ i ] ) ; n . length && jo ( o . from , Ii ( n ) . to ) <= 0 ; ) { var a = n . pop ( ) ; if ( jo ( a . from , o . from ) < 0 ) { o . from = a . from ; break } } n . push ( o ) } Et ( e , function ( ) { for ( var t = n . length - 1 ; t >= 0 ; t -- ) zr ( e . doc , "" , n [ t ] . from , n [ t ] . to , "+delete" ) ; Dr ( e ) } ) } function Hr ( e , t , r , n , i ) { function o ( ) { var t = s + r ; return t < e . first || t >= e . first + e . size ? ! 1 : ( s = t , u = Qn ( e , t ) ) } function a ( e ) { var t = ( i ? po : ho ) ( u , l , r , ! 0 ) ; if ( null == t ) { if ( e || ! o ( ) ) return ! 1 ; l = i ? ( 0 > r ? oo : io ) ( u ) : 0 > r ? u . text . length : 0 } else l = t ; return ! 0 } var s = t . line , l = t . ch , c = r , u = Qn ( e , s ) ; if ( "char" == n ) a ( ) ; else if ( "column" == n ) a ( ! 0 ) ; else if ( "word" == n || "group" == n ) for ( var f = null , d = "group" == n , p = e . cm && e . cm . getHelper ( t , "wordChars" ) , h = ! 0 ; ! ( 0 > r ) || a ( ! h ) ; h = ! 1 ) { var m = u . text . charAt ( l ) || "\n" , g = Bi ( m , p ) ? "w" : d && "\n" == m ? "n" : ! d || /\s/ . test ( m ) ? null : "p" ; if ( ! d || h || g || ( g = "s" ) , f && f != g ) { 0 > r && ( r = 1 , a ( ) ) ; break } if ( g && ( f = g ) , r > 0 && ! a ( ! h ) ) break } var v = Ie ( e , Do ( s , l ) , t , c , ! 0 ) ; return jo ( t , v ) || ( v . hitSide = ! 0 ) , v } function $r ( e , t , r , n ) { var i , o = e . doc , a = t . left ; if ( "page" == n ) { var s = Math . min ( e . display . wrapper . clientHeight , window . innerHeight || document . documentElement . clientHeight ) ; i = t . top + r * ( s - ( 0 > r ? 1.5 : . 5 ) * bt ( e . display ) ) } else "line" == n && ( i = r > 0 ? t . bottom + 3 : t . top - 3 ) ; for ( ; ; ) { var l = vt ( e , a , i ) ; if ( ! l . outside ) break ; if ( 0 > r ? 0 >= i : i >= o . height ) { l . hitSide = ! 0 ; break } i += 5 * r } return l } function Ur ( t , r , n , i ) { e . defaults [ t ] = r , n && ( ta [ t ] = i ? function ( e , t , r ) { r != ra && n ( e , t , r ) } : n ) } function Kr ( e ) { for ( var t , r , n , i , o = e . split ( /-(?!$)/ ) , e = o [ o . length - 1 ] , a = 0 ; a < o . length - 1 ; a ++ ) { var s = o [ a ] ; if ( /^(cmd|meta|m)$/i . test ( s ) ) i = ! 0 ; else if ( /^a(lt)?$/i . test ( s ) ) t = ! 0 ; else if ( /^(c|ctrl|control)$/i . test ( s ) ) r = ! 0 ; else { if ( ! /^s(hift)$/i . test ( s ) ) throw new Error ( "Unrecognized modifier name: " + s ) ; n = ! 0 } } return t && ( e = "Alt-" + e ) , r && ( e = "Ctrl-" + e ) , i && ( e = "Cmd-" + e ) , n && ( e = "Shift-" + e ) , e } function Vr ( e ) { return "string" == typeof e ? fa [ e ] : e } function Gr ( e , t , r , n , i ) { if ( n && n . shared ) return Xr ( e , t , r , n , i ) ; if ( e . cm && ! e . cm . curOp ) return Ot ( e . cm , Gr ) ( e , t , r , n , i ) ; var o = new va ( e , i ) , a = jo ( t , r ) ; if ( n && Di ( n , o , ! 1 ) , a > 0 || 0 == a && o . clearWhenEmpty !== ! 1 ) return o ; if ( o . replacedWith && ( o . collapsed = ! 0 , o . widgetNode = Hi ( "span" , [ o . replacedWith ] , "CodeMirror-widget" ) , n . handleMouseEvents || o . widgetNode . setAttribute ( "cm-ignore-events" , "true" ) , n . insertLeft && ( o . widgetNode . insertLeft = ! 0 ) ) , o . collapsed ) { if ( yn ( e , t . line , t , r , o ) || t . line != r . line && yn ( e , r . line , t , r , o ) ) throw new Error ( "Inserting collapsed marker partially overlapping an existing one" ) ; Ro = ! 0 } o . addToHistory && ui ( e , { from : t , to : r , origin : "markText" } , e . sel , 0 / 0 ) ; var s , l = t . line , c = e . cm ; if ( e . iter ( l , r . line + 1 , function ( e ) { c && o . collapsed && ! c . options . lineWrapping && bn ( e ) == c . display . maxLine && ( s = ! 0 ) , o . collapsed && l != t . line && ti ( e , 0 ) , rn ( e , new Jr ( o , l == t . line ? t . ch : null , l == r . line ? r . ch : null ) ) , ++ l } ) , o . co
"native" : m , "null" : g } , S . prototype . signal = function ( e , t ) { Ai ( e , t ) && this . events . push ( arguments ) } , S . prototype . finish = function ( ) { for ( var e = 0 ; e < this . events . length ; e ++ ) Ia . apply ( null , this . events [ e ] ) } ; var Do = e . Pos = function ( e , t ) { return this instanceof Do ? ( this . line = e , void ( this . ch = t ) ) : new Do ( e , t ) } , jo = e . cmpPos = function ( e , t ) { return e . line - t . line || e . ch - t . ch } , Bo = null ; ne . prototype = Di ( { init : function ( e ) { function t ( e ) { if ( ! Li ( n , e ) ) { if ( n . somethingSelected ( ) ) Bo = n . getSelections ( ) , r . inaccurateSelection && ( r . prevInput = "" , r . inaccurateSelection = ! 1 , o . value = Bo . join ( "\n" ) , Ha ( o ) ) ; else { if ( ! n . options . lineWiseCopyCut ) return ; var t = te ( n ) ; Bo = t . text , "cut" == e . type ? n . setSelections ( t . ranges , null , Ra ) : ( r . prevInput = "" , o . value = t . text . join ( "\n" ) , Ha ( o ) ) } "cut" == e . type && ( n . state . cutIncoming = ! 0 ) } } var r = this , n = this . cm , i = this . wrapper = ie ( ) , o = this . textarea = i . firstChild ; e . wrapper . insertBefore ( i , e . wrapper . firstChild ) , Ao && ( o . style . width = "0px" ) , Ea ( o , "input" , function ( ) { ko && xo >= 9 && r . hasSelection && ( r . hasSelection = null ) , r . poll ( ) } ) , Ea ( o , "paste" , function ( e ) { Li ( n , e ) || J ( e , n ) || ( n . state . pasteIncoming = ! 0 , r . fastPoll ( ) ) } ) , Ea ( o , "cut" , t ) , Ea ( o , "copy" , t ) , Ea ( e . scroller , "paste" , function ( t ) { Kt ( e , t ) || Li ( n , t ) || ( n . state . pasteIncoming = ! 0 , r . focus ( ) ) } ) , Ea ( e . lineSpace , "selectstart" , function ( t ) { Kt ( e , t ) || La ( t ) } ) , Ea ( o , "compositionstart" , function ( ) { var e = n . getCursor ( "from" ) ; r . composing && r . composing . range . clear ( ) , r . composing = { start : e , range : n . markText ( e , n . getCursor ( "to" ) , { className : "CodeMirror-composing" } ) } } ) , Ea ( o , "compositionend" , function ( ) { r . composing && ( r . poll ( ) , r . composing . range . clear ( ) , r . composing = null ) } ) } , prepareSelection : function ( ) { var e = this . cm , t = e . display , r = e . doc , n = qe ( e ) ; if ( e . options . moveInputWithCursor ) { var i = ht ( e , r . sel . primary ( ) . head , "div" ) , o = t . wrapper . getBoundingClientRect ( ) , a = t . lineDiv . getBoundingClientRect ( ) ; n . teTop = Math . max ( 0 , Math . min ( t . wrapper . clientHeight - 10 , i . top + a . top - o . top ) ) , n . teLeft = Math . max ( 0 , Math . min ( t . wrapper . clientWidth - 10 , i . left + a . left - o . left ) ) } return n } , showSelection : function ( e ) { var t = this . cm , r = t . display ; Ui ( r . cursorDiv , e . cursors ) , Ui ( r . selectionDiv , e . selection ) , null != e . teTop && ( this . wrapper . style . top = e . teTop + "px" , this . wrapper . style . left = e . teLeft + "px" ) } , reset : function ( e ) { if ( ! this . contextMenuPending ) { var t , r , n = this . cm , i = n . doc ; if ( n . somethingSelected ( ) ) { this . prevInput = "" ; var o = i . sel . primary ( ) ; t = ns && ( o . to ( ) . line - o . from ( ) . line > 100 || ( r = n . getSelection ( ) ) . length > 1e3 ) ; var a = t ? "-" : r || n . getSelection ( ) ; this . composing || ( this . textarea . value = a ) , n . state . focused && Ha ( this . textarea ) , ko && xo >= 9 && ( this . hasSelection = a ) } else e || ( this . composing || ( this . prevInput = this . textarea . value = "" ) , ko && xo >= 9 && ( this . hasSelection = null ) ) ; this . inaccurateSelection = t } } , getField : function ( ) { return this . textarea } , supportsTouch : function ( ) { return ! 1 } , focus : function ( ) { if ( "nocursor" != this . cm . options . readOnly && ( ! Eo || Ki ( ) != this . textarea ) ) try { this . textarea . focus ( ) } catch ( e ) { } } , blur : function ( ) { this . textarea . blur ( ) } , resetPosition : function ( ) { this . wrapper . style . top = this . wrapper . style . left = 0 } , receivedFocus : function ( ) { this . slowPoll ( ) } , slowPoll : function ( ) { var e = this ; e . pollingFast || e . polling . set ( this . cm . options . pollInterval , function ( ) { e . poll ( ) , e . cm . state . focused && e . slowPoll ( ) } ) } , fastPoll : function ( ) { function e ( ) { var n = r . poll ( ) ; n || t ? ( r . pollingFast = ! 1 , r . slowPoll ( ) ) : ( t = ! 0 , r . polling . set ( 60 , e ) ) } var t = ! 1 , r = this ; r . pollingFast = ! 0 , r . polling . set ( 20 , e ) } , poll : function ( ) { var e = this . cm , t = this . textarea , r = this . prevInput ; if ( this . contextMenuPending || ! e . state . focused || rs ( t ) && ! r && ! this . composing || e . isReadOnly ( ) || e . options . disableInput || e . state . keySeq ) return ! 1 ; var n = t . value ; if ( n == r && ! e . somethingSelected ( ) ) return ! 1 ; if ( ko && xo >= 9 && this . hasSelection === n || Oo && /[\uf700-\uf7ff]/ . test ( n ) ) return e . display . input . reset ( ) , ! 1 ; if ( e . doc . sel == e . display . selForContextMenu ) { var i = n . charCodeAt ( 0 ) ; if ( 8203 != i || r || ( r = " " ) , 8666 == i ) return this . reset ( ) , this . cm . execCommand ( "undo" ) } for ( var o = 0 , a = Math . min ( r . length , n . length ) ; a > o && r . charCodeAt ( o ) == n . charCodeAt ( o ) ; ) ++ o ; var s = this ; return Et ( e , function ( ) { Q ( e , n . slice ( o ) , r . length - o , null , s . composing ? "*compose" : null ) , n . length > 1e3 || n . indexOf ( "\n" ) > - 1 ? t . value = s . prevInput = "" : s . prevInput = n , s . composing && ( s . composing . range . clear ( ) , s . composing . range = e . markText ( s . comp
Enter : "newlineAndIndent" , Insert : "toggleOverwrite" , Esc : "singleSelection" } , fa . pcDefault = { "Ctrl-A" : "selectAll" , "Ctrl-D" : "deleteLine" , "Ctrl-Z" : "undo" , "Shift-Ctrl-Z" : "redo" , "Ctrl-Y" : "redo" , "Ctrl-Home" : "goDocStart" , "Ctrl-End" : "goDocEnd" , "Ctrl-Up" : "goLineUp" , "Ctrl-Down" : "goLineDown" , "Ctrl-Left" : "goGroupLeft" , "Ctrl-Right" : "goGroupRight" , "Alt-Left" : "goLineStart" , "Alt-Right" : "goLineEnd" , "Ctrl-Backspace" : "delGroupBefore" , "Ctrl-Delete" : "delGroupAfter" , "Ctrl-S" : "save" , "Ctrl-F" : "find" , "Ctrl-G" : "findNext" , "Shift-Ctrl-G" : "findPrev" , "Shift-Ctrl-F" : "replace" , "Shift-Ctrl-R" : "replaceAll" , "Ctrl-[" : "indentLess" , "Ctrl-]" : "indentMore" , "Ctrl-U" : "undoSelection" , "Shift-Ctrl-U" : "redoSelection" , "Alt-U" : "redoSelection" , fallthrough : "basic" } , fa . emacsy = { "Ctrl-F" : "goCharRight" , "Ctrl-B" : "goCharLeft" , "Ctrl-P" : "goLineUp" , "Ctrl-N" : "goLineDown" , "Alt-F" : "goWordRight" , "Alt-B" : "goWordLeft" , "Ctrl-A" : "goLineStart" , "Ctrl-E" : "goLineEnd" , "Ctrl-V" : "goPageDown" , "Shift-Ctrl-V" : "goPageUp" , "Ctrl-D" : "delCharAfter" , "Ctrl-H" : "delCharBefore" , "Alt-D" : "delWordAfter" , "Alt-Backspace" : "delWordBefore" , "Ctrl-K" : "killLine" , "Ctrl-T" : "transposeChars" } , fa . macDefault = { "Cmd-A" : "selectAll" , "Cmd-D" : "deleteLine" , "Cmd-Z" : "undo" , "Shift-Cmd-Z" : "redo" , "Cmd-Y" : "redo" , "Cmd-Home" : "goDocStart" , "Cmd-Up" : "goDocStart" , "Cmd-End" : "goDocEnd" , "Cmd-Down" : "goDocEnd" , "Alt-Left" : "goGroupLeft" , "Alt-Right" : "goGroupRight" , "Cmd-Left" : "goLineLeft" , "Cmd-Right" : "goLineRight" , "Alt-Backspace" : "delGroupBefore" , "Ctrl-Alt-Backspace" : "delGroupAfter" , "Alt-Delete" : "delGroupAfter" , "Cmd-S" : "save" , "Cmd-F" : "find" , "Cmd-G" : "findNext" , "Shift-Cmd-G" : "findPrev" , "Cmd-Alt-F" : "replace" , "Shift-Cmd-Alt-F" : "replaceAll" , "Cmd-[" : "indentLess" , "Cmd-]" : "indentMore" , "Cmd-Backspace" : "delWrappedLineLeft" , "Cmd-Delete" : "delWrappedLineRight" , "Cmd-U" : "undoSelection" , "Shift-Cmd-U" : "redoSelection" , "Ctrl-Up" : "goDocStart" , "Ctrl-Down" : "goDocEnd" , fallthrough : [ "basic" , "emacsy" ] } , fa [ "default" ] = Oo ? fa . macDefault : fa . pcDefault , e . normalizeKeyMap = function ( e ) { var t = { } ; for ( var r in e ) if ( e . hasOwnProperty ( r ) ) { var n = e [ r ] ; if ( /^(name|fallthrough|(de|at)tach)$/ . test ( r ) ) continue ; if ( "..." == n ) { delete e [ r ] ; continue } for ( var i = Pi ( r . split ( " " ) , Kr ) , o = 0 ; o < i . length ; o ++ ) { var a , s ; o == i . length - 1 ? ( s = i . join ( " " ) , a = n ) : ( s = i . slice ( 0 , o + 1 ) . join ( " " ) , a = "..." ) ; var l = t [ s ] ; if ( l ) { if ( l != a ) throw new Error ( "Inconsistent bindings for " + s ) } else t [ s ] = a } delete e [ r ] } for ( var c in t ) e [ c ] = t [ c ] ; return e } ; var da = e . lookupKey = function ( e , t , r , n ) { t = Vr ( t ) ; var i = t . call ? t . call ( e , n ) : t [ e ] ; if ( i === ! 1 ) return "nothing" ; if ( "..." === i ) return "multi" ; if ( null != i && r ( i ) ) return "handled" ; if ( t . fallthrough ) { if ( "[object Array]" != Object . prototype . toString . call ( t . fallthrough ) ) return da ( e , t . fallthrough , r , n ) ; for ( var o = 0 ; o < t . fallthrough . length ; o ++ ) { var a = da ( e , t . fallthrough [ o ] , r , n ) ; if ( a ) return a } } } , pa = e . isModifierKey = function ( e ) { var t = "string" == typeof e ? e : os [ e . keyCode ] ; return "Ctrl" == t || "Alt" == t || "Shift" == t || "Mod" == t } , ha = e . keyName = function ( e , t ) { if ( So && 34 == e . keyCode && e [ "char" ] ) return ! 1 ; var r = os [ e . keyCode ] , n = r ; return null == n || e . altGraphKey ? ! 1 : ( e . altKey && "Alt" != r && ( n = "Alt-" + n ) , ( No ? e . metaKey : e . ctrlKey ) && "Ctrl" != r && ( n = "Ctrl-" + n ) , ( No ? e . ctrlKey : e . metaKey ) && "Cmd" != r && ( n = "Cmd-" + n ) , ! t && e . shiftKey && "Shift" != r && ( n = "Shift-" + n ) , n ) } ; e . fromTextArea = function ( t , r ) { function n ( ) { t . value = c . getValue ( ) } if ( r = r ? Di ( r ) : { } , r . value = t . value , ! r . tabindex && t . tabIndex && ( r . tabindex = t . tabIndex ) , ! r . placeholder && t . placeholder && ( r . placeholder = t . placeholder ) , null == r . autofocus ) { var i = Ki ( ) ; r . autofocus = i == t || null != t . getAttribute ( "autofocus" ) && i == document . body } if ( t . form && ( Ea ( t . form , "submit" , n ) , ! r . leaveSubmitMethodAlone ) ) { var o = t . form , a = o . submit ; try { var s = o . submit = function ( ) { n ( ) , o . submit = a , o . submit ( ) , o . submit = s } } catch ( l ) { } } r . finishInit = function ( e ) { e . save = n , e . getTextArea = function ( ) { return t } , e . toTextArea = function ( ) { e . toTextArea = isNaN , n ( ) , t . parentNode . removeChild ( e . getWrapperElement ( ) ) , t . style . display = "" , t . form && ( za ( t . form , "submit" , n ) , "function" == typeof t . form . submit && ( t . form . submit = a ) ) } } , t . style . display = "none" ; var c = e ( function ( e ) { t . parentNode . insertBefore ( e , t . nextSibling ) } , r ) ; return c } ; var ma = e . StringStream = function ( e , t ) { this . pos = this . start = 0 , this . string = e , this . tabSize = t || 8 , this . lastColumn
state : t . state , pending : t . pending , local : t . local , localState : null , indent : t . indent && t . indent . slice ( 0 ) } ; t . localState && ( r . localState = e . copyState ( t . local . mode , t . localState ) ) , t . stack && ( r . stack = t . stack . slice ( 0 ) ) ; for ( var n = t . persistentStates ; n ; n = n . next ) r . persistentStates = { mode : n . mode , spec : n . spec , state : n . state == t . localState ? r . localState : e . copyState ( n . mode , n . state ) , next : r . persistentStates } ; return r } , token : o ( a , r ) , innerMode : function ( e ) { return e . local && { mode : e . local . mode , state : e . localState } } , indent : c ( a , s ) } ; if ( s ) for ( var g in s ) s . hasOwnProperty ( g ) && ( m [ g ] = s [ g ] ) ; return m } } ) , function ( e ) { "object" == typeof exports && "object" == typeof module ? e ( require ( "../../lib/codemirror" ) ) : "function" == typeof define && define . amd ? define ( [ "../../lib/codemirror" ] , e ) : e ( CodeMirror ) } ( function ( e ) { "use strict" ; e . multiplexingMode = function ( t ) { function r ( e , t , r , n ) { if ( "string" == typeof t ) { var i = e . indexOf ( t , r ) ; return n && i > - 1 ? i + t . length : i } var o = t . exec ( r ? e . slice ( r ) : e ) ; return o ? o . index + r + ( n ? o [ 0 ] . length : 0 ) : - 1 } var n = Array . prototype . slice . call ( arguments , 1 ) ; return { startState : function ( ) { return { outer : e . startState ( t ) , innerActive : null , inner : null } } , copyState : function ( r ) { return { outer : e . copyState ( t , r . outer ) , innerActive : r . innerActive , inner : r . innerActive && e . copyState ( r . innerActive . mode , r . inner ) } } , token : function ( i , o ) { if ( o . innerActive ) { var a = o . innerActive , s = i . string ; if ( ! a . close && i . sol ( ) ) return o . innerActive = o . inner = null , this . token ( i , o ) ; var l = a . close ? r ( s , a . close , i . pos , a . parseDelimiters ) : - 1 ; if ( l == i . pos && ! a . parseDelimiters ) return i . match ( a . close ) , o . innerActive = o . inner = null , a . delimStyle && a . delimStyle + " " + a . delimStyle + "-close" ; l > - 1 && ( i . string = s . slice ( 0 , l ) ) ; var c = a . mode . token ( i , o . inner ) ; return l > - 1 && ( i . string = s ) , l == i . pos && a . parseDelimiters && ( o . innerActive = o . inner = null ) , a . innerStyle && ( c = c ? c + " " + a . innerStyle : a . innerStyle ) , c } for ( var u = 1 / 0 , s = i . string , f = 0 ; f < n . length ; ++ f ) { var d = n [ f ] , l = r ( s , d . open , i . pos ) ; if ( l == i . pos ) return d . parseDelimiters || i . match ( d . open ) , o . innerActive = d , o . inner = e . startState ( d . mode , t . indent ? t . indent ( o . outer , "" ) : 0 ) , d . delimStyle && d . delimStyle + " " + d . delimStyle + "-open" ; - 1 != l && u > l && ( u = l ) } u != 1 / 0 && ( i . string = s . slice ( 0 , u ) ) ; var p = t . token ( i , o . outer ) ; return u != 1 / 0 && ( i . string = s ) , p } , indent : function ( r , n ) { var i = r . innerActive ? r . innerActive . mode : t ; return i . indent ? i . indent ( r . innerActive ? r . inner : r . outer , n ) : e . Pass } , blankLine : function ( r ) { var i = r . innerActive ? r . innerActive . mode : t ; if ( i . blankLine && i . blankLine ( r . innerActive ? r . inner : r . outer ) , r . innerActive ) "\n" === r . innerActive . close && ( r . innerActive = r . inner = null ) ; else for ( var o = 0 ; o < n . length ; ++ o ) { var a = n [ o ] ; "\n" === a . open && ( r . innerActive = a , r . inner = e . startState ( a . mode , i . indent ? i . indent ( r . outer , "" ) : 0 ) ) } } , electricChars : t . electricChars , innerMode : function ( e ) { return e . inner ? { state : e . inner , mode : e . innerActive . mode } : { state : e . outer , mode : t } } } } } ) , function ( e ) { "object" == typeof exports && "object" == typeof module ? e ( require ( "../../lib/codemirror" ) ) : "function" == typeof define && define . amd ? define ( [ "../../lib/codemirror" ] , e ) : e ( CodeMirror ) } ( function ( e ) { "use strict" ; function t ( e ) { for ( var t = 0 ; t < e . state . activeLines . length ; t ++ ) e . removeLineClass ( e . state . activeLines [ t ] , "wrap" , o ) , e . removeLineClass ( e . state . activeLines [ t ] , "background" , a ) } function r ( e , t ) { if ( e . length != t . length ) return ! 1 ; for ( var r = 0 ; r < e . length ; r ++ ) if ( e [ r ] != t [ r ] ) return ! 1 ; return ! 0 } function n ( e , n ) { for ( var i = [ ] , s = 0 ; s < n . length ; s ++ ) { var l = n [ s ] ; if ( l . empty ( ) ) { var c = e . getLineHandleVisualStart ( l . head . line ) ; i [ i . length - 1 ] != c && i . push ( c ) } } r ( e . state . activeLines , i ) || e . operation ( function ( ) { t ( e ) ; for ( var r = 0 ; r < i . length ; r ++ ) e . addLineClass ( i [ r ] , "wrap" , o ) , e . addLineClass ( i [ r ] , "background" , a ) ; e . state . activeLines = i } ) } function i ( e , t ) { n ( e , t . ranges ) } var o = "CodeMirror-activeline" , a = "CodeMirror-activeline-background" ; e . defineOption ( "styleActiveLine" , ! 1 , function ( r , o , a ) { var s = a && a != e . Init ; o && ! s ? ( r . state . activeLines = [ ] , n ( r , r . listSelections ( ) ) , r . on ( "beforeSelectionChange" , i ) ) : ! o && s && ( r . off ( "beforeSelectionChange" , i ) , t ( r ) , delete r . state . activeLines ) } ) } ) , function ( e ) { "object" == typeof exports && "object" == typeof module ? e ( require ( "../../lib/codemirror" ) ) : "function" == typeof define && define . amd ? define ( [ "../../lib/codemirror" ] , e ) : e ( CodeMirror ) } ( function ( e ) { "use strict" ; function t ( e , t , i
2015-05-04 07:53:29 +00:00
2016-02-09 04:51:07 +00:00
} } if ( s . length ) { o && e . state . focused && e . focus ( ) ; var d = function ( ) { e . operation ( function ( ) { for ( var e = 0 ; e < s . length ; e ++ ) s [ e ] . clear ( ) } ) } ; if ( ! r ) return d ; setTimeout ( d , 800 ) } } function i ( e ) { e . operation ( function ( ) { l && ( l ( ) , l = null ) , l = n ( e , ! 1 , e . state . matchBrackets ) } ) } var o = /MSIE \d/ . test ( navigator . userAgent ) && ( null == document . documentMode || document . documentMode < 8 ) , a = e . Pos , s = { "(" : ")>" , ")" : "(<" , "[" : "]>" , "]" : "[<" , "{" : "}>" , "}" : "{<" } , l = null ; e . defineOption ( "matchBrackets" , ! 1 , function ( t , r , n ) { n && n != e . Init && t . off ( "cursorActivity" , i ) , r && ( t . state . matchBrackets = "object" == typeof r ? r : { } , t . on ( "cursorActivity" , i ) ) } ) , e . defineExtension ( "matchBrackets" , function ( ) { n ( this , ! 0 ) } ) , e . defineExtension ( "findMatchingBracket" , function ( e , r , n ) { return t ( this , e , r , n ) } ) , e . defineExtension ( "scanForBracket" , function ( e , t , n , i ) { return r ( this , e , t , n , i ) } ) } ) , function ( e ) { "object" == typeof exports && "object" == typeof module ? e ( require ( "../../lib/codemirror" ) ) : "function" == typeof define && define . amd ? define ( [ "../../lib/codemirror" ] , e ) : e ( CodeMirror ) } ( function ( e ) { function t ( e , t ) { return "pairs" == t && "string" == typeof e ? e : "object" == typeof e && null != e [ t ] ? e [ t ] : f [ t ] } function r ( e ) { return function ( t ) { return s ( t , e ) } } function n ( e ) { var t = e . state . closeBrackets ; if ( ! t ) return null ; var r = e . getModeAt ( e . getCursor ( ) ) ; return r . closeBrackets || t } function i ( r ) { var i = n ( r ) ; if ( ! i || r . getOption ( "disableInput" ) ) return e . Pass ; for ( var o = t ( i , "pairs" ) , a = r . listSelections ( ) , s = 0 ; s < a . length ; s ++ ) { if ( ! a [ s ] . empty ( ) ) return e . Pass ; var l = c ( r , a [ s ] . head ) ; if ( ! l || o . indexOf ( l ) % 2 != 0 ) return e . Pass } for ( var s = a . length - 1 ; s >= 0 ; s -- ) { var u = a [ s ] . head ; r . replaceRange ( "" , d ( u . line , u . ch - 1 ) , d ( u . line , u . ch + 1 ) , "+delete" ) } } function o ( r ) { var i = n ( r ) , o = i && t ( i , "explode" ) ; if ( ! o || r . getOption ( "disableInput" ) ) return e . Pass ; for ( var a = r . listSelections ( ) , s = 0 ; s < a . length ; s ++ ) { if ( ! a [ s ] . empty ( ) ) return e . Pass ; var l = c ( r , a [ s ] . head ) ; if ( ! l || o . indexOf ( l ) % 2 != 0 ) return e . Pass } r . operation ( function ( ) { r . replaceSelection ( "\n\n" , null ) , r . execCommand ( "goCharLeft" ) , a = r . listSelections ( ) ; for ( var e = 0 ; e < a . length ; e ++ ) { var t = a [ e ] . head . line ; r . indentLine ( t , null , ! 0 ) , r . indentLine ( t + 1 , null , ! 0 ) } } ) } function a ( t ) { var r = e . cmpPos ( t . anchor , t . head ) > 0 ; return { anchor : new d ( t . anchor . line , t . anchor . ch + ( r ? - 1 : 1 ) ) , head : new d ( t . head . line , t . head . ch + ( r ? 1 : - 1 ) ) } } function s ( r , i ) { var o = n ( r ) ; if ( ! o || r . getOption ( "disableInput" ) ) return e . Pass ; var s = t ( o , "pairs" ) , c = s . indexOf ( i ) ; if ( - 1 == c ) return e . Pass ; for ( var f , p , h = t ( o , "triples" ) , m = s . charAt ( c + 1 ) == i , g = r . listSelections ( ) , v = c % 2 == 0 , y = 0 ; y < g . length ; y ++ ) { var b , k = g [ y ] , x = k . head , p = r . getRange ( x , d ( x . line , x . ch + 1 ) ) ; if ( v && ! k . empty ( ) ) b = "surround" ; else if ( ! m && v || p != i ) if ( m && x . ch > 1 && h . indexOf ( i ) >= 0 && r . getRange ( d ( x . line , x . ch - 2 ) , x ) == i + i && ( x . ch <= 2 || r . getRange ( d ( x . line , x . ch - 3 ) , d ( x . line , x . ch - 2 ) ) != i ) ) b = "addFour" ; else if ( m ) { if ( e . isWordChar ( p ) || ! u ( r , x , i ) ) return e . Pass ; b = "both" } else { if ( ! v || r . getLine ( x . line ) . length != x . ch && ! l ( p , s ) && ! /\s/ . test ( p ) ) return e . Pass ; b = "both" } else b = h . indexOf ( i ) >= 0 && r . getRange ( x , d ( x . line , x . ch + 3 ) ) == i + i + i ? "skipThree" : "skip" ; if ( f ) { if ( f != b ) return e . Pass } else f = b } var w = c % 2 ? s . charAt ( c - 1 ) : i , _ = c % 2 ? i : s . charAt ( c + 1 ) ; r . operation ( function ( ) { if ( "skip" == f ) r . execCommand ( "goCharRight" ) ; else if ( "skipThree" == f ) for ( var e = 0 ; 3 > e ; e ++ ) r . execCommand ( "goCharRight" ) ; else if ( "surround" == f ) { for ( var t = r . getSelections ( ) , e = 0 ; e < t . length ; e ++ ) t [ e ] = w + t [ e ] + _ ; r . replaceSelections ( t , "around" ) , t = r . listSelections ( ) . slice ( ) ; for ( var e = 0 ; e < t . length ; e ++ ) t [ e ] = a ( t [ e ] ) ; r . setSelections ( t ) } else "both" == f ? ( r . replaceSelection ( w + _ , null ) , r . triggerElectric ( w + _ ) , r . execCommand ( "goCharLeft" ) ) : "addFour" == f && ( r . replaceSelection ( w + w + w + w , "before" ) , r . execCommand ( "goCharRight" ) ) } ) } function l ( e , t ) { var r = t . lastIndexOf ( e ) ; return r > - 1 && r % 2 == 1 } function c ( e , t ) { var r = e . getRange ( d ( t . line , t . ch - 1 ) , d ( t . line , t . ch + 1 ) ) ; return 2 == r . length ? r : null } function u ( t , r , n ) { var i = t . getLine ( r . line ) , o = t . getTokenAt ( r ) ; if ( /\bstring2?\b/ . test ( o . type ) ) return ! 1 ; var a = new e . StringStream ( i . slice ( 0 , r . ch ) + n + i . slice ( r . ch ) , 4 ) ; for ( a . pos = a . start = o . start ; ; ) { var s = t . getMode ( ) . token ( a , o . state ) ; if ( a . pos >= r . ch + 1 ) return /\bstring2?\b/ . test ( s ) ; a . start = a . pos } } var f = { pairs : "()[]{}''\"\"" , triples : "" , explode : "[]{}" } , d = e . Pos ; e . defineOption ( "autoCloseBrackets" , ! 1 , function ( t , r , n ) { n && n != e . Init && ( t . removeKeyMap (
g ( e , t , r ) } function y ( e , t , r ) { if ( "word" == e ) return L = "attribute" , b ; if ( "endTag" == e || "selfcloseTag" == e ) { var n = r . tagName , i = r . tagStart ; return r . tagName = r . tagStart = null , "selfcloseTag" == e || _ . autoSelfClosers . hasOwnProperty ( n ) ? d ( r , n ) : ( d ( r , n ) , r . context = new u ( r , n , i == r . indented ) ) , p } return L = "error" , y } function b ( e , t , r ) { return "equals" == e ? k : ( _ . allowMissing || ( L = "error" ) , y ( e , t , r ) ) } function k ( e , t , r ) { return "string" == e ? x : "word" == e && _ . allowUnquoted ? ( L = "string" , y ) : ( L = "error" , y ( e , t , r ) ) } function x ( e , t , r ) { return "string" == e ? x : y ( e , t , r ) } var w = n . indentUnit , _ = { } , C = i . htmlMode ? t : r ; for ( var S in C ) _ [ S ] = C [ S ] ; for ( var S in i ) _ [ S ] = i [ S ] ; var M , L ; return o . isInText = ! 0 , { startState : function ( e ) { var t = { tokenize : o , state : p , indented : e || 0 , tagName : null , tagStart : null , context : null } ; return null != e && ( t . baseIndent = e ) , t } , token : function ( e , t ) { if ( ! t . tagName && e . sol ( ) && ( t . indented = e . indentation ( ) ) , e . eatSpace ( ) ) return null ; M = null ; var r = t . tokenize ( e , t ) ; return ( r || M ) && "comment" != r && ( L = null , t . state = t . state ( M || r , e , t ) , L && ( r = "error" == L ? r + " error" : L ) ) , r } , indent : function ( t , r , n ) { var i = t . context ; if ( t . tokenize . isInAttribute ) return t . tagStart == t . indented ? t . stringStartCol + 1 : t . indented + w ; if ( i && i . noIndent ) return e . Pass ; if ( t . tokenize != a && t . tokenize != o ) return n ? n . match ( /^(\s*)/ ) [ 0 ] . length : 0 ; if ( t . tagName ) return _ . multilineTagIndentPastTag !== ! 1 ? t . tagStart + t . tagName . length + 2 : t . tagStart + w * ( _ . multilineTagIndentFactor || 1 ) ; if ( _ . alignCDATA && /<!\[CDATA\[/ . test ( r ) ) return 0 ; var s = r && /^<(\/)?([\w_:\.-]*)/ . exec ( r ) ; if ( s && s [ 1 ] ) for ( ; i ; ) { if ( i . tagName == s [ 2 ] ) { i = i . prev ; break } if ( ! _ . implicitlyClosed . hasOwnProperty ( i . tagName ) ) break ; i = i . prev } else if ( s ) for ( ; i ; ) { var l = _ . contextGrabbers [ i . tagName ] ; if ( ! l || ! l . hasOwnProperty ( s [ 2 ] ) ) break ; i = i . prev } for ( ; i && i . prev && ! i . startOfLine ; ) i = i . prev ; return i ? i . indent + w : t . baseIndent || 0 } , electricInput : /<\/[\s\w:]+>$/ , blockCommentStart : "<!--" , blockCommentEnd : "-->" , configuration : _ . htmlMode ? "html" : "xml" , helperType : _ . htmlMode ? "html" : "xml" , skipAttribute : function ( e ) { e . state == k && ( e . state = y ) } } } ) , e . defineMIME ( "text/xml" , "xml" ) , e . defineMIME ( "application/xml" , "xml" ) , e . mimeModes . hasOwnProperty ( "text/html" ) || e . defineMIME ( "text/html" , { name : "xml" , htmlMode : ! 0 } ) } ) , function ( e ) { "object" == typeof exports && "object" == typeof module ? e ( require ( "../../lib/codemirror" ) , require ( "../xml/xml" ) , require ( "../meta" ) ) : "function" == typeof define && define . amd ? define ( [ "../../lib/codemirror" , "../xml/xml" , "../meta" ] , e ) : e ( CodeMirror ) } ( function ( e ) { "use strict" ; e . defineMode ( "markdown" , function ( t , r ) { function n ( r ) { if ( e . findModeByName ) { var n = e . findModeByName ( r ) ; n && ( r = n . mime || n . mimes [ 0 ] ) } var i = e . getMode ( t , r ) ; return "null" == i . name ? null : i } function i ( e , t , r ) { return t . f = t . inline = r , r ( e , t ) } function o ( e , t , r ) { return t . f = t . block = r , r ( e , t ) } function a ( e ) { return ! e || ! /\S/ . test ( e . string ) } function s ( e ) { return e . linkTitle = ! 1 , e . em = ! 1 , e . strong = ! 1 , e . strikethrough = ! 1 , e . quote = 0 , e . indentedCode = ! 1 , w || e . f != c || ( e . f = h , e . block = l ) , e . trailingSpace = 0 , e . trailingSpaceNewLine = ! 1 , e . prevLine = e . thisLine , e . thisLine = null , null } function l ( e , t ) { var o = e . sol ( ) , s = t . list !== ! 1 , l = t . indentedCode ; t . indentedCode = ! 1 , s && ( t . indentationDiff >= 0 ? ( t . indentationDiff < 4 && ( t . indentation -= t . indentationDiff ) , t . list = null ) : t . indentation > 0 ? ( t . list = null , t . listDepth = Math . floor ( t . indentation / 4 ) ) : ( t . list = ! 1 , t . listDepth = 0 ) ) ; var c = null ; if ( t . indentationDiff >= 4 ) return e . skipToEnd ( ) , l || a ( t . prevLine ) ? ( t . indentation -= 4 , t . indentedCode = ! 0 , C . code ) : null ; if ( e . eatSpace ( ) ) return null ; if ( ( c = e . match ( E ) ) && c [ 1 ] . length <= 6 ) return t . header = c [ 1 ] . length , r . highlightFormatting && ( t . formatting = "header" ) , t . f = t . inline , d ( t ) ; if ( ! ( a ( t . prevLine ) || t . quote || s || l ) && ( c = e . match ( O ) ) ) return t . header = "=" == c [ 0 ] . charAt ( 0 ) ? 1 : 2 , r . highlightFormatting && ( t . formatting = "header" ) , t . f = t . inline , d ( t ) ; if ( e . eat ( ">" ) ) return t . quote = o ? 1 : t . quote + 1 , r . highlightFormatting && ( t . formatting = "quote" ) , e . eatSpace ( ) , d ( t ) ; if ( "[" === e . peek ( ) ) return i ( e , t , y ) ; if ( e . match ( M , ! 0 ) ) return t . hr = ! 0 , C . hr ; if ( ( a ( t . prevLine ) || s ) && ( e . match ( L , ! 1 ) || e . match ( T , ! 1 ) ) ) { var f = null ; return e . match ( L , ! 0 ) ? f = "ul" : ( e . match ( T , ! 0 ) , f = "ol" ) , t . indentation = e . column ( ) + e . current ( ) . length , t . list = ! 0 , t . listDepth ++ , r . taskLists && e . match ( A , ! 1 ) && ( t . taskList = ! 0 ) , t . f = t . inline , r . highlightFormatting && ( t . formatting = [ "list" , "list-" + f ] ) , d (
else if ( "word" == e ) m = "tag" ; else { if ( "variable-definition" == e ) return "maybeprop" ; if ( "interpolation" == e ) return l ( r , t , "interpolation" ) ; if ( ":" == e ) return "pseudo" ; if ( T && "(" == e ) return l ( r , t , "parens" ) } return r . context . type } , E . block = function ( e , t , r ) { if ( "word" == e ) { var n = t . current ( ) . toLowerCase ( ) ; return w . hasOwnProperty ( n ) ? ( m = "property" , "maybeprop" ) : _ . hasOwnProperty ( n ) ? ( m = "string-2" , "maybeprop" ) : T ? ( m = t . match ( /^\s*:(?:\s|$)/ , ! 1 ) ? "property" : "tag" , "block" ) : ( m += " error" , "maybeprop" ) } return "meta" == e ? "block" : T || "hash" != e && "qualifier" != e ? E . top ( e , t , r ) : ( m = "error" , "block" ) } , E . maybeprop = function ( e , t , r ) { return ":" == e ? l ( r , t , "prop" ) : u ( e , t , r ) } , E . prop = function ( e , t , r ) { if ( ";" == e ) return c ( r ) ; if ( "{" == e && T ) return l ( r , t , "propBlock" ) ; if ( "}" == e || "{" == e ) return f ( e , t , r ) ; if ( "(" == e ) return l ( r , t , "parens" ) ; if ( "hash" != e || /^#([0-9a-fA-f]{3,4}|[0-9a-fA-f]{6}|[0-9a-fA-f]{8})$/ . test ( t . current ( ) ) ) { if ( "word" == e ) d ( t ) ; else if ( "interpolation" == e ) return l ( r , t , "interpolation" ) } else m += " error" ; return "prop" } , E . propBlock = function ( e , t , r ) { return "}" == e ? c ( r ) : "word" == e ? ( m = "property" , "maybeprop" ) : r . context . type } , E . parens = function ( e , t , r ) { return "{" == e || "}" == e ? f ( e , t , r ) : ")" == e ? c ( r ) : "(" == e ? l ( r , t , "parens" ) : "interpolation" == e ? l ( r , t , "interpolation" ) : ( "word" == e && d ( t ) , "parens" ) } , E . pseudo = function ( e , t , r ) { return "word" == e ? ( m = "variable-3" , r . context . type ) : u ( e , t , r ) } , E . documentTypes = function ( e , t , r ) { return "word" == e && y . hasOwnProperty ( t . current ( ) ) ? ( m = "tag" , r . context . type ) : E . atBlock ( e , t , r ) } , E . atBlock = function ( e , t , r ) { if ( "(" == e ) return l ( r , t , "atBlock_parens" ) ; if ( "}" == e || ";" == e ) return f ( e , t , r ) ; if ( "{" == e ) return c ( r ) && l ( r , t , T ? "block" : "top" ) ; if ( "interpolation" == e ) return l ( r , t , "interpolation" ) ; if ( "word" == e ) { var n = t . current ( ) . toLowerCase ( ) ; m = "only" == n || "not" == n || "and" == n || "or" == n ? "keyword" : b . hasOwnProperty ( n ) ? "attribute" : k . hasOwnProperty ( n ) ? "property" : x . hasOwnProperty ( n ) ? "keyword" : w . hasOwnProperty ( n ) ? "property" : _ . hasOwnProperty ( n ) ? "string-2" : L . hasOwnProperty ( n ) ? "atom" : M . hasOwnProperty ( n ) ? "keyword" : "error" } return r . context . type } , E . atComponentBlock = function ( e , t , r ) { return "}" == e ? f ( e , t , r ) : "{" == e ? c ( r ) && l ( r , t , T ? "block" : "top" , ! 1 ) : ( "word" == e && ( m = "error" ) , r . context . type ) } , E . atBlock _parens = function ( e , t , r ) { return ")" == e ? c ( r ) : "{" == e || "}" == e ? f ( e , t , r , 2 ) : E . atBlock ( e , t , r ) } , E . restricted _atBlock _before = function ( e , t , r ) { return "{" == e ? l ( r , t , "restricted_atBlock" ) : "word" == e && "@counter-style" == r . stateArg ? ( m = "variable" , "restricted_atBlock_before" ) : u ( e , t , r ) } , E . restricted _atBlock = function ( e , t , r ) { return "}" == e ? ( r . stateArg = null , c ( r ) ) : "word" == e ? ( m = "@font-face" == r . stateArg && ! C . hasOwnProperty ( t . current ( ) . toLowerCase ( ) ) || "@counter-style" == r . stateArg && ! S . hasOwnProperty ( t . current ( ) . toLowerCase ( ) ) ? "error" : "property" , "maybeprop" ) : "restricted_atBlock" } , E . keyframes = function ( e , t , r ) { return "word" == e ? ( m = "variable" , "keyframes" ) : "{" == e ? l ( r , t , "top" ) : u ( e , t , r ) } , E . at = function ( e , t , r ) { return ";" == e ? c ( r ) : "{" == e || "}" == e ? f ( e , t , r ) : ( "word" == e ? m = "tag" : "hash" == e && ( m = "builtin" ) , "at" ) } , E . interpolation = function ( e , t , r ) { return "}" == e ? c ( r ) : "{" == e || ";" == e ? f ( e , t , r ) : ( "word" == e ? m = "variable" : "variable" != e && "(" != e && ")" != e && ( m = "error" ) , "interpolation" ) } , { startState : function ( e ) { return { tokenize : null , state : p ? "block" : "top" , stateArg : null , context : new s ( p ? "block" : "top" , e || 0 , null ) } } , token : function ( e , t ) { if ( ! t . tokenize && e . eatSpace ( ) ) return null ; var r = ( t . tokenize || i ) ( e , t ) ; return r && "object" == typeof r && ( h = r [ 1 ] , r = r [ 0 ] ) , m = r , t . state = E [ t . state ] ( h , e , t ) , m } , indent : function ( e , t ) { var r = e . context , n = t && t . charAt ( 0 ) , i = r . indent ; return "prop" != r . type || "}" != n && ")" != n || ( r = r . prev ) , r . prev && ( "}" != n || "block" != r . type && "top" != r . type && "interpolation" != r . type && "restricted_atBlock" != r . type ? ( ")" == n && ( "parens" == r . type || "atBlock_parens" == r . type ) || "{" == n && ( "at" == r . type || "atBlock" == r . type ) ) && ( i = Math . max ( 0 , r . indent - g ) , r = r . prev ) : ( r = r . prev , i = r . indent ) ) , i } , electricChars : "}" , blockCommentStart : "/*" , blockCommentEnd : "*/" , fold : "brace" } } ) ; var n = [ "domain" , "regexp" , "url" , "url-prefix" ] , i = t ( n ) , o = [ "all" , "aural" , "braille" , "handheld" , "print" , "projection" , "screen" , "tty" , "tv" , "embossed" ] , a = t ( o ) , s = [ "width" , "min-width" , "max-width" , "height" , "min-height" , "max-height" , "device-width" , "min-device-width" , "max-device-width" , "device-height" , "min-device-height" ,
defKeywords : t ( "class namespace struct enum union" ) , typeFirstDefinitions : ! 0 , atoms : t ( "true false null" ) , hooks : { "#" : n , "*" : i , u : a , U : a , L : a , R : a , 0 : o , 1 : o , 2 : o , 3 : o , 4 : o , 5 : o , 6 : o , 7 : o , 8 : o , 9 : o , token : function ( e , t , r ) { return "variable" != r || "(" != e . peek ( ) || ";" != t . prevToken && null != t . prevToken && "}" != t . prevToken || ! s ( e . current ( ) ) ? void 0 : "def" } } , namespaceSeparator : "::" , modeProps : { fold : [ "brace" , "include" ] } } ) , u ( "text/x-java" , { name : "clike" , keywords : t ( "abstract assert break case catch class const continue default do else enum extends final finally float for goto if implements import instanceof interface native new package private protected public return static strictfp super switch synchronized this throw throws transient try volatile while" ) , types : t ( "byte short int long float double boolean char void Boolean Byte Character Double Float Integer Long Number Object Short String StringBuffer StringBuilder Void" ) , blockKeywords : t ( "catch class do else finally for if switch try while" ) , defKeywords : t ( "class interface package enum" ) , typeFirstDefinitions : ! 0 , atoms : t ( "true false null" ) , endStatement : /^[;:]$/ , hooks : { "@" : function ( e ) { return e . eatWhile ( /[\w\$_]/ ) , "meta" } } , modeProps : { fold : [ "brace" , "import" ] } } ) , u ( "text/x-csharp" , { name : "clike" , keywords : t ( "abstract as async await base break case catch checked class const continue default delegate do else enum event explicit extern finally fixed for foreach goto if implicit in interface internal is lock namespace new operator out override params private protected public readonly ref return sealed sizeof stackalloc static struct switch this throw try typeof unchecked unsafe using virtual void volatile while add alias ascending descending dynamic from get global group into join let orderby partial remove select set value var yield" ) , types : t ( "Action Boolean Byte Char DateTime DateTimeOffset Decimal Double Func Guid Int16 Int32 Int64 Object SByte Single String Task TimeSpan UInt16 UInt32 UInt64 bool byte char decimal double short int long object sbyte float string ushort uint ulong" ) , blockKeywords : t ( "catch class do else finally for foreach if struct switch try while" ) , defKeywords : t ( "class interface namespace struct var" ) , typeFirstDefinitions : ! 0 , atoms : t ( "true false null" ) , hooks : { "@" : function ( e , t ) { return e . eat ( '"' ) ? ( t . tokenize = l , l ( e , t ) ) : ( e . eatWhile ( /[\w\$_]/ ) , "meta" ) } } } ) , u ( "text/x-scala" , { name : "clike" , keywords : t ( "abstract case catch class def do else extends final finally for forSome if implicit import lazy match new null object override package private protected return sealed super this throw trait try type val var while with yield _ : = => <- <: <% >: # @ assert assume require print println printf readLine readBoolean readByte readShort readChar readInt readLong readFloat readDouble :: #:: " ) , types : t ( "AnyVal App Application Array BufferedIterator BigDecimal BigInt Char Console Either Enumeration Equiv Error Exception Fractional Function IndexedSeq Integral Iterable Iterator List Map Numeric Nil NotNull Option Ordered Ordering PartialFunction PartialOrdering Product Proxy Range Responder Seq Serializable Set Specializable Stream StringBuilder StringContext Symbol Throwable Traversable TraversableOnce Tuple Unit Vector Boolean Byte Character CharSequence Class ClassLoader Cloneable Comparable Compiler Double Exception Float Integer Long Math Number Object Package Pair Process Runtime Runnable SecurityManager Short StackTraceElement StrictMath String StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple Void" ) , multiLineStrings : ! 0 , blockKeywords : t ( "catch class do else finally for forSome if match switch try while" ) , defKeywords : t ( "class def object package trait type val var" ) , atoms : t ( "true false null" ) , indentStatements : ! 1 , indentSwitch : ! 1 , hooks : { "@" : function ( e ) { return e . eatWhile ( /[\w\$_]/ ) , "meta" } , '"' : function ( e , t ) { return e . match ( '""' ) ? ( t . tokenize = f , t . tokenize ( e , t ) ) : ! 1 } , "'" : function ( e ) { return e . eatWhile ( /[\w\$_\xa1-\uffff]/ ) , "atom" } } , modeProps : { closeBrackets : { triples : '"' } } } ) , u ( "text/x-kotlin" , { name : "clike" , keywords : t ( " package as typealias class interface this super val var fun for is in This throw return break continue
2015-05-04 07:53:29 +00:00
2016-02-09 04:51:07 +00:00
var o = function ( e , t ) { t . tokens . length > 1 && e . eat ( "$" ) ; var i = e . next ( ) , o = /\w/ ; return "{" === i && ( o = /[^}]/ ) , "(" === i ? ( t . tokens [ 0 ] = r ( ")" ) , n ( e , t ) ) : ( /\d/ . test ( i ) || ( e . eatWhile ( o ) , e . eat ( "}" ) ) , t . tokens . shift ( ) , "def" ) } ; return { startState : function ( ) { return { tokens : [ ] } } , token : function ( e , t ) { return n ( e , t ) } , lineComment : "#" , fold : "brace" } } ) , e . defineMIME ( "text/x-sh" , "shell" ) } ) , function ( e ) { "object" == typeof exports && "object" == typeof module ? e ( require ( "../../lib/codemirror" ) , require ( "../htmlmixed/htmlmixed" ) , require ( "../clike/clike" ) ) : "function" == typeof define && define . amd ? define ( [ "../../lib/codemirror" , "../htmlmixed/htmlmixed" , "../clike/clike" ] , e ) : e ( CodeMirror ) } ( function ( e ) { "use strict" ; function t ( e ) { for ( var t = { } , r = e . split ( " " ) , n = 0 ; n < r . length ; ++ n ) t [ r [ n ] ] = ! 0 ; return t } function r ( e , t , i ) { return 0 == e . length ? n ( t ) : function ( o , a ) { for ( var s = e [ 0 ] , l = 0 ; l < s . length ; l ++ ) if ( o . match ( s [ l ] [ 0 ] ) ) return a . tokenize = r ( e . slice ( 1 ) , t ) , s [ l ] [ 1 ] ; return a . tokenize = n ( t , i ) , "string" } } function n ( e , t ) { return function ( r , n ) { return i ( r , n , e , t ) } } function i ( e , t , n , i ) { if ( i !== ! 1 && e . match ( "${" , ! 1 ) || e . match ( "{$" , ! 1 ) ) return t . tokenize = null , "string" ; if ( i !== ! 1 && e . match ( /^\$[a-zA-Z_][a-zA-Z0-9_]*/ ) ) return e . match ( "[" , ! 1 ) && ( t . tokenize = r ( [ [ [ "[" , null ] ] , [ [ /\d[\w\.]*/ , "number" ] , [ /\$[a-zA-Z_][a-zA-Z0-9_]*/ , "variable-2" ] , [ /[\w\$]+/ , "variable" ] ] , [ [ "]" , null ] ] ] , n , i ) ) , e . match ( /\-\>\w/ , ! 1 ) && ( t . tokenize = r ( [ [ [ "->" , null ] ] , [ [ /[\w]+/ , "variable" ] ] ] , n , i ) ) , "variable-2" ; for ( var o = ! 1 ; ! e . eol ( ) && ( o || i === ! 1 || ! e . match ( "{$" , ! 1 ) && ! e . match ( /^(\$[a-zA-Z_][a-zA-Z0-9_]*|\$\{)/ , ! 1 ) ) ; ) { if ( ! o && e . match ( n ) ) { t . tokenize = null , t . tokStack . pop ( ) , t . tokStack . pop ( ) ; break } o = "\\" == e . next ( ) && ! o } return "string" } var o = "abstract and array as break case catch class clone const continue declare default do else elseif enddeclare endfor endforeach endif endswitch endwhile extends final for foreach function global goto if implements interface instanceof namespace new or private protected public static switch throw trait try use var while xor die echo empty exit eval include include_once isset list require require_once return print unset __halt_compiler self static parent yield insteadof finally" , a = "true false null TRUE FALSE NULL __CLASS__ __DIR__ __FILE__ __LINE__ __METHOD__ __FUNCTION__ __NAMESPACE__ __TRAIT__" , s = " func _num _args func _get _arg func _get _args strlen strcmp strncmp strcasecmp strncasecmp each error _reporting define defined trigger _error user _error set _error _handler restore _error _handler get _declared _classes get _loaded _extensions extension _loaded get _extension _funcs debug _backtrace constant bin2hex hex2bin sleep usleep time mktime gmmktime strftime gmstrftime strtotime date gmdate getdate localtime checkdate flush wordwrap htmlspecialchars htmlentities html _entity _decode md5 md5 _file crc32 getimagesize image _type _to _mime _type phpinfo phpversion phpcredits strnatcmp strnatcasecmp substr _count strspn strcspn strtok strtoupper strtolower strpos strrpos strrev hebrev hebrevc nl2br basename dirname pathinfo stripslashes stripcslashes strstr stristr strrchr str _shuffle str _word _count strcoll substr substr _replace quotemeta ucfirst ucwords strtr addslashes addcslashes rtrim str _replace str _repeat count _chars chunk _split trim ltrim strip _tags similar _text explode implode setlocale localeconv parse _str str _pad chop strchr sprintf printf vprintf vsprintf sscanf fscanf parse _url urlencode urldecode rawurlencode rawurldecode readlink linkinfo link unlink exec system escapeshellcmd escapeshellarg passthru shell _exec proc _open proc _close rand srand getrandmax mt _rand mt _srand mt _getrandmax base64 _decode base64 _encode abs ceil floor round is _finite is _nan is _infinite bindec hexdec octdec decbin decoct dechex base _convert number _format fmod ip2long long2ip getenv putenv getopt microtime gettimeofday getrusage uniqid quoted _printable _decode set _time _limit get _cfg _var magic _quotes _runtime set _magic _quotes _runtime get _magic _quotes _gpc get _magic _quotes _runtime import _request _variables error _log serialize unserialize memory _get _usage var _dump var _export debug _zval _dump print _r highlight _file show _source highlight _string ini _get ini _get _all ini _set ini _alter ini _restor
builtin : i ( "bool boolean long timestamp tinyint smallint bigint int float double date datetime unsigned string array struct map uniontype" ) , atoms : i ( "false true null unknown" ) , operatorChars : /^[*+\-%<>!=]/ , dateSQL : i ( "date timestamp" ) , support : i ( "ODBCdotTable doubleQuote binaryNumber hexNumber" ) } ) } ( ) } ) , function ( e ) { "object" == typeof exports && "object" == typeof module ? e ( require ( "../../lib/codemirror" ) ) : "function" == typeof define && define . amd ? define ( [ "../../lib/codemirror" ] , e ) : e ( CodeMirror ) } ( function ( e ) { "use strict" ; e . defineMode ( "coffeescript" , function ( e , t ) { function r ( e ) { return new RegExp ( "^((" + e . join ( ")|(" ) + "))\\b" ) } function n ( e , t ) { if ( e . sol ( ) ) { null === t . scope . align && ( t . scope . align = ! 1 ) ; var r = t . scope . offset ; if ( e . eatSpace ( ) ) { var n = e . indentation ( ) ; return n > r && "coffee" == t . scope . type ? "indent" : r > n ? "dedent" : null } r > 0 && s ( e , t ) } if ( e . eatSpace ( ) ) return null ; var a = e . peek ( ) ; if ( e . match ( "####" ) ) return e . skipToEnd ( ) , "comment" ; if ( e . match ( "###" ) ) return t . tokenize = o , t . tokenize ( e , t ) ; if ( "#" === a ) return e . skipToEnd ( ) , "comment" ; if ( e . match ( /^-?[0-9\.]/ , ! 1 ) ) { var l = ! 1 ; if ( e . match ( /^-?\d*\.\d+(e[\+\-]?\d+)?/i ) && ( l = ! 0 ) , e . match ( /^-?\d+\.\d*/ ) && ( l = ! 0 ) , e . match ( /^-?\.\d+/ ) && ( l = ! 0 ) , l ) return "." == e . peek ( ) && e . backUp ( 1 ) , "number" ; var m = ! 1 ; if ( e . match ( /^-?0x[0-9a-f]+/i ) && ( m = ! 0 ) , e . match ( /^-?[1-9]\d*(e[\+\-]?\d+)?/ ) && ( m = ! 0 ) , e . match ( /^-?0(?![\dx])/i ) && ( m = ! 0 ) , m ) return "number" } if ( e . match ( y ) ) return t . tokenize = i ( e . current ( ) , ! 1 , "string" ) , t . tokenize ( e , t ) ; if ( e . match ( b ) ) { if ( "/" != e . current ( ) || e . match ( /^.*\// , ! 1 ) ) return t . tokenize = i ( e . current ( ) , ! 0 , "string-2" ) , t . tokenize ( e , t ) ; e . backUp ( 1 ) } return e . match ( u ) || e . match ( h ) ? "operator" : e . match ( f ) ? "punctuation" : e . match ( x ) ? "atom" : e . match ( p ) || t . prop && e . match ( d ) ? "property" : e . match ( v ) ? "keyword" : e . match ( d ) ? "variable" : ( e . next ( ) , c ) } function i ( e , r , i ) { return function ( o , a ) { for ( ; ! o . eol ( ) ; ) if ( o . eatWhile ( /[^'"\/\\]/ ) , o . eat ( "\\" ) ) { if ( o . next ( ) , r && o . eol ( ) ) return i } else { if ( o . match ( e ) ) return a . tokenize = n , i ; o . eat ( /['"\/]/ ) } return r && ( t . singleLineStringErrors ? i = c : a . tokenize = n ) , i } } function o ( e , t ) { for ( ; ! e . eol ( ) ; ) { if ( e . eatWhile ( /[^#]/ ) , e . match ( "###" ) ) { t . tokenize = n ; break } e . eatWhile ( "#" ) } return "comment" } function a ( t , r , n ) { n = n || "coffee" ; for ( var i = 0 , o = ! 1 , a = null , s = r . scope ; s ; s = s . prev ) if ( "coffee" === s . type || "}" == s . type ) { i = s . offset + e . indentUnit ; break } "coffee" !== n ? ( o = null , a = t . column ( ) + t . current ( ) . length ) : r . scope . align && ( r . scope . align = ! 1 ) , r . scope = { offset : i , type : n , prev : r . scope , align : o , alignOffset : a } } function s ( e , t ) { if ( t . scope . prev ) { if ( "coffee" === t . scope . type ) { for ( var r = e . indentation ( ) , n = ! 1 , i = t . scope ; i ; i = i . prev ) if ( r === i . offset ) { n = ! 0 ; break } if ( ! n ) return ! 0 ; for ( ; t . scope . prev && t . scope . offset !== r ; ) t . scope = t . scope . prev ; return ! 1 } return t . scope = t . scope . prev , ! 1 } } function l ( e , t ) { var r = t . tokenize ( e , t ) , n = e . current ( ) ; "return" === n && ( t . dedent = ! 0 ) , ( ( "->" === n || "=>" === n ) && e . eol ( ) || "indent" === r ) && a ( e , t ) ; var i = "[({" . indexOf ( n ) ; if ( - 1 !== i && a ( e , t , "])}" . slice ( i , i + 1 ) ) , m . exec ( n ) && a ( e , t ) , "then" == n && s ( e , t ) , "dedent" === r && s ( e , t ) ) return c ; if ( i = "])}" . indexOf ( n ) , - 1 !== i ) { for ( ; "coffee" == t . scope . type && t . scope . prev ; ) t . scope = t . scope . prev ; t . scope . type == n && ( t . scope = t . scope . prev ) } return t . dedent && e . eol ( ) && ( "coffee" == t . scope . type && t . scope . prev && ( t . scope = t . scope . prev ) , t . dedent = ! 1 ) , r } var c = "error" , u = /^(?:->|=>|\+[+=]?|-[\-=]?|\*[\*=]?|\/[\/=]?|[=!]=|<[><]?=?|>>?=?|%=?|&=?|\|=?|\^=?|\~|!|\?|(or|and|\|\||&&|\?)=)/ , f = /^(?:[()\[\]{},:`=;]|\.\.?\.?)/ , d = /^[_A-Za-z$][_A-Za-z$0-9]*/ , p = /^@[_A-Za-z$][_A-Za-z$0-9]*/ , h = r ( [ "and" , "or" , "not" , "is" , "isnt" , "in" , "instanceof" , "typeof" ] ) , m = [ "for" , "while" , "loop" , "if" , "unless" , "else" , "switch" , "try" , "catch" , "finally" , "class" ] , g = [ "break" , "by" , "continue" , "debugger" , "delete" , "do" , "in" , "of" , "new" , "return" , "then" , "this" , "@" , "throw" , "when" , "until" , "extends" ] , v = r ( m . concat ( g ) ) ; m = r ( m ) ; var y = /^('{3}|\"{3}|['\"])/ , b = /^(\/{3}|\/)/ , k = [ "Infinity" , "NaN" , "undefined" , "null" , "true" , "false" , "on" , "off" , "yes" , "no" ] , x = r ( k ) , w = { startState : function ( e ) { return { tokenize : n , scope : { offset : e || 0 , type : "coffee" , prev : null , align : ! 1 } , prop : ! 1 , dedent : 0 } } , token : function ( e , t ) { var r = null === t . scope . align && t . scope ; r && e . sol ( ) && ( r . align = ! 1 ) ; var n = l ( e , t ) ; return n && "comment" != n && ( r && ( r . align = ! 0 ) , t . prop = "punctuation" == n && "." == e . current ( ) ) , n } , indent : fun
"**" : 4 , "=~" : 4 , "!~" : 4 , "*" : 4 , "/" : 4 , "%" : 4 , x : 4 , "+" : 4 , "-" : 4 , "." : 4 , "<<" : 4 , ">>" : 4 , "<" : 4 , ">" : 4 , "<=" : 4 , ">=" : 4 , lt : 4 , gt : 4 , le : 4 , ge : 4 , "==" : 4 , "!=" : 4 , "<=>" : 4 , eq : 4 , ne : 4 , cmp : 4 , "~~" : 4 , "&" : 4 , "|" : 4 , "^" : 4 , "&&" : 4 , "||" : 4 , "//" : 4 , ".." : 4 , "..." : 4 , "?" : 4 , ":" : 4 , "=" : 4 , "+=" : 4 , "-=" : 4 , "*=" : 4 , "," : 4 , "=>" : 4 , "::" : 4 , not : 4 , and : 4 , or : 4 , xor : 4 , BEGIN : [ 5 , 1 ] , END : [ 5 , 1 ] , PRINT : [ 5 , 1 ] , PRINTF : [ 5 , 1 ] , GETC : [ 5 , 1 ] , READ : [ 5 , 1 ] , READLINE : [ 5 , 1 ] , DESTROY : [ 5 , 1 ] , TIE : [ 5 , 1 ] , TIEHANDLE : [ 5 , 1 ] , UNTIE : [ 5 , 1 ] , STDIN : 5 , STDIN _TOP : 5 , STDOUT : 5 , STDOUT _TOP : 5 , STDERR : 5 , STDERR _TOP : 5 , $ARG : 5 , $ _ : 5 , "@ARG" : 5 , "@_" : 5 , $LIST _SEPARATOR : 5 , '$"' : 5 , $PROCESS _ID : 5 , $PID : 5 , $$ : 5 , $REAL _GROUP _ID : 5 , $GID : 5 , "$(" : 5 , $EFFECTIVE _GROUP _ID : 5 , $EGID : 5 , "$)" : 5 , $PROGRAM _NAME : 5 , $0 : 5 , $SUBSCRIPT _SEPARATOR : 5 , $SUBSEP : 5 , "$;" : 5 , $REAL _USER _ID : 5 , $UID : 5 , "$<" : 5 , $EFFECTIVE _USER _ID : 5 , $EUID : 5 , "$>" : 5 , $a : 5 , $b : 5 , $COMPILING : 5 , "$^C" : 5 , $DEBUGGING : 5 , "$^D" : 5 , "${^ENCODING}" : 5 , $ENV : 5 , "%ENV" : 5 , $SYSTEM _FD _MAX : 5 , "$^F" : 5 , "@F" : 5 , "${^GLOBAL_PHASE}" : 5 , "$^H" : 5 , "%^H" : 5 , "@INC" : 5 , "%INC" : 5 , $INPLACE _EDIT : 5 , "$^I" : 5 , "$^M" : 5 , $OSNAME : 5 , "$^O" : 5 , "${^OPEN}" : 5 , $PERLDB : 5 , "$^P" : 5 , $SIG : 5 , "%SIG" : 5 , $BASETIME : 5 , "$^T" : 5 , "${^TAINT}" : 5 , "${^UNICODE}" : 5 , "${^UTF8CACHE}" : 5 , "${^UTF8LOCALE}" : 5 , $PERL _VERSION : 5 , "$^V" : 5 , "${^WIN32_SLOPPY_STAT}" : 5 , $EXECUTABLE _NAME : 5 , "$^X" : 5 , $1 : 5 , $MATCH : 5 , "$&" : 5 , "${^MATCH}" : 5 , $PREMATCH : 5 , "$`" : 5 , "${^PREMATCH}" : 5 , $POSTMATCH : 5 , "$'" : 5 , "${^POSTMATCH}" : 5 , $LAST _PAREN _MATCH : 5 , "$+" : 5 , $LAST _SUBMATCH _RESULT : 5 , "$^N" : 5 , "@LAST_MATCH_END" : 5 , "@+" : 5 , "%LAST_PAREN_MATCH" : 5 , "%+" : 5 , "@LAST_MATCH_START" : 5 , "@-" : 5 , "%LAST_MATCH_START" : 5 , "%-" : 5 , $LAST _REGEXP _CODE _RESULT : 5 , "$^R" : 5 , "${^RE_DEBUG_FLAGS}" : 5 , "${^RE_TRIE_MAXBUF}" : 5 , $ARGV : 5 , "@ARGV" : 5 , ARGV : 5 , ARGVOUT : 5 , $OUTPUT _FIELD _SEPARATOR : 5 , $OFS : 5 , "$," : 5 , $INPUT _LINE _NUMBER : 5 , $NR : 5 , "$." : 5 , $INPUT _RECORD _SEPARATOR : 5 , $RS : 5 , "$/" : 5 , $OUTPUT _RECORD _SEPARATOR : 5 , $ORS : 5 , "$\\" : 5 , $OUTPUT _AUTOFLUSH : 5 , "$|" : 5 , $ACCUMULATOR : 5 , "$^A" : 5 , $FORMAT _FORMFEED : 5 , "$^L" : 5 , $FORMAT _PAGE _NUMBER : 5 , "$%" : 5 , $FORMAT _LINES _LEFT : 5 , "$-" : 5 , $FORMAT _LINE _BREAK _CHARACTERS : 5 , "$:" : 5 , $FORMAT _LINES _PER _PAGE : 5 , "$=" : 5 , $FORMAT _TOP _NAME : 5 , "$^" : 5 , $FORMAT _NAME : 5 , "$~" : 5 , "${^CHILD_ERROR_NATIVE}" : 5 , $EXTENDED _OS _ERROR : 5 , "$^E" : 5 , $EXCEPTIONS _BEING _CAUGHT : 5 , "$^S" : 5 , $WARNING : 5 , "$^W" : 5 , "${^WARNING_BITS}" : 5 , $OS _ERROR : 5 , $ERRNO : 5 , "$!" : 5 , "%OS_ERROR" : 5 , "%ERRNO" : 5 , "%!" : 5 , $CHILD _ERROR : 5 , "$?" : 5 , $EVAL _ERROR : 5 , "$@" : 5 , $OFMT : 5 , "$#" : 5 , "$*" : 5 , $ARRAY _BASE : 5 , "$[" : 5 , $OLD _PERL _VERSION : 5 , "$]" : 5 , "if" : [ 1 , 1 ] , elsif : [ 1 , 1 ] , "else" : [ 1 , 1 ] , "while" : [ 1 , 1 ] , unless : [ 1 , 1 ] , "for" : [ 1 , 1 ] , foreach : [ 1 , 1 ] , abs : 1 , accept : 1 , alarm : 1 , atan2 : 1 , bind : 1 , binmode : 1 , bless : 1 , bootstrap : 1 , "break" : 1 , caller : 1 , chdir : 1 , chmod : 1 , chomp : 1 , chop : 1 , chown : 1 , chr : 1 , chroot : 1 , close : 1 , closedir : 1 , connect : 1 , "continue" : [ 1 , 1 ] , cos : 1 , crypt : 1 , dbmclose : 1 , dbmopen : 1 , "default" : 1 , defined : 1 , "delete" : 1 , die : 1 , "do" : 1 , dump : 1 , each : 1 , endgrent : 1 , endhostent : 1 , endnetent : 1 , endprotoent : 1 , endpwent : 1 , endservent : 1 , eof : 1 , eval : 1 , exec : 1 , exists : 1 , exit : 1 , exp : 1 , fcntl : 1 , fileno : 1 , flock : 1 , fork : 1 , format : 1 , formline : 1 , getc : 1 , getgrent : 1 , getgrgid : 1 , getgrnam : 1 , gethostbyaddr : 1 , gethostbyname : 1 , gethostent : 1 , getlogin : 1 , getnetbyaddr : 1 , getnetbyname : 1 , getnetent : 1 , getpeername : 1 , getpgrp : 1 , getppid : 1 , getpriority : 1 , getprotobyname : 1 , getprotobynumber : 1 , getprotoent : 1 , getpwent : 1 , getpwnam : 1 , getpwuid : 1 , getservbyname : 1 , getservbyport : 1 , getservent : 1 , getsockname : 1 , getsockopt : 1 , given : 1 , glob : 1 , gmtime : 1 , "goto" : 1 , grep : 1 , hex : 1 , "import" : 1 , index : 1 , "int" : 1 , ioctl : 1 , join : 1 , keys : 1 , kill : 1 , last : 1 , lc : 1 , lcfirst : 1 , length : 1 , link : 1 , listen : 1 , local : 2 , localtime : 1 , lock : 1 , log : 1 , lstat : 1 , m : null , map : 1 , mkdir : 1 , msgctl : 1 , msgget : 1 , msgrcv : 1 , msgsnd : 1 , my : 2 , "new" : 1 , next : 1 , no : 1 , oct : 1 , open : 1 , opendir : 1 , ord : 1 , our : 2 , pack : 1 , "package" : 1 , pipe : 1 , pop : 1 , pos : 1 , print : 1 , printf : 1 , prototype : 1 , push : 1 , q : null , qq : null , qr : null , quotemeta : null , qw : null , qx : null , rand : 1 , read : 1 , readdir : 1 , readline : 1 , readlink : 1 , readpipe : 1 , recv : 1 , redo : 1 , ref : 1 , rename : 1 , require : 1 , reset : 1 , "return" : 1 , reverse : 1 , rewinddir : 1 , rindex : 1 , rmdir : 1 , s : null , say : 1 , scalar : 1 , seek : 1 , seekdir : 1 , select : 1 , semctl : 1 , semget : 1 , semop : 1 , send : 1 , setgrent : 1 , sethostent : 1 , setnetent : 1 , setpgrp : 1 , setpriority : 1 , setprotoent : 1 , setpwent : 1 , setservent : 1 , setsockopt : 1 , shift : 1 , shmctl : 1 , shmget : 1 , shmread : 1 , shmwrite : 1 , shutdown : 1 , sin : 1 , sleep : 1 , socket : 1 , socketpair : 1 , sort : 1 , splice : 1 , split
toKeys : "W" } , { keys : "<C-BS>" , type : "keyToKey" , toKeys : "B" , context : "normal" } , { keys : "<S-Space>" , type : "keyToKey" , toKeys : "w" } , { keys : "<S-BS>" , type : "keyToKey" , toKeys : "b" , context : "normal" } , { keys : "<C-n>" , type : "keyToKey" , toKeys : "j" } , { keys : "<C-p>" , type : "keyToKey" , toKeys : "k" } , { keys : "<C-[>" , type : "keyToKey" , toKeys : "<Esc>" } , { keys : "<C-c>" , type : "keyToKey" , toKeys : "<Esc>" } , { keys : "<C-[>" , type : "keyToKey" , toKeys : "<Esc>" , context : "insert" } , { keys : "<C-c>" , type : "keyToKey" , toKeys : "<Esc>" , context : "insert" } , { keys : "s" , type : "keyToKey" , toKeys : "cl" , context : "normal" } , { keys : "s" , type : "keyToKey" , toKeys : "xi" , context : "visual" } , { keys : "S" , type : "keyToKey" , toKeys : "cc" , context : "normal" } , { keys : "S" , type : "keyToKey" , toKeys : "dcc" , context : "visual" } , { keys : "<Home>" , type : "keyToKey" , toKeys : "0" } , { keys : "<End>" , type : "keyToKey" , toKeys : "$" } , { keys : "<PageUp>" , type : "keyToKey" , toKeys : "<C-b>" } , { keys : "<PageDown>" , type : "keyToKey" , toKeys : "<C-f>" } , { keys : "<CR>" , type : "keyToKey" , toKeys : "j^" , context : "normal" } , { keys : "H" , type : "motion" , motion : "moveToTopLine" , motionArgs : { linewise : ! 0 , toJumplist : ! 0 } } , { keys : "M" , type : "motion" , motion : "moveToMiddleLine" , motionArgs : { linewise : ! 0 , toJumplist : ! 0 } } , { keys : "L" , type : "motion" , motion : "moveToBottomLine" , motionArgs : { linewise : ! 0 , toJumplist : ! 0 } } , { keys : "h" , type : "motion" , motion : "moveByCharacters" , motionArgs : { forward : ! 1 } } , { keys : "l" , type : "motion" , motion : "moveByCharacters" , motionArgs : { forward : ! 0 } } , { keys : "j" , type : "motion" , motion : "moveByLines" , motionArgs : { forward : ! 0 , linewise : ! 0 } } , { keys : "k" , type : "motion" , motion : "moveByLines" , motionArgs : { forward : ! 1 , linewise : ! 0 } } , { keys : "gj" , type : "motion" , motion : "moveByDisplayLines" , motionArgs : { forward : ! 0 } } , { keys : "gk" , type : "motion" , motion : "moveByDisplayLines" , motionArgs : { forward : ! 1 } } , { keys : "w" , type : "motion" , motion : "moveByWords" , motionArgs : { forward : ! 0 , wordEnd : ! 1 } } , { keys : "W" , type : "motion" , motion : "moveByWords" , motionArgs : { forward : ! 0 , wordEnd : ! 1 , bigWord : ! 0 } } , { keys : "e" , type : "motion" , motion : "moveByWords" , motionArgs : { forward : ! 0 , wordEnd : ! 0 , inclusive : ! 0 } } , { keys : "E" , type : "motion" , motion : "moveByWords" , motionArgs : { forward : ! 0 , wordEnd : ! 0 , bigWord : ! 0 , inclusive : ! 0 } } , { keys : "b" , type : "motion" , motion : "moveByWords" , motionArgs : { forward : ! 1 , wordEnd : ! 1 } } , { keys : "B" , type : "motion" , motion : "moveByWords" , motionArgs : { forward : ! 1 , wordEnd : ! 1 , bigWord : ! 0 } } , { keys : "ge" , type : "motion" , motion : "moveByWords" , motionArgs : { forward : ! 1 , wordEnd : ! 0 , inclusive : ! 0 } } , { keys : "gE" , type : "motion" , motion : "moveByWords" , motionArgs : { forward : ! 1 , wordEnd : ! 0 , bigWord : ! 0 , inclusive : ! 0 } } , { keys : "{" , type : "motion" , motion : "moveByParagraph" , motionArgs : { forward : ! 1 , toJumplist : ! 0 } } , { keys : "}" , type : "motion" , motion : "moveByParagraph" , motionArgs : { forward : ! 0 , toJumplist : ! 0 } } , { keys : "<C-f>" , type : "motion" , motion : "moveByPage" , motionArgs : { forward : ! 0 } } , { keys : "<C-b>" , type : "motion" , motion : "moveByPage" , motionArgs : { forward : ! 1 } } , { keys : "<C-d>" , type : "motion" , motion : "moveByScroll" , motionArgs : { forward : ! 0 , explicitRepeat : ! 0 } } , { keys : "<C-u>" , type : "motion" , motion : "moveByScroll" , motionArgs : { forward : ! 1 , explicitRepeat : ! 0 } } , { keys : "gg" , type : "motion" , motion : "moveToLineOrEdgeOfDocument" , motionArgs : { forward : ! 1 , explicitRepeat : ! 0 , linewise : ! 0 , toJumplist : ! 0 } } , { keys : "G" , type : "motion" , motion : "moveToLineOrEdgeOfDocument" , motionArgs : { forward : ! 0 , explicitRepeat : ! 0 , linewise : ! 0 , toJumplist : ! 0 } } , { keys : "0" , type : "motion" , motion : "moveToStartOfLine" } , { keys : "^" , type : "motion" , motion : "moveToFirstNonWhiteSpaceCharacter" } , { keys : "+" , type : "motion" , motion : "moveByLines" , motionArgs : { forward : ! 0 , toFirstChar : ! 0 } } , { keys : "-" , type : "motion" , motion : "moveByLines" , motionArgs : { forward : ! 1 , toFirstChar : ! 0 } } , { keys : "_" , type : "motion" , motion : "moveByLines" , motionArgs : { forward : ! 0 , toFirstChar : ! 0 , repeatOffset : - 1 } } , { keys : "$" , type : "motion" , motion : "moveToEol" , motionArgs : { inclusive : ! 0 } } , { keys : "%" , type : "motion" , motion : "moveToMatchedSymbol" , motionArgs : { inclusive : ! 0 , toJumplist : ! 0 } } , { keys : "f<character>" , type : "motion" , motion : "moveToCharacter" , motionArgs : { forward : ! 0 , inclusive : ! 0 } } , { keys : "F<character>" , type : "motion" , motion : "moveToCharacter" , motionArgs : { forward : ! 1 } } , { keys : "t<character>" , type : "motion" , motion : "moveTillCharacter" , motionArgs : { forward : ! 0 , inclusive : ! 0 } } , { keys : "T<character>" , type : "motion" , motion : " moveTillCharact
if ( t . insertMode ) { var r = kt . macroModeState ; if ( r . isPlaying ) return ; var n = r . lastInsertModeChanges ; n . expectCursorActivityForChange ? n . expectCursorActivityForChange = ! 1 : n . changes = [ ] } else e . curOp . isVimOp || rt ( e , t ) ; t . visualMode && tt ( e ) } function tt ( e ) { var t = e . state . vim , r = P ( e , H ( t . sel . head ) ) , n = R ( r , 0 , 1 ) ; t . fakeCursor && t . fakeCursor . clear ( ) , t . fakeCursor = e . markText ( r , n , { className : "cm-animate-fat-cursor" } ) } function rt ( t , r ) { var n = t . getCursor ( "anchor" ) , i = t . getCursor ( "head" ) ; if ( r . visualMode && ! t . somethingSelected ( ) ? le ( t , ! 1 ) : r . visualMode || r . insertMode || ! t . somethingSelected ( ) || ( r . visualMode = ! 0 , r . visualLine = ! 1 , e . signal ( t , "vim-mode-change" , { mode : "visual" } ) ) , r . visualMode ) { var o = U ( i , n ) ? 0 : - 1 , a = U ( i , n ) ? - 1 : 0 ; i = R ( i , 0 , o ) , n = R ( n , 0 , a ) , r . sel = { anchor : n , head : i } , ke ( t , r , "<" , K ( i , n ) ) , ke ( t , r , ">" , V ( i , n ) ) } else r . insertMode || ( r . lastHPos = t . getCursor ( ) . ch ) } function nt ( e ) { this . keyName = e } function it ( t ) { function r ( ) { return i . changes . push ( new nt ( o ) ) , ! 0 } var n = kt . macroModeState , i = n . lastInsertModeChanges , o = e . keyName ( t ) ; o && ( - 1 != o . indexOf ( "Delete" ) || - 1 != o . indexOf ( "Backspace" ) ) && e . lookupKey ( o , "vim-insert" , r ) } function ot ( e , t , r , n ) { function i ( ) { s ? _t . processAction ( e , t , t . lastEditActionCommand ) : _t . evalInput ( e , t ) } function o ( r ) { if ( a . lastInsertModeChanges . changes . length > 0 ) { r = t . lastEditActionCommand ? r : 1 ; var n = a . lastInsertModeChanges ; at ( e , n . changes , r ) } } var a = kt . macroModeState ; a . isPlaying = ! 0 ; var s = ! ! t . lastEditActionCommand , l = t . inputState ; if ( t . inputState = t . lastEditInputState , s && t . lastEditActionCommand . interlaceInsertRepeat ) for ( var c = 0 ; r > c ; c ++ ) i ( ) , o ( 1 ) ; else n || i ( ) , o ( r ) ; t . inputState = l , t . insertMode && ! n && Ke ( e ) , a . isPlaying = ! 1 } function at ( t , r , n ) { function i ( r ) { return "string" == typeof r ? e . commands [ r ] ( t ) : r ( t ) , ! 0 } var o = t . getCursor ( "head" ) , a = kt . macroModeState . lastInsertModeChanges . inVisualBlock ; if ( a ) { var s = t . state . vim , l = s . lastSelection , c = D ( l . anchor , l . head ) ; ee ( t , o , c . line + 1 ) , n = t . listSelections ( ) . length , t . setCursor ( o ) } for ( var u = 0 ; n > u ; u ++ ) { a && t . setCursor ( R ( o , u , 0 ) ) ; for ( var f = 0 ; f < r . length ; f ++ ) { var d = r [ f ] ; if ( d instanceof nt ) e . lookupKey ( d . keyName , "vim-insert" , i ) ; else { var p = t . getCursor ( ) ; t . replaceRange ( d , p , p ) } } } a && t . setCursor ( R ( o , 0 , 1 ) ) } e . defineOption ( "vimMode" , ! 1 , function ( t , r , n ) { r && "vim" != t . getOption ( "keyMap" ) ? t . setOption ( "keyMap" , "vim" ) : ! r && n != e . Init && /^vim/ . test ( t . getOption ( "keyMap" ) ) && t . setOption ( "keyMap" , "default" ) } ) ; var st = { Shift : "S" , Ctrl : "C" , Alt : "A" , Cmd : "D" , Mod : "A" } , lt = { Enter : "CR" , Backspace : "BS" , Delete : "Del" } , ct = /[\d]/ , ut = [ e . isWordChar , function ( t ) { return t && ! e . isWordChar ( t ) && ! /\s/ . test ( t ) } ] , ft = [ function ( e ) { return /\S/ . test ( e ) } ] , dt = f ( 65 , 26 ) , pt = f ( 97 , 26 ) , ht = f ( 48 , 10 ) , mt = [ ] . concat ( dt , pt , ht , [ "<" , ">" ] ) , gt = [ ] . concat ( dt , pt , ht , [ "-" , '"' , "." , ":" , "/" ] ) , vt = { } ; b ( "filetype" , void 0 , "string" , [ "ft" ] , function ( e , t ) { if ( void 0 !== t ) { if ( void 0 === e ) { var r = t . getOption ( "mode" ) ; return "null" == r ? "" : r } var r = "" == e ? "null" : e ; t . setOption ( "mode" , r ) } } ) ; var yt = function ( ) { function e ( e , t , s ) { function l ( t ) { var i = ++ n % r , o = a [ i ] ; o && o . clear ( ) , a [ i ] = e . setBookmark ( t ) } var c = n % r , u = a [ c ] ; if ( u ) { var f = u . find ( ) ; f && ! $ ( f , t ) && l ( t ) } else l ( t ) ; l ( s ) , i = n , o = n - r + 1 , 0 > o && ( o = 0 ) } function t ( e , t ) { n += t , n > i ? n = i : o > n && ( n = o ) ; var s = a [ ( r + n ) % r ] ; if ( s && ! s . find ( ) ) { var l , c = t > 0 ? 1 : - 1 , u = e . getCursor ( ) ; do if ( n += c , s = a [ ( r + n ) % r ] , s && ( l = s . find ( ) ) && ! $ ( u , l ) ) break ; while ( i > n && n > o ) } return s } var r = 100 , n = - 1 , i = 0 , o = 0 , a = new Array ( r ) ; return { cachedCursor : void 0 , add : e , move : t } } , bt = function ( e ) { return e ? { changes : e . changes , expectCursorActivityForChange : e . expectCursorActivityForChange } : { changes : [ ] , expectCursorActivityForChange : ! 1 } } ; w . prototype = { exitMacroRecordMode : function ( ) { var e = kt . macroModeState ; e . onRecordingDone && e . onRecordingDone ( ) , e . onRecordingDone = void 0 , e . isRecording = ! 1 } , enterMacroRecordMode : function ( e , t ) { var r = kt . registerController . getRegister ( t ) ; r && ( r . clear ( ) , this . latestRegister = t , e . openDialog && ( this . onRecordingDone = e . openDialog ( "(recording)[" + t + "]" , null , { bottom : ! 0 } ) ) , this . isRecording = ! 0 ) } } ; var kt , xt , wt = { buildKeyMap : function ( ) { } , getRegisterController : function ( ) { return kt . registerController } , resetVimGlobalState _ : C , getVimGlobalState _ : function ( ) { return kt } , maybeInitVimState _ : _ , suppressErrorLogging : ! 1 , InsertModeKey : nt , map : function ( e , t , r ) { Nt . map ( e , t , r ) } , setOption : k , getOption : x , defineOption : b , defineEx : function ( e , t , r ) { i
u && u . possiblyAsync || ! l . callback || l . callback ( ) } catch ( c ) { throw Ne ( t , c ) , c } } , parseInput _ : function ( e , t , r ) { t . eatWhile ( ":" ) , t . eat ( "%" ) ? ( r . line = e . firstLine ( ) , r . lineEnd = e . lastLine ( ) ) : ( r . line = this . parseLineSpec _ ( e , t ) , void 0 !== r . line && t . eat ( "," ) && ( r . lineEnd = this . parseLineSpec _ ( e , t ) ) ) ; var n = t . match ( /^(\w+)/ ) ; return r . commandName = n ? n [ 1 ] : t . match ( /.*/ ) [ 0 ] , r } , parseLineSpec _ : function ( e , t ) { var r = t . match ( /^(\d+)/ ) ; if ( r ) return parseInt ( r [ 1 ] , 10 ) - 1 ; switch ( t . next ( ) ) { case "." : return e . getCursor ( ) . line ; case "$" : return e . lastLine ( ) ; case "'" : var n = e . state . vim . marks [ t . next ( ) ] ; if ( n && n . find ( ) ) return n . find ( ) . line ; throw new Error ( "Mark not set" ) ; default : return void t . backUp ( 1 ) } } , parseCommandArgs _ : function ( e , t , r ) { if ( ! e . eol ( ) ) { t . argString = e . match ( /.*/ ) [ 0 ] ; var n = r . argDelimiter || /\s+/ , i = Z ( t . argString ) . split ( n ) ; i . length && i [ 0 ] && ( t . args = i ) } } , matchCommand _ : function ( e ) { for ( var t = e . length ; t > 0 ; t -- ) { var r = e . substring ( 0 , t ) ; if ( this . commandMap _ [ r ] ) { var n = this . commandMap _ [ r ] ; if ( 0 === n . name . indexOf ( e ) ) return n } } return null } , buildCommandMap _ : function ( ) { this . commandMap _ = { } ; for ( var e = 0 ; e < r . length ; e ++ ) { var t = r [ e ] , n = t . shortName || t . name ; this . commandMap _ [ n ] = t } } , map : function ( e , r , n ) { if ( ":" != e && ":" == e . charAt ( 0 ) ) { if ( n ) throw Error ( "Mode not supported for ex mappings" ) ; var i = e . substring ( 1 ) ; this . commandMap _ [ i ] = ":" != r && ":" == r . charAt ( 0 ) ? { name : i , type : "exToEx" , toInput : r . substring ( 1 ) , user : ! 0 } : { name : i , type : "exToKey" , toKeys : r , user : ! 0 } } else if ( ":" != r && ":" == r . charAt ( 0 ) ) { var o = { keys : e , type : "keyToEx" , exArgs : { input : r . substring ( 1 ) } , user : ! 0 } ; n && ( o . context = n ) , t . unshift ( o ) } else { var o = { keys : e , type : "keyToKey" , toKeys : r , user : ! 0 } ; n && ( o . context = n ) , t . unshift ( o ) } } , unmap : function ( e , r ) { if ( ":" != e && ":" == e . charAt ( 0 ) ) { if ( r ) throw Error ( "Mode not supported for ex mappings" ) ; var n = e . substring ( 1 ) ; if ( this . commandMap _ [ n ] && this . commandMap _ [ n ] . user ) return void delete this . commandMap _ [ n ] } else for ( var i = e , o = 0 ; o < t . length ; o ++ ) if ( i == t [ o ] . keys && t [ o ] . context === r && t [ o ] . user ) return void t . splice ( o , 1 ) ; throw Error ( "No such mapping." ) } } ; var It = { colorscheme : function ( e , t ) { return ! t . args || t . args . length < 1 ? void Ne ( e , e . getOption ( "theme" ) ) : void e . setOption ( "theme" , t . args [ 0 ] ) } , map : function ( e , t , r ) { var n = t . args ; return ! n || n . length < 2 ? void ( e && Ne ( e , "Invalid mapping: " + t . input ) ) : void Nt . map ( n [ 0 ] , n [ 1 ] , r ) } , imap : function ( e , t ) { this . map ( e , t , "insert" ) } , nmap : function ( e , t ) { this . map ( e , t , "normal" ) } , vmap : function ( e , t ) { this . map ( e , t , "visual" ) } , unmap : function ( e , t , r ) { var n = t . args ; return ! n || n . length < 1 ? void ( e && Ne ( e , "No such mapping: " + t . input ) ) : void Nt . unmap ( n [ 0 ] , r ) } , move : function ( e , t ) { _t . processCommand ( e , e . state . vim , { type : "motion" , motion : "moveToLineOrEdgeOfDocument" , motionArgs : { forward : ! 1 , explicitRepeat : ! 0 , linewise : ! 0 } , repeatOverride : t . line + 1 } ) } , set : function ( e , t ) { var r = t . args , n = t . setCfg || { } ; if ( ! r || r . length < 1 ) return void ( e && Ne ( e , "Invalid mapping: " + t . input ) ) ; var i = r [ 0 ] . split ( "=" ) , o = i [ 0 ] , a = i [ 1 ] , s = ! 1 ; if ( "?" == o . charAt ( o . length - 1 ) ) { if ( a ) throw Error ( "Trailing characters: " + t . argString ) ; o = o . substring ( 0 , o . length - 1 ) , s = ! 0 } void 0 === a && "no" == o . substring ( 0 , 2 ) && ( o = o . substring ( 2 ) , a = ! 1 ) ; var l = vt [ o ] && "boolean" == vt [ o ] . type ; if ( l && void 0 == a && ( a = ! 0 ) , ! l && void 0 === a || s ) { var c = x ( o , e , n ) ; c === ! 0 || c === ! 1 ? Ne ( e , " " + ( c ? "" : "no" ) + o ) : Ne ( e , " " + o + "=" + c ) } else k ( o , a , e , n ) } , setlocal : function ( e , t ) { t . setCfg = { scope : "local" } , this . set ( e , t ) } , setglobal : function ( e , t ) { t . setCfg = { scope : "global" } , this . set ( e , t ) } , registers : function ( e , t ) { var r = t . args , n = kt . registerController . registers , i = "----------Registers----------<br><br>" ; if ( r ) { var o ; r = r . join ( "" ) ; for ( var a = 0 ; a < r . length ; a ++ ) if ( o = r . charAt ( a ) , kt . registerController . isValidRegister ( o ) ) { var s = n [ o ] || new L ; i += '"' + o + " " + s . toString ( ) + "<br>" } } else for ( var o in n ) { var l = n [ o ] . toString ( ) ; l . length && ( i += '"' + o + " " + l + "<br>" ) } Ne ( e , i ) } , sort : function ( t , r ) { function i ( ) { if ( r . argString ) { var t = new e . StringStream ( r . argString ) ; if ( t . eat ( "!" ) && ( a = ! 0 ) , t . eol ( ) ) return ; if ( ! t . eatSpace ( ) ) return "Invalid arguments" ; var n = t . match ( /[a-z]+/ ) ; if ( n ) { n = n [ 0 ] , s = - 1 != n . indexOf ( "i" ) , l = - 1 != n . indexOf ( "u" ) ; var i = - 1 != n . indexOf ( "d" ) && 1 , o = - 1 != n . indexOf ( "x" ) && 1 , u = - 1 != n . indexOf ( "o" ) && 1 ; if ( i + o + u > 1 ) return "Invalid arguments" ; c = i && "decimal" || o && "hex" || u && "octal" } if ( t . match ( /\/.*\// ) ) return "patterns not supported" } } fun