2015-05-15 12:58:13 +08:00
! function ( e ) { if ( "object" == typeof exports && "object" == typeof module ) module . exports = e ( ) ; else { if ( "function" == typeof define && define . amd ) return define ( [ ] , e ) ; this . CodeMirror = e ( ) } } ( function ( ) { "use strict" ; function e ( n , r ) { if ( ! ( this instanceof e ) ) return new e ( n , r ) ; this . options = r = r ? Di ( r ) : { } , Di ( Ko , r , ! 1 ) , h ( r ) ; var i = r . value ; "string" == typeof i && ( i = new va ( i , r . mode ) ) , this . doc = i ; var o = new e . inputStyles [ r . inputStyle ] ( this ) , a = this . display = new t ( n , i , o ) ; a . wrapper . CodeMirror = this , c ( this ) , l ( this ) , r . lineWrapping && ( this . display . wrapper . className += " CodeMirror-wrap" ) , r . autofocus && ! Co && a . input . focus ( ) , v ( this ) , this . state = { keyMaps : [ ] , overlays : [ ] , modeGen : 0 , overwrite : ! 1 , delayingBlurEvent : ! 1 , focused : ! 1 , suppressEdits : ! 1 , pasteIncoming : ! 1 , cutIncoming : ! 1 , draggingText : ! 1 , highlight : new Li , keySeq : null , specialChars : null } ; var s = this ; ho && 11 > po && setTimeout ( function ( ) { s . display . input . reset ( ! 0 ) } , 20 ) , jt ( this ) , Vi ( ) , yt ( this ) , this . curOp . forceUpdate = ! 0 , Gr ( this , i ) , r . autofocus && ! Co || s . hasFocus ( ) ? setTimeout ( Wi ( hn , this ) , 20 ) : pn ( this ) ; for ( var u in $o ) $o . hasOwnProperty ( u ) && $o [ u ] ( this , r [ u ] , Xo ) ; k ( this ) , r . finishInit && r . finishInit ( this ) ; for ( var f = 0 ; f < Jo . length ; ++ f ) Jo [ f ] ( this ) ; xt ( this ) , mo && r . lineWrapping && "optimizelegibility" == getComputedStyle ( a . lineDiv ) . textRendering && ( a . lineDiv . style . textRendering = "auto" ) } function t ( e , t , n ) { var r = this ; this . input = n , r . scrollbarFiller = Hi ( "div" , null , "CodeMirror-scrollbar-filler" ) , r . scrollbarFiller . setAttribute ( "cm-not-content" , "true" ) , r . gutterFiller = Hi ( "div" , null , "CodeMirror-gutter-filler" ) , r . gutterFiller . setAttribute ( "cm-not-content" , "true" ) , r . lineDiv = Hi ( "div" , null , "CodeMirror-code" ) , r . selectionDiv = Hi ( "div" , null , null , "position: relative; z-index: 1" ) , r . cursorDiv = Hi ( "div" , null , "CodeMirror-cursors" ) , r . measure = Hi ( "div" , null , "CodeMirror-measure" ) , r . lineMeasure = Hi ( "div" , null , "CodeMirror-measure" ) , r . lineSpace = Hi ( "div" , [ r . measure , r . lineMeasure , r . selectionDiv , r . cursorDiv , r . lineDiv ] , null , "position: relative; outline: none" ) , r . mover = Hi ( "div" , [ Hi ( "div" , [ r . lineSpace ] , "CodeMirror-lines" ) ] , null , "position: relative" ) , r . sizer = Hi ( "div" , [ r . mover ] , "CodeMirror-sizer" ) , r . sizerWidth = null , r . heightForcer = Hi ( "div" , null , null , "position: absolute; height: " + Ta + "px; width: 1px;" ) , r . gutters = Hi ( "div" , null , "CodeMirror-gutters" ) , r . lineGutter = null , r . scroller = Hi ( "div" , [ r . sizer , r . heightForcer , r . gutters ] , "CodeMirror-scroll" ) , r . scroller . setAttribute ( "tabIndex" , "-1" ) , r . wrapper = Hi ( "div" , [ r . scrollbarFiller , r . gutterFiller , r . scroller ] , "CodeMirror" ) , ho && 8 > po && ( r . gutters . style . zIndex = - 1 , r . scroller . style . paddingRight = 0 ) , mo || co && Co || ( r . scroller . draggable = ! 0 ) , e && ( e . appendChild ? e . appendChild ( r . wrapper ) : e ( r . wrapper ) ) , r . viewFrom = r . viewTo = t . first , r . reportedViewFrom = r . reportedViewTo = t . first , r . view = [ ] , r . renderedView = null , r . externalMeasured = null , r . viewOffset = 0 , r . lastWrapHeight = r . lastWrapWidth = 0 , r . updateLineNumbers = null , r . nativeBarWidth = r . barHeight = r . barWidth = 0 , r . scrollbarsClipped = ! 1 , r . lineNumWidth = r . lineNumInnerWidth = r . lineNumChars = null , r . alignWidgets = ! 1 , r . cachedCharWidth = r . cachedTextHeight = r . cachedPaddingH = null , r . maxLine = null , r . maxLineLength = 0 , r . maxLineChanged = ! 1 , r . wheelDX = r . wheelDY = r . wheelStartX = r . wheelStartY = null , r . shift = ! 1 , r . selForContextMenu = null , r . activeTouch = null , n . init ( r ) } function n ( t ) { t . doc . mode = e . getMode ( t . options , t . doc . modeOption ) , r ( t ) } function r ( e ) { e . doc . iter ( function ( e ) { e . stateAfter && ( e . stateAfter = null ) , e . styles && ( e . styles = null ) } ) , e . doc . frontier = e . doc . first , Fe ( e , 100 ) , e . state . modeGen ++ , e . curOp && Dt ( e ) } function i ( e ) { e . options . lineWrapping ? ( qa ( e . display . wrapper , "CodeMirror-wrap" ) , e . display . sizer . style . minWidth = "" , e . display . sizerWidth = null ) : ( Ra ( e . display . wrapper , "CodeMirror-wrap" ) , d ( e ) ) , a ( e ) , Dt ( e ) , ot ( e ) , setTimeout ( function ( ) { y ( e ) } , 100 ) } function o ( e ) { var t = gt ( e . display ) , n = e . options . lineWrapping , r = n && Math . max ( 5 , e . display . scroller . clientWidth / vt ( e . display ) - 3 ) ; return function ( i ) { if ( yr ( 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 n ? o + ( Math . ceil ( i . text . length / r ) || 1 ) * t : o + t } } function a ( e ) { var t = e . doc , n = o ( e ) ; t . iter ( function ( e ) { var t = n ( e ) ; t != e . height && Yr ( e , t ) } ) } function l ( e ) { e . display . wrapper . className = e . display . wrapper . class
bottom : d . bottom } : Fo } for ( var h = i . top - t . rect . top , p = i . bottom - t . rect . top , m = ( h + p ) / 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 = h , b . rbottom = p ) , b } function nt ( e , t ) { if ( ! window . screen || null == screen . logicalXDPI || screen . logicalXDPI == screen . deviceXDPI || ! Xi ( e ) ) return t ; var n = screen . logicalXDPI / screen . deviceXDPI , r = screen . logicalYDPI / screen . deviceYDPI ; return { left : t . left * n , right : t . right * n , top : t . top * r , bottom : t . bottom * r } } function rt ( 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 it ( e ) { e . display . externalMeasure = null , Bi ( e . display . lineMeasure ) ; for ( var t = 0 ; t < e . display . view . length ; t ++ ) rt ( e . display . view [ t ] ) } function ot ( e ) { it ( e ) , e . display . cachedCharWidth = e . display . cachedTextHeight = e . display . cachedPaddingH = null , e . options . lineWrapping || ( e . display . maxLineChanged = ! 0 ) , e . display . lineNumChars = null } function at ( ) { return window . pageXOffset || ( document . documentElement || document . body ) . scrollLeft } function lt ( ) { return window . pageYOffset || ( document . documentElement || document . body ) . scrollTop } function st ( e , t , n , r ) { if ( t . widgets ) for ( var i = 0 ; i < t . widgets . length ; ++ i ) if ( t . widgets [ i ] . above ) { var o = wr ( t . widgets [ i ] ) ; n . top += o , n . bottom += o } if ( "line" == r ) return n ; r || ( r = "local" ) ; var a = Jr ( t ) ; if ( "local" == r ? a += _e ( e . display ) : a -= e . display . viewOffset , "page" == r || "window" == r ) { var l = e . display . lineSpace . getBoundingClientRect ( ) ; a += l . top + ( "window" == r ? 0 : lt ( ) ) ; var s = l . left + ( "window" == r ? 0 : at ( ) ) ; n . left += s , n . right += s } return n . top += a , n . bottom += a , n } function ct ( e , t , n ) { if ( "div" == n ) return t ; var r = t . left , i = t . top ; if ( "page" == n ) r -= at ( ) , i -= lt ( ) ; else if ( "local" == n || ! n ) { var o = e . display . sizer . getBoundingClientRect ( ) ; r += o . left , i += o . top } var a = e . display . lineSpace . getBoundingClientRect ( ) ; return { left : r - a . left , top : i - a . top } } function ut ( e , t , n , r , i ) { return r || ( r = Kr ( e . doc , t . line ) ) , st ( e , r , Ye ( e , r , t . ch , i ) , n ) } function ft ( e , t , n , r , i , o ) { function a ( t , a ) { var l = Je ( e , i , t , a ? "right" : "left" , o ) ; return a ? l . left = l . right : l . right = l . left , st ( e , r , l , n ) } function l ( e , t ) { var n = s [ t ] , r = n . level % 2 ; return e == Zi ( n ) && t && n . level < s [ t - 1 ] . level ? ( n = s [ -- t ] , e = Qi ( n ) - ( n . level % 2 ? 0 : 1 ) , r = ! 0 ) : e == Qi ( n ) && t < s . length - 1 && n . level < s [ t + 1 ] . level && ( n = s [ ++ t ] , e = Zi ( n ) - n . level % 2 , r = ! 1 ) , r && e == n . to && e > n . from ? a ( e - 1 ) : a ( e , r ) } r = r || Kr ( e . doc , t . line ) , i || ( i = Qe ( e , r ) ) ; var s = ei ( r ) , c = t . ch ; if ( ! s ) return a ( c ) ; var u = oo ( s , c ) , f = l ( c , u ) ; return null != Za && ( f . other = l ( c , Za ) ) , f } function dt ( e , t ) { var n = 0 , t = me ( e . doc , t ) ; e . options . lineWrapping || ( n = vt ( e . display ) * t . ch ) ; var r = Kr ( e . doc , t . line ) , i = Jr ( r ) + _e ( e . display ) ; return { left : n , right : n , top : i , bottom : i + r . height } } function ht ( e , t , n , r ) { var i = Po ( e , t ) ; return i . xRel = r , n && ( i . outside = ! 0 ) , i } function pt ( e , t , n ) { var r = e . doc ; if ( n += e . display . viewOffset , 0 > n ) return ht ( r . first , 0 , ! 0 , - 1 ) ; var i = Qr ( r , n ) , o = r . first + r . size - 1 ; if ( i > o ) return ht ( r . first + r . size - 1 , Kr ( r , o ) . text . length , ! 0 , 1 ) ; 0 > t && ( t = 0 ) ; for ( var a = Kr ( r , i ) ; ; ) { var l = mt ( e , a , i , t , n ) , s = dr ( a ) , c = s && s . find ( 0 , ! 0 ) ; if ( ! s || ! ( l . ch > c . from . ch || l . ch == c . from . ch && l . xRel > 0 ) ) return l ; i = Zr ( a = c . to . line ) } } function mt ( e , t , n , r , i ) { function o ( r ) { var i = ft ( e , Po ( n , r ) , "line" , t , c ) ; return l = ! 0 , a > i . bottom ? i . left - s : a < i . top ? i . left + s : ( l = ! 1 , i . left ) } var a = i - Jr ( t ) , l = ! 1 , s = 2 * e . display . wrapper . clientWidth , c = Qe ( e , t ) , u = ei ( t ) , f = t . text . length , d = Ji ( t ) , h = eo ( t ) , p = o ( d ) , m = l , g = o ( h ) , v = l ; if ( r > g ) return ht ( n , h , v , 1 ) ; for ( ; ; ) { if ( u ? h == d || h == lo ( t , d , 1 ) : 1 >= h - d ) { for ( var y = p > r || g - r >= r - p ? d : h , b = r - ( y == d ? p : g ) ; Fi ( t . text . charAt ( y ) ) ; ) ++ y ; var x = ht ( n , y , y == d ? m : v , - 1 > b ? - 1 : b > 1 ? 1 : 0 ) ; return x } var w = Math . ceil ( f / 2 ) , k = d + w ; if ( u ) { k = d ; for ( var C = 0 ; w > C ; ++ C ) k = lo ( t , k , 1 ) } var S = o ( k ) ; S > r ? ( h = k , g = S , ( v = l ) && ( g += 1e3 ) , f = w ) : ( d = k , p = S , m = l , f -= w ) } } function gt ( e ) { if ( null != e . cachedTextHeight ) return e . cachedTextHeight ; if ( null == Wo ) { Wo = Hi ( "pre" ) ; for ( var t = 0 ; 49 > t ; ++ t ) Wo . appendChild ( document . createTextNode ( "x" ) ) , Wo . appendChild ( Hi ( "br" ) ) ; Wo . appendChild ( document . createTextNode ( "x" ) ) } ji ( e . measure , Wo ) ; var n = Wo . offsetHeight / 50 ; return n > 3 && ( e . cachedTextHeight = n ) , Bi ( e . measure ) , n || 1 } function vt ( e ) { if ( null != e . cachedCharWidth ) return e . cachedChar
n > 0 && ! a ( ! m ) ) break } var y = Pe ( e , Po ( l , s ) , c , ! 0 ) ; return f || ( y . hitSide = ! 0 ) , y } function jn ( e , t , n , r ) { var i , o = e . doc , a = t . left ; if ( "page" == r ) { var l = Math . min ( e . display . wrapper . clientHeight , window . innerHeight || document . documentElement . clientHeight ) ; i = t . top + n * ( l - ( 0 > n ? 1.5 : . 5 ) * gt ( e . display ) ) } else "line" == r && ( i = n > 0 ? t . bottom + 3 : t . top - 3 ) ; for ( ; ; ) { var s = pt ( e , a , i ) ; if ( ! s . outside ) break ; if ( 0 > n ? 0 >= i : i >= o . height ) { s . hitSide = ! 0 ; break } i += 5 * n } return s } function _n ( t , n , r , i ) { e . defaults [ t ] = n , r && ( $o [ t ] = i ? function ( e , t , n ) { n != Xo && r ( e , t , n ) } : r ) } function Rn ( e ) { for ( var t , n , r , i , o = e . split ( /-(?!$)/ ) , e = o [ o . length - 1 ] , a = 0 ; a < o . length - 1 ; a ++ ) { var l = o [ a ] ; if ( /^(cmd|meta|m)$/i . test ( l ) ) i = ! 0 ; else if ( /^a(lt)?$/i . test ( l ) ) t = ! 0 ; else if ( /^(c|ctrl|control)$/i . test ( l ) ) n = ! 0 ; else { if ( ! /^s(hift)$/i . test ( l ) ) throw new Error ( "Unrecognized modifier name: " + l ) ; r = ! 0 } } return t && ( e = "Alt-" + e ) , n && ( e = "Ctrl-" + e ) , i && ( e = "Cmd-" + e ) , r && ( e = "Shift-" + e ) , e } function qn ( e ) { return "string" == typeof e ? ia [ e ] : e } function Un ( e , t , n , r , i ) { if ( r && r . shared ) return Vn ( e , t , n , r , i ) ; if ( e . cm && ! e . cm . curOp ) return At ( e . cm , Un ) ( e , t , n , r , i ) ; var o = new ua ( e , i ) , a = zo ( t , n ) ; if ( r && Di ( r , 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" ) , r . handleMouseEvents || o . widgetNode . setAttribute ( "cm-ignore-events" , "true" ) , r . insertLeft && ( o . widgetNode . insertLeft = ! 0 ) ) , o . collapsed ) { if ( hr ( e , t . line , t , n , o ) || t . line != n . line && hr ( e , n . line , t , n , o ) ) throw new Error ( "Inserting collapsed marker partially overlapping an existing one" ) ; No = ! 0 } o . addToHistory && oi ( e , { from : t , to : n , origin : "markText" } , e . sel , 0 / 0 ) ; var l , s = t . line , c = e . cm ; if ( e . iter ( s , n . line + 1 , function ( e ) { c && o . collapsed && ! c . options . lineWrapping && pr ( e ) == c . display . maxLine && ( l = ! 0 ) , o . collapsed && s != t . line && Yr ( e , 0 ) , Qn ( e , new Xn ( o , s == t . line ? t . ch : null , s == n . line ? n . ch : null ) ) , ++ s } ) , o . collapsed && e . iter ( t . line , n . line + 1 , function ( t ) { yr ( e , t ) && Yr ( t , 0 ) } ) , o . clearOnEnter && Ca ( o , "beforeCursorEnter" , function ( ) { o . clear ( ) } ) , o . readOnly && ( Oo = ! 0 , ( e . history . done . length || e . history . undone . length ) && e . clearHistory ( ) ) , o . collapsed && ( o . id = ++ ca , o . atomic = ! 0 ) , c ) { if ( l && ( c . curOp . updateMaxLine = ! 0 ) , o . collapsed ) Dt ( c , t . line , n . line + 1 ) ; else if ( o . className || o . title || o . startStyle || o . endStyle || o . css ) for ( var u = t . line ; u <= n . line ; u ++ ) Wt ( c , u , "text" ) ; o . atomic && Oe ( c . doc ) , bi ( c , "markerAdded" , c , o ) } return o } function Vn ( e , t , n , r , i ) { r = Di ( r ) , r . shared = ! 1 ; var o = [ Un ( e , t , n , r , i ) ] , a = o [ 0 ] , l = r . widgetNode ; return Vr ( e , function ( e ) { l && ( r . widgetNode = l . cloneNode ( ! 0 ) ) , o . push ( Un ( e , me ( e , t ) , me ( e , n ) , r , i ) ) ; for ( var s = 0 ; s < e . linked . length ; ++ s ) if ( e . linked [ s ] . isParent ) return ; a = Ai ( o ) } ) , new fa ( o , a ) } function Gn ( e ) { return e . findMarks ( Po ( e . first , 0 ) , e . clipPos ( Po ( e . lastLine ( ) ) ) , function ( e ) { return e . parent } ) } function Kn ( e , t ) { for ( var n = 0 ; n < t . length ; n ++ ) { var r = t [ n ] , i = r . find ( ) , o = e . clipPos ( i . from ) , a = e . clipPos ( i . to ) ; if ( zo ( o , a ) ) { var l = Un ( e , o , a , r . primary , r . primary . type ) ; r . markers . push ( l ) , l . parent = r } } } function $n ( e ) { for ( var t = 0 ; t < e . length ; t ++ ) { var n = e [ t ] , r = [ n . primary . doc ] ; Vr ( n . primary . doc , function ( e ) { r . push ( e ) } ) ; for ( var i = 0 ; i < n . markers . length ; i ++ ) { var o = n . markers [ i ] ; - 1 == Oi ( r , o . doc ) && ( o . parent = null , n . markers . splice ( i -- , 1 ) ) } } } function Xn ( e , t , n ) { this . marker = e , this . from = t , this . to = n } function Yn ( e , t ) { if ( e ) for ( var n = 0 ; n < e . length ; ++ n ) { var r = e [ n ] ; if ( r . marker == t ) return r } } function Zn ( e , t ) { for ( var n , r = 0 ; r < e . length ; ++ r ) e [ r ] != t && ( n || ( n = [ ] ) ) . push ( e [ r ] ) ; return n } function Qn ( e , t ) { e . markedSpans = e . markedSpans ? e . markedSpans . concat ( [ t ] ) : [ t ] , t . marker . attachLine ( e ) } function Jn ( e , t , n ) { if ( e ) for ( var r , i = 0 ; i < e . length ; ++ i ) { var o = e [ i ] , a = o . marker , l = null == o . from || ( a . inclusiveLeft ? o . from <= t : o . from < t ) ; if ( l || o . from == t && "bookmark" == a . type && ( ! n || ! o . marker . insertLeft ) ) { var s = null == o . to || ( a . inclusiveRight ? o . to >= t : o . to > t ) ; ( r || ( r = [ ] ) ) . push ( new Xn ( a , o . from , s ? null : o . to ) ) } } return r } function er ( e , t , n ) { if ( e ) for ( var r , i = 0 ; i < e . length ; ++ i ) { var o = e [ i ] , a = o . marker , l = null == o . to || ( a . inclusiveRight ? o . to >= t : o . to > t ) ; if ( l || o . from == t && "bookmark" == a . type && ( ! n || o . marker . insertLeft ) ) { var s = null == o . from || ( a . inclusiveLeft ? o . from <= t : o . from < t ) ; ( r || ( r = [ ] ) ) . push ( new Xn ( a , s ? null : o . from - t , null == o . to ? null : o . to - t ) ) } } return r } function tr ( e , t ) { if ( t . full ) return null ; var n = ve ( e , t . from . line ) && Kr ( e , t . from . line ) . mark
2015-05-04 15:53:29 +08:00
2015-05-15 12:58:13 +08:00
} } , getField : function ( ) { return this . textarea } , supportsTouch : function ( ) { return ! 1 } , focus : function ( ) { if ( "nocursor" != this . cm . options . readOnly && ( ! Co || _i ( ) != 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 r = n . poll ( ) ; r || t ? ( n . pollingFast = ! 1 , n . slowPoll ( ) ) : ( t = ! 0 , n . polling . set ( 60 , e ) ) } var t = ! 1 , n = this ; n . pollingFast = ! 0 , n . polling . set ( 20 , e ) } , poll : function ( ) { var e = this . cm , t = this . textarea , n = this . prevInput ; if ( ! e . state . focused || Ka ( t ) && ! n || Q ( e ) || e . options . disableInput || e . state . keySeq ) return ! 1 ; e . state . pasteIncoming && e . state . fakedLastChar && ( t . value = t . value . substring ( 0 , t . value . length - 1 ) , e . state . fakedLastChar = ! 1 ) ; var r = t . value ; if ( r == n && ! e . somethingSelected ( ) ) return ! 1 ; if ( ho && po >= 9 && this . hasSelection === r || So && /[\uf700-\uf7ff]/ . test ( r ) ) return e . display . input . reset ( ) , ! 1 ; if ( e . doc . sel == e . display . selForContextMenu ) { var i = r . charCodeAt ( 0 ) ; if ( 8203 != i || n || ( n = " " ) , 8666 == i ) return this . reset ( ) , this . cm . execCommand ( "undo" ) } for ( var o = 0 , a = Math . min ( n . length , r . length ) ; a > o && n . charCodeAt ( o ) == r . charCodeAt ( o ) ; ) ++ o ; var l = this ; return Tt ( e , function ( ) { J ( e , r . slice ( o ) , n . length - o , null , l . composing ? "*compose" : null ) , r . length > 1e3 || r . indexOf ( "\n" ) > - 1 ? t . value = l . prevInput = "" : l . prevInput = r , l . composing && ( l . composing . range . clear ( ) , l . composing . range = e . markText ( l . composing . start , e . getCursor ( "to" ) , { className : "CodeMirror-composing" } ) ) } ) , ! 0 } , ensurePolled : function ( ) { this . pollingFast && this . poll ( ) && ( this . pollingFast = ! 1 ) } , onKeyPress : function ( ) { ho && po >= 9 && ( this . hasSelection = null ) , this . fastPoll ( ) } , onContextMenu : function ( e ) { function t ( ) { if ( null != a . selectionStart ) { var e = i . somethingSelected ( ) , t = " " + ( e ? a . value : "" ) ; a . value = "⇚" , a . value = t , r . prevInput = e ? "" : " " , a . selectionStart = 1 , a . selectionEnd = t . length , o . selForContextMenu = i . doc . sel } } function n ( ) { if ( r . contextMenuPending = ! 1 , r . wrapper . style . position = "relative" , a . style . cssText = u , ho && 9 > po && o . scrollbars . setScrollTop ( o . scroller . scrollTop = s ) , null != a . selectionStart ) { ( ! ho || ho && 9 > po ) && t ( ) ; var e = 0 , n = function ( ) { o . selForContextMenu == i . doc . sel && 0 == a . selectionStart && a . selectionEnd > 0 && " " == r . prevInput ? At ( i , ra . selectAll ) ( i ) : e ++ < 10 ? o . detectingSelectAll = setTimeout ( n , 500 ) : o . input . reset ( ) } ; o . detectingSelectAll = setTimeout ( n , 200 ) } } var r = this , i = r . cm , o = i . display , a = r . textarea , l = Ut ( i , e ) , s = o . scroller . scrollTop ; if ( l && ! yo ) { var c = i . options . resetSelectionOnContextMenu ; c && - 1 == i . doc . sel . contains ( l ) && At ( i , Me ) ( i . doc , he ( l ) , Oa ) ; var u = a . style . cssText ; if ( r . wrapper . style . position = "absolute" , a . style . cssText = "position: fixed; width: 30px; height: 30px; top: " + ( e . clientY - 5 ) + "px; left: " + ( e . clientX - 5 ) + "px; z-index: 1000; background: " + ( ho ? "rgba(255, 255, 255, .05)" : "transparent" ) + "; outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);" , mo ) var f = window . scrollY ; if ( o . input . focus ( ) , mo && window . scrollTo ( null , f ) , o . input . reset ( ) , i . somethingSelected ( ) || ( a . value = r . prevInput = " " ) , r . contextMenuPending = ! 0 , o . selForContextMenu = i . doc . sel , clearTimeout ( o . detectingSelectAll ) , ho && po >= 9 && t ( ) , Ao ) { ka ( e ) ; var d = function ( ) { Sa ( window , "mouseup" , d ) , setTimeout ( n , 20 ) } ; Ca ( window , "mouseup" , d ) } else setTimeout ( n , 50 ) } } , setUneditable : Pi , needsContentAttribute : ! 1 } , ne . prototype ) , ie . prototype = Di ( { init : function ( e ) { function t ( e ) { if ( r . somethingSelected ( ) ) Do = r . getSelections ( ) , "cut" == e . type && r . replaceSelection ( "" , null , "cut" ) ; else { if ( ! r . options . lineWiseCopyCut ) return ; var t = ee ( r ) ; Do = t . text , "cut" == e . type && r . operation ( function ( ) { r . setSelections ( t . ranges , 0 , Oa ) , r . replaceSelection ( "" , null , "cut" ) } ) } if ( e . clipboardData && ! ko ) e . preventDefault ( ) , e . clipboardData . clearData ( ) , e . clipboardData . setData ( "text/plain" , Do . join ( "\n" ) ) ; else { var n = re ( ) , i = n . firstChild ; r . display . lineSpace . insertBefore ( n , r . display . lineSpace . firstChild ) , i . value = Do . join ( "\n" ) ; var o = document . activeElement ; Wa ( i ) , setTimeout ( function ( ) { r . display . lineSpace . removeChild ( n ) , o . focus ( ) } , 50 ) } } var n = this , r =
function r ( ) { t . value = c . getValue ( ) } if ( n = n ? Di ( n ) : { } , n . value = t . value , ! n . tabindex && t . tabIndex && ( n . tabindex = t . tabIndex ) , ! n . placeholder && t . placeholder && ( n . placeholder = t . placeholder ) , null == n . autofocus ) { var i = _i ( ) ; n . autofocus = i == t || null != t . getAttribute ( "autofocus" ) && i == document . body } if ( t . form && ( Ca ( t . form , "submit" , r ) , ! n . leaveSubmitMethodAlone ) ) { var o = t . form , a = o . submit ; try { var l = o . submit = function ( ) { r ( ) , o . submit = a , o . submit ( ) , o . submit = l } } catch ( s ) { } } n . finishInit = function ( e ) { e . save = r , e . getTextArea = function ( ) { return t } , e . toTextArea = function ( ) { e . toTextArea = isNaN , r ( ) , t . parentNode . removeChild ( e . getWrapperElement ( ) ) , t . style . display = "" , t . form && ( Sa ( t . form , "submit" , r ) , "function" == typeof t . form . submit && ( t . form . submit = a ) ) } } , t . style . display = "none" ; var c = e ( function ( e ) { t . parentNode . insertBefore ( e , t . nextSibling ) } , n ) ; return c } ; var sa = e . StringStream = function ( e , t ) { this . pos = this . start = 0 , this . string = e , this . tabSize = t || 8 , this . lastColumnPos = this . lastColumnValue = 0 , this . lineStart = 0 } ; sa . prototype = { eol : function ( ) { return this . pos >= this . string . length } , sol : function ( ) { return this . pos == this . lineStart } , peek : function ( ) { return this . string . charAt ( this . pos ) || void 0 } , next : function ( ) { return this . pos < this . string . length ? this . string . charAt ( this . pos ++ ) : void 0 } , eat : function ( e ) { var t = this . string . charAt ( this . pos ) ; if ( "string" == typeof e ) var n = t == e ; else var n = t && ( e . test ? e . test ( t ) : e ( t ) ) ; return n ? ( ++ this . pos , t ) : void 0 } , eatWhile : function ( e ) { for ( var t = this . pos ; this . eat ( e ) ; ) ; return this . pos > t } , eatSpace : function ( ) { for ( var e = this . pos ; /[\s\u00a0]/ . test ( this . string . charAt ( this . pos ) ) ; ) ++ this . pos ; return this . pos > e } , skipToEnd : function ( ) { this . pos = this . string . length } , skipTo : function ( e ) { var t = this . string . indexOf ( e , this . pos ) ; return t > - 1 ? ( this . pos = t , ! 0 ) : void 0 } , backUp : function ( e ) { this . pos -= e } , column : function ( ) { return this . lastColumnPos < this . start && ( this . lastColumnValue = za ( this . string , this . start , this . tabSize , this . lastColumnPos , this . lastColumnValue ) , this . lastColumnPos = this . start ) , this . lastColumnValue - ( this . lineStart ? za ( this . string , this . lineStart , this . tabSize ) : 0 ) } , indentation : function ( ) { return za ( this . string , null , this . tabSize ) - ( this . lineStart ? za ( this . string , this . lineStart , this . tabSize ) : 0 ) } , match : function ( e , t , n ) { if ( "string" != typeof e ) { var r = this . string . slice ( this . pos ) . match ( e ) ; return r && r . index > 0 ? null : ( r && t !== ! 1 && ( this . pos += r [ 0 ] . length ) , r ) } var i = function ( e ) { return n ? e . toLowerCase ( ) : e } , o = this . string . substr ( this . pos , e . length ) ; return i ( o ) == i ( e ) ? ( t !== ! 1 && ( this . pos += e . length ) , ! 0 ) : void 0 } , current : function ( ) { return this . string . slice ( this . start , this . pos ) } , hideFirstChars : function ( e , t ) { this . lineStart += e ; try { return t ( ) } finally { this . lineStart -= e } } } ; var ca = 0 , ua = e . TextMarker = function ( e , t ) { this . lines = [ ] , this . type = t , this . doc = e , this . id = ++ ca } ; Si ( ua ) , ua . prototype . clear = function ( ) { if ( ! this . explicitlyCleared ) { var e = this . doc . cm , t = e && ! e . curOp ; if ( t && yt ( e ) , Ci ( this , "clear" ) ) { var n = this . find ( ) ; n && bi ( this , "clear" , n . from , n . to ) } for ( var r = null , i = null , o = 0 ; o < this . lines . length ; ++ o ) { var a = this . lines [ o ] , l = Yn ( a . markedSpans , this ) ; e && ! this . collapsed ? Wt ( e , Zr ( a ) , "text" ) : e && ( null != l . to && ( i = Zr ( a ) ) , null != l . from && ( r = Zr ( a ) ) ) , a . markedSpans = Zn ( a . markedSpans , l ) , null == l . from && this . collapsed && ! yr ( this . doc , a ) && e && Yr ( a , gt ( e . display ) ) } if ( e && this . collapsed && ! e . options . lineWrapping ) for ( var o = 0 ; o < this . lines . length ; ++ o ) { var s = pr ( this . lines [ o ] ) , c = f ( s ) ; c > e . display . maxLineLength && ( e . display . maxLine = s , e . display . maxLineLength = c , e . display . maxLineChanged = ! 0 ) } null != r && e && this . collapsed && Dt ( e , r , i + 1 ) , this . lines . length = 0 , this . explicitlyCleared = ! 0 , this . atomic && this . doc . cantEdit && ( this . doc . cantEdit = ! 1 , e && Oe ( e . doc ) ) , e && bi ( e , "markerCleared" , e , this ) , t && xt ( e ) , this . parent && this . parent . clear ( ) } } , ua . prototype . find = function ( e , t ) { null == e && "bookmark" == this . type && ( e = 1 ) ; for ( var n , r , i = 0 ; i < this . lines . length ; ++ i ) { var o = this . lines [ i ] , a = Yn ( o . markedSpans , this ) ; if ( null != a . from && ( n = Po ( t ? o : Zr ( o ) , a . from ) , - 1 == e ) ) return n ; if ( null != a . to && ( r = Po ( t ? o : Zr ( o ) , a . to ) , 1 == e ) ) return r } return n && { from : n , to : r } } , ua . prototype . changed = function ( ) { var e = this . find ( - 1 , ! 0 ) , t = this , n = this . doc . cm ; e && n && Tt ( n , function ( ) { var r = e . line , i = Zr ( e . line ) , o = Ze ( n , i ) ; if ( o && ( rt ( o ) , n . curOp . selectionChanged = n . curOp . forceUpdate = ! 0 ) , n . cu
2015-05-04 15:53:29 +08:00
2015-05-15 12:58:13 +08:00
var i = o ( e , n , e . getCursor ( ) ) , a = function ( ) { var t , r = i . from ( ) ; ! ( t = i . findNext ( ) ) && ( i = o ( e , n ) , ! ( t = i . findNext ( ) ) || r && i . from ( ) . line == r . line && i . from ( ) . ch == r . ch ) || ( e . setSelection ( i . from ( ) , i . to ( ) ) , e . scrollIntoView ( { from : i . from ( ) , to : i . to ( ) } ) , l ( e , g , "Replace?" , [ function ( ) { s ( t ) } , a ] ) ) } , s = function ( e ) { i . replace ( "string" == typeof n ? r : r . replace ( /\$(\d)/g , function ( t , n ) { return e [ n ] } ) , "+input" ) , a ( ) } ; a ( ) } } ) ) } ) } } var h = 'Search: <input type="text" style="width: 10em" class="CodeMirror-search-field"/> <span style="color: #888" class="CodeMirror-search-hint">(Use /re/ syntax for regexp search)</span>' , p = 'Replace: <input type="text" style="width: 10em" class="CodeMirror-search-field"/> <span style="color: #888" class="CodeMirror-search-hint">(Use /re/ syntax for regexp search)</span>' , m = 'With: <input type="text" style="width: 10em" class="CodeMirror-search-field"/>' , g = "Replace? <button>Yes</button> <button>No</button> <button>Stop</button>" ; e . commands . find = function ( e ) { f ( e ) , c ( e ) } , e . commands . findNext = c , e . commands . findPrev = function ( e ) { c ( e , ! 0 ) } , e . commands . clearSearch = f , e . commands . replace = d , e . commands . replaceAll = function ( e ) { d ( e , ! 0 ) } } ) , function ( e ) { "object" == typeof exports && "object" == typeof module ? e ( require ( "../../lib/codemirror" ) , require ( "./searchcursor" ) , require ( "../scroll/annotatescrollbar" ) ) : "function" == typeof define && define . amd ? define ( [ "../../lib/codemirror" , "./searchcursor" , "../scroll/annotatescrollbar" ] , e ) : e ( CodeMirror ) } ( function ( e ) { "use strict" ; function t ( e , t , n , r ) { this . cm = e , this . options = r ; var i = { listenForChanges : ! 1 } ; for ( var o in r ) i [ o ] = r [ o ] ; i . className || ( i . className = "CodeMirror-search-match" ) , this . annotation = e . annotateScrollbar ( i ) , this . query = t , this . caseFold = n , this . gap = { from : e . firstLine ( ) , to : e . lastLine ( ) + 1 } , this . matches = [ ] , this . update = null , this . findMatches ( ) , this . annotation . update ( this . matches ) ; var a = this ; e . on ( "change" , this . changeHandler = function ( e , t ) { a . onChange ( t ) } ) } function n ( e , t , n ) { return t >= e ? e : Math . max ( t , e + n ) } e . defineExtension ( "showMatchesOnScrollbar" , function ( e , n , r ) { return "string" == typeof r && ( r = { className : r } ) , r || ( r = { } ) , new t ( this , e , n , r ) } ) ; var r = 1e3 ; t . prototype . findMatches = function ( ) { if ( this . gap ) { for ( var t = 0 ; t < this . matches . length ; t ++ ) { var n = this . matches [ t ] ; if ( n . from . line >= this . gap . to ) break ; n . to . line >= this . gap . from && this . matches . splice ( t -- , 1 ) } for ( var i = this . cm . getSearchCursor ( this . query , e . Pos ( this . gap . from , 0 ) , this . caseFold ) , o = this . options && this . options . maxMatches || r ; i . findNext ( ) ; ) { var n = { from : i . from ( ) , to : i . to ( ) } ; if ( n . from . line >= this . gap . to ) break ; if ( this . matches . splice ( t ++ , 0 , n ) , this . matches . length > o ) break } this . gap = null } } , t . prototype . onChange = function ( t ) { var r = t . from . line , i = e . changeEnd ( t ) . line , o = i - t . to . line ; if ( this . gap ? ( this . gap . from = Math . min ( n ( this . gap . from , r , o ) , t . from . line ) , this . gap . to = Math . max ( n ( this . gap . to , r , o ) , t . from . line ) ) : this . gap = { from : t . from . line , to : i + 1 } , o ) for ( var a = 0 ; a < this . matches . length ; a ++ ) { var l = this . matches [ a ] , s = n ( l . from . line , r , o ) ; s != l . from . line && ( l . from = e . Pos ( s , l . from . ch ) ) ; var c = n ( l . to . line , r , o ) ; c != l . to . line && ( l . to = e . Pos ( c , l . to . ch ) ) } clearTimeout ( this . update ) ; var u = this ; this . update = setTimeout ( function ( ) { u . updateAfterChange ( ) } , 250 ) } , t . prototype . updateAfterChange = function ( ) { this . findMatches ( ) , this . annotation . update ( this . matches ) } , t . prototype . clear = function ( ) { this . cm . off ( "change" , this . changeHandler ) , this . annotation . clear ( ) } } ) , 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 ( t , n , r ) { function i ( t ) { var n = e . wheelEventPixels ( t ) [ "horizontal" == o . orientation ? "x" : "y" ] , r = o . pos ; o . moveTo ( o . pos + n ) , o . pos != r && e . e _preventDefault ( t ) } this . orientation = n , this . scroll = r , this . screen = this . total = this . size = 1 , this . pos = 0 , this . node = document . createElement ( "div" ) , this . node . className = t + "-" + n , this . inner = this . node . appendChild ( document . createElement ( "div" ) ) ; var o = this ; e . on ( this . inner , "mousedown" , function ( t ) { function n ( ) { e . off ( document , "mousemove" , r ) , e . off ( document , "mouseup" , n ) } function r ( e ) { return 1 != e . which ? n ( ) : void o . moveTo ( l + ( e [ i ] - a ) * ( o . total / o . size ) ) } if ( 1 == t . which ) { e . e _preventDefault ( t ) ; var i = " horizon
to : a } } ) , e . registerHelper ( "fold" , "include" , function ( t , n ) { function r ( n ) { if ( n < t . firstLine ( ) || n > t . lastLine ( ) ) return null ; var r = t . getTokenAt ( e . Pos ( n , 1 ) ) ; return /\S/ . test ( r . string ) || ( r = t . getTokenAt ( e . Pos ( n , r . end + 1 ) ) ) , "meta" == r . type && "#include" == r . string . slice ( 0 , 8 ) ? r . start + 8 : void 0 } var n = n . line , i = r ( n ) ; if ( null == i || null != r ( n - 1 ) ) return null ; for ( var o = n ; ; ) { var a = r ( o + 1 ) ; if ( null == a ) break ; ++ o } return { from : e . Pos ( n , i + 1 ) , to : t . clipPos ( e . Pos ( o ) ) } } ) } ) , function ( e ) { "object" == typeof exports && "object" == typeof module ? e ( require ( "../../lib/codemirror" ) , require ( "./foldcode" ) ) : "function" == typeof define && define . amd ? define ( [ "../../lib/codemirror" , "./foldcode" ] , e ) : e ( CodeMirror ) } ( function ( e ) { "use strict" ; function t ( e ) { this . options = e , this . from = this . to = 0 } function n ( e ) { return e === ! 0 && ( e = { } ) , null == e . gutter && ( e . gutter = "CodeMirror-foldgutter" ) , null == e . indicatorOpen && ( e . indicatorOpen = "CodeMirror-foldgutter-open" ) , null == e . indicatorFolded && ( e . indicatorFolded = "CodeMirror-foldgutter-folded" ) , e } function r ( e , t ) { for ( var n = e . findMarksAt ( f ( t ) ) , r = 0 ; r < n . length ; ++ r ) if ( n [ r ] . _ _isFold && n [ r ] . find ( ) . from . line == t ) return n [ r ] } function i ( e ) { if ( "string" == typeof e ) { var t = document . createElement ( "div" ) ; return t . className = e + " CodeMirror-guttermarker-subtle" , t } return e . cloneNode ( ! 0 ) } function o ( e , t , n ) { var o = e . state . foldGutter . options , a = t , l = e . foldOption ( o , "minFoldSize" ) , s = e . foldOption ( o , "rangeFinder" ) ; e . eachLine ( t , n , function ( t ) { var n = null ; if ( r ( e , a ) ) n = i ( o . indicatorFolded ) ; else { var c = f ( a , 0 ) , u = s && s ( e , c ) ; u && u . to . line - u . from . line >= l && ( n = i ( o . indicatorOpen ) ) } e . setGutterMarker ( t , o . gutter , n ) , ++ a } ) } function a ( e ) { var t = e . getViewport ( ) , n = e . state . foldGutter ; n && ( e . operation ( function ( ) { o ( e , t . from , t . to ) } ) , n . from = t . from , n . to = t . to ) } function l ( e , t , n ) { var i = e . state . foldGutter ; if ( i ) { var o = i . options ; if ( n == o . gutter ) { var a = r ( e , t ) ; a ? a . clear ( ) : e . foldCode ( f ( t , 0 ) , o . rangeFinder ) } } } function s ( e ) { var t = e . state . foldGutter ; if ( t ) { var n = t . options ; t . from = t . to = 0 , clearTimeout ( t . changeUpdate ) , t . changeUpdate = setTimeout ( function ( ) { a ( e ) } , n . foldOnChangeTimeSpan || 600 ) } } function c ( e ) { var t = e . state . foldGutter ; if ( t ) { var n = t . options ; clearTimeout ( t . changeUpdate ) , t . changeUpdate = setTimeout ( function ( ) { var n = e . getViewport ( ) ; t . from == t . to || n . from - t . to > 20 || t . from - n . to > 20 ? a ( e ) : e . operation ( function ( ) { n . from < t . from && ( o ( e , n . from , t . from ) , t . from = n . from ) , n . to > t . to && ( o ( e , t . to , n . to ) , t . to = n . to ) } ) } , n . updateViewportTimeSpan || 400 ) } } function u ( e , t ) { var n = e . state . foldGutter ; if ( n ) { var r = t . line ; r >= n . from && r < n . to && o ( e , r , r + 1 ) } } e . defineOption ( "foldGutter" , ! 1 , function ( r , i , o ) { o && o != e . Init && ( r . clearGutter ( r . state . foldGutter . options . gutter ) , r . state . foldGutter = null , r . off ( "gutterClick" , l ) , r . off ( "change" , s ) , r . off ( "viewportChange" , c ) , r . off ( "fold" , u ) , r . off ( "unfold" , u ) , r . off ( "swapDoc" , a ) ) , i && ( r . state . foldGutter = new t ( n ( i ) ) , a ( r ) , r . on ( "gutterClick" , l ) , r . on ( "change" , s ) , r . on ( "viewportChange" , c ) , r . on ( "fold" , u ) , r . on ( "unfold" , u ) , r . on ( "swapDoc" , a ) ) } ) ; var f = e . Pos } ) , 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 . registerHelper ( "fold" , "markdown" , function ( t , n ) { function r ( n ) { var r = t . getTokenTypeAt ( e . Pos ( n , 0 ) ) ; return r && /\bheader\b/ . test ( r ) } function i ( e , t , n ) { var i = t && t . match ( /^#+/ ) ; return i && r ( e ) ? i [ 0 ] . length : ( i = n && n . match ( /^[=\-]+\s*$/ ) , i && r ( e + 1 ) ? "=" == n [ 0 ] ? 1 : 2 : o ) } var o = 100 , a = t . getLine ( n . line ) , l = t . getLine ( n . line + 1 ) , s = i ( n . line , a , l ) ; if ( s === o ) return void 0 ; for ( var c = t . lastLine ( ) , u = n . line , f = t . getLine ( u + 2 ) ; c > u && ! ( i ( u + 1 , l , f ) <= s ) ; ) ++ u , l = f , f = t . getLine ( u + 2 ) ; return { from : e . Pos ( n . line , a . length ) , to : e . Pos ( u , t . getLine ( u ) . length ) } } ) } ) , 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 ) { return e . line - t . line || e . ch - t . ch } function n ( e , t , n , r ) { this . line = t , this . ch = n , this . cm = e , this . text = e . getLine ( t ) , this . min = r ? r . from : e . firstLine ( ) , this . max = r ? r . to - 1 : e . lastLine ( ) } function r ( e , t ) { var n = e . cm . getTokenTypeAt ( d ( e . line , t ) ) ; return n && /\btag\b/ . test ( n ) } function i ( e ) { return e . line >= e . max ? vo
p ( ie ) ) : ( Oe . marked = "property" , "get" == t || "set" == t ? p ( oe , ee , ie ) : p ( ee , ie ) ) : "*" == t ? ( Oe . marked = "keyword" , p ( ie ) ) : ";" == e ? p ( ie ) : "}" == e ? p ( ) : void 0 } function oe ( e ) { return "variable" != e ? h ( ) : ( Oe . marked = "property" , p ( ) ) } function ae ( e , t ) { return "string" == e ? p ( w ) : "variable" == e ? ( m ( t ) , p ( fe ) ) : void 0 } function le ( e , t ) { return "*" == t ? ( Oe . marked = "keyword" , p ( fe , x ( ";" ) ) ) : "default" == t ? ( Oe . marked = "keyword" , p ( k , x ( ";" ) ) ) : h ( w ) } function se ( e ) { return "string" == e ? p ( ) : h ( ce , fe ) } function ce ( e , t ) { return "{" == e ? B ( ce , "}" ) : ( "variable" == e && m ( t ) , "*" == t && ( Oe . marked = "keyword" ) , p ( ue ) ) } function ue ( e , t ) { return "as" == t ? ( Oe . marked = "keyword" , p ( ce ) ) : void 0 } function fe ( e , t ) { return "from" == t ? ( Oe . marked = "keyword" , p ( k ) ) : void 0 } function de ( e ) { return "]" == e ? p ( ) : h ( C , he ) } function he ( e ) { return "for" == e ? h ( pe , x ( "]" ) ) : "," == e ? p ( H ( M , "]" ) ) : h ( H ( C , "]" ) ) } function pe ( e ) { return "for" == e ? p ( X , pe ) : "if" == e ? p ( k , pe ) : void 0 } function me ( e , t ) { return "operator" == e . lastType || "," == e . lastType || Le . test ( t . charAt ( 0 ) ) || /[,.]/ . test ( t . charAt ( 0 ) ) } var ge , ve , ye = t . indentUnit , be = n . statementIndent , xe = n . jsonld , we = n . json || xe , ke = n . typescript , Ce = n . wordCharacters || /[\w$\xa1-\uffff]/ , Se = function ( ) { function e ( e ) { return { type : e , style : "keyword" } } var t = e ( "keyword a" ) , n = e ( "keyword b" ) , r = e ( "keyword c" ) , i = e ( "operator" ) , o = { type : "atom" , style : "atom" } , a = { "if" : e ( "if" ) , "while" : t , "with" : t , "else" : n , "do" : n , "try" : n , "finally" : n , "return" : r , "break" : r , "continue" : r , "new" : r , "delete" : r , "throw" : r , "debugger" : r , "var" : e ( "var" ) , "const" : e ( "var" ) , let : e ( "var" ) , "function" : e ( "function" ) , "catch" : e ( "catch" ) , "for" : e ( "for" ) , "switch" : e ( "switch" ) , "case" : e ( "case" ) , "default" : e ( "default" ) , "in" : i , "typeof" : i , "instanceof" : i , "true" : o , "false" : o , "null" : o , undefined : o , NaN : o , Infinity : o , "this" : e ( "this" ) , module : e ( "module" ) , "class" : e ( "class" ) , "super" : e ( "atom" ) , "yield" : r , "export" : e ( "export" ) , "import" : e ( "import" ) , "extends" : r } ; if ( ke ) { var l = { type : "variable" , style : "variable-3" } , s = { "interface" : e ( "interface" ) , "extends" : e ( "extends" ) , constructor : e ( "constructor" ) , "public" : e ( "public" ) , "private" : e ( "private" ) , "protected" : e ( "protected" ) , "static" : e ( "static" ) , string : l , number : l , bool : l , any : l } ; for ( var c in s ) a [ c ] = s [ c ] } return a } ( ) , Le = /[+\-*&%=<>!?|~^]/ , Me = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/ , Te = "([{}])" , Ae = { atom : ! 0 , number : ! 0 , variable : ! 0 , string : ! 0 , regexp : ! 0 , "this" : ! 0 , "jsonld-keyword" : ! 0 } , Oe = { state : null , column : null , marked : null , cc : null } , Ne = { name : "this" , next : { name : "arguments" } } ; return b . lex = ! 0 , { startState : function ( e ) { var t = { tokenize : o , lastType : "sof" , cc : [ ] , lexical : new u ( ( e || 0 ) - ye , 0 , "block" , ! 1 ) , localVars : n . localVars , context : n . localVars && { vars : n . localVars } , indented : 0 } ; return n . globalVars && "object" == typeof n . globalVars && ( t . globalVars = n . globalVars ) , t } , token : function ( e , t ) { if ( e . sol ( ) && ( t . lexical . hasOwnProperty ( "align" ) || ( t . lexical . align = ! 1 ) , t . indented = e . indentation ( ) , c ( e , t ) ) , t . tokenize != l && e . eatSpace ( ) ) return null ; var n = t . tokenize ( e , t ) ; return "comment" == ge ? n : ( t . lastType = "operator" != ge || "++" != ve && "--" != ve ? ge : "incdec" , d ( t , n , ge , ve , e ) ) } , indent : function ( t , r ) { if ( t . tokenize == l ) return e . Pass ; if ( t . tokenize != o ) return 0 ; var i = r && r . charAt ( 0 ) , a = t . lexical ; if ( ! /^\s*else\b/ . test ( r ) ) for ( var s = t . cc . length - 1 ; s >= 0 ; -- s ) { var c = t . cc [ s ] ; if ( c == b ) a = a . prev ; else if ( c != $ ) break } "stat" == a . type && "}" == i && ( a = a . prev ) , be && ")" == a . type && "stat" == a . prev . type && ( a = a . prev ) ; var u = a . type , f = i == u ; return "vardef" == u ? a . indented + ( "operator" == t . lastType || "," == t . lastType ? a . info + 1 : 0 ) : "form" == u && "{" == i ? a . indented : "form" == u ? a . indented + ye : "stat" == u ? a . indented + ( me ( t , r ) ? be || ye : 0 ) : "switch" != a . info || f || 0 == n . doubleIndentSwitch ? a . align ? a . column + ( f ? 0 : 1 ) : a . indented + ( f ? 0 : ye ) : a . indented + ( /^(?:case|default)\b/ . test ( r ) ? ye : 2 * ye ) } , electricInput : /^\s*(?:case .*?:|default:|\{|\})$/ , blockCommentStart : we ? null : "/*" , blockCommentEnd : we ? null : "*/" , lineComment : we ? null : "//" , fold : "brace" , closeBrackets : "()[]{}''\"\"``" , helperType : we ? "json" : "javascript" , jsonldMode : xe , jsonMode : we } } ) , e . registerHelper ( "wordChars" , "javascript" , /[\w$]/ ) , e . defineMIME ( "text/javascript" , "javascript" ) , e . defineMIME ( "text/ecmascript" , "javascript" ) , e . defineMIME ( "application/javascript" , "javascript" ) , e . defineMIME ( "application/x-javascript" , "javascript" ) , e . defineMIME ( " application / ecmas
2015-05-04 15:53:29 +08:00
2015-05-15 12:58:13 +08:00
} function i ( e ) { return function ( t , n ) { for ( var r , i = ! 1 , o = ! 1 ; null != ( r = t . next ( ) ) ; ) { if ( r == e && ! i ) { o = ! 0 ; break } i = ! i && "\\" == r } return ( o || ! i && ! y ) && ( n . tokenize = null ) , "string" } } function o ( e , t ) { for ( var n , r = ! 1 ; n = e . next ( ) ; ) { if ( "/" == n && r ) { t . tokenize = null ; break } r = "*" == n } return "comment" } function a ( e , t , n , r , i ) { this . indented = e , this . column = t , this . type = n , this . align = r , this . prev = i } function l ( e , t , n ) { var r = e . indented ; return e . context && "statement" == e . context . type && ( r = e . context . indented ) , e . context = new a ( r , t , n , null , e . context ) } function s ( e ) { var t = e . context . type ; return ( ")" == t || "]" == t || "}" == t ) && ( e . indented = e . context . indented ) , e . context = e . context . prev } var c , u = t . indentUnit , f = n . statementIndentUnit || u , d = n . dontAlignCalls , h = n . keywords || { } , p = n . builtin || { } , m = n . blockKeywords || { } , g = n . atoms || { } , v = n . hooks || { } , y = n . multiLineStrings , b = n . indentStatements !== ! 1 , x = /[+\-*&%=<>!?|\/]/ ; return { startState : function ( e ) { return { tokenize : null , context : new a ( ( e || 0 ) - u , 0 , "top" , ! 1 ) , indented : 0 , startOfLine : ! 0 } } , token : function ( e , t ) { var n = t . context ; if ( e . sol ( ) && ( null == n . align && ( n . align = ! 1 ) , t . indented = e . indentation ( ) , t . startOfLine = ! 0 ) , e . eatSpace ( ) ) return null ; c = null ; var i = ( t . tokenize || r ) ( e , t ) ; if ( "comment" == i || "meta" == i ) return i ; if ( null == n . align && ( n . align = ! 0 ) , ";" != c && ":" != c && "," != c || "statement" != n . type ) if ( "{" == c ) l ( t , e . column ( ) , "}" ) ; else if ( "[" == c ) l ( t , e . column ( ) , "]" ) ; else if ( "(" == c ) l ( t , e . column ( ) , ")" ) ; else if ( "}" == c ) { for ( ; "statement" == n . type ; ) n = s ( t ) ; for ( "}" == n . type && ( n = s ( t ) ) ; "statement" == n . type ; ) n = s ( t ) } else c == n . type ? s ( t ) : b && ( ( "}" == n . type || "top" == n . type ) && ";" != c || "statement" == n . type && "newstatement" == c ) && l ( t , e . column ( ) , "statement" ) ; else s ( t ) ; return t . startOfLine = ! 1 , i } , indent : function ( t , n ) { if ( t . tokenize != r && null != t . tokenize ) return e . Pass ; var i = t . context , o = n && n . charAt ( 0 ) ; "statement" == i . type && "}" == o && ( i = i . prev ) ; var a = o == i . type ; return "statement" == i . type ? i . indented + ( "{" == o ? 0 : f ) : ! i . align || d && ")" == i . type ? ")" != i . type || a ? i . indented + ( a ? 0 : u ) : i . indented + f : i . column + ( a ? 0 : 1 ) } , electricChars : "{}" , blockCommentStart : "/*" , blockCommentEnd : "*/" , lineComment : "//" , fold : "brace" } } ) ; var s = "auto if break int case long char register continue return default short do sizeof double static else struct switch extern typedef float union for unsigned goto while enum void const signed volatile" ; a ( [ "text/x-csrc" , "text/x-c" , "text/x-chdr" ] , { name : "clike" , keywords : t ( s ) , blockKeywords : t ( "case do else for if switch while struct" ) , atoms : t ( "null" ) , hooks : { "#" : n } , modeProps : { fold : [ "brace" , "include" ] } } ) , a ( [ "text/x-c++src" , "text/x-c++hdr" ] , { name : "clike" , keywords : t ( s + " asm dynamic_cast namespace reinterpret_cast try bool explicit new static_cast typeid catch operator template typename class friend private this using const_cast inline public throw virtual delete mutable protected wchar_t alignas alignof constexpr decltype nullptr noexcept thread_local final static_assert override" ) , blockKeywords : t ( "catch class do else finally for if struct switch try while" ) , atoms : t ( "true false null" ) , hooks : { "#" : n , u : r , U : r , L : r , R : r } , modeProps : { fold : [ "brace" , "include" ] } } ) , a ( "text/x-java" , { name : "clike" , keywords : t ( "abstract assert boolean break byte case catch char class const continue default do double else enum extends final finally float for goto if implements import instanceof int interface long native new package private protected public return short static strictfp super switch synchronized this throw throws transient try void volatile while" ) , blockKeywords : t ( "catch class do else finally for if switch try while" ) , atoms : t ( "true false null" ) , hooks : { "@" : function ( e ) { return e . eatWhile ( /[\w\$_]/ ) , "meta" } } , modeProps : { fold : [ "brace" , "import" ] } } ) , a ( "text/x-csharp" , { name : "clike" , keywords : t ( " abstract as 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 sel
2015-05-04 15:53:29 +08:00
2015-05-15 12:58:13 +08:00
if ( t ) for ( var n = 0 ; n < t . length ; n ++ ) t [ n ] . clear ( ) ; t . length = 0 } , f [ u [ "Alt-F2" ] = "selectBookmarks" ] = function ( e ) { var t = e . state . sublimeBookmarks , n = [ ] ; if ( t ) for ( var r = 0 ; r < t . length ; r ++ ) { var i = t [ r ] . find ( ) ; i ? n . push ( { anchor : i . from , head : i . to } ) : t . splice ( r -- , 0 ) } n . length && e . setSelections ( n , 0 ) } , u [ "Alt-Q" ] = "wrapLines" ; var v = p + "K " ; u [ v + p + "Backspace" ] = "delLineLeft" , f [ u . Backspace = "smartBackspace" ] = function ( t ) { if ( t . somethingSelected ( ) ) return e . Pass ; var n = t . getCursor ( ) , r = t . getRange ( { line : n . line , ch : 0 } , n ) , i = e . countColumn ( r , null , t . getOption ( "tabSize" ) ) ; return r && ! /\S/ . test ( r ) && i % t . getOption ( "indentUnit" ) == 0 ? t . indentSelection ( "subtract" ) : e . Pass } , f [ u [ v + p + "K" ] = "delLineRight" ] = function ( e ) { e . operation ( function ( ) { for ( var t = e . listSelections ( ) , n = t . length - 1 ; n >= 0 ; n -- ) e . replaceRange ( "" , t [ n ] . anchor , d ( t [ n ] . to ( ) . line ) , "+delete" ) ; e . scrollIntoView ( ) } ) } , f [ u [ v + p + "U" ] = "upcaseAtCursor" ] = function ( e ) { l ( e , function ( e ) { return e . toUpperCase ( ) } ) } , f [ u [ v + p + "L" ] = "downcaseAtCursor" ] = function ( e ) { l ( e , function ( e ) { return e . toLowerCase ( ) } ) } , f [ u [ v + p + "Space" ] = "setSublimeMark" ] = function ( e ) { e . state . sublimeMark && e . state . sublimeMark . clear ( ) , e . state . sublimeMark = e . setBookmark ( e . getCursor ( ) ) } , f [ u [ v + p + "A" ] = "selectToSublimeMark" ] = function ( e ) { var t = e . state . sublimeMark && e . state . sublimeMark . find ( ) ; t && e . setSelection ( e . getCursor ( ) , t ) } , f [ u [ v + p + "W" ] = "deleteToSublimeMark" ] = function ( t ) { var n = t . state . sublimeMark && t . state . sublimeMark . find ( ) ; if ( n ) { var r = t . getCursor ( ) , i = n ; if ( e . cmpPos ( r , i ) > 0 ) { var o = i ; i = r , r = o } t . state . sublimeKilled = t . getRange ( r , i ) , t . replaceRange ( "" , r , i , "+delete" ) } } , f [ u [ v + p + "X" ] = "swapWithSublimeMark" ] = function ( e ) { var t = e . state . sublimeMark && e . state . sublimeMark . find ( ) ; t && ( e . state . sublimeMark . clear ( ) , e . state . sublimeMark = e . setBookmark ( e . getCursor ( ) ) , e . setCursor ( t ) ) } , f [ u [ v + p + "Y" ] = "sublimeYank" ] = function ( e ) { null != e . state . sublimeKilled && e . replaceSelection ( e . state . sublimeKilled , null , "paste" ) } , u [ v + p + "G" ] = "clearBookmarks" , f [ u [ v + p + "C" ] = "showInCenter" ] = function ( e ) { var t = e . cursorCoords ( null , "local" ) ; e . scrollTo ( null , ( t . top + t . bottom ) / 2 - e . getScrollInfo ( ) . clientHeight / 2 ) } , f [ u [ "Shift-Alt-Up" ] = "selectLinesUpward" ] = function ( e ) { e . operation ( function ( ) { for ( var t = e . listSelections ( ) , n = 0 ; n < t . length ; n ++ ) { var r = t [ n ] ; r . head . line > e . firstLine ( ) && e . addSelection ( d ( r . head . line - 1 , r . head . ch ) ) } } ) } , f [ u [ "Shift-Alt-Down" ] = "selectLinesDownward" ] = function ( e ) { e . operation ( function ( ) { for ( var t = e . listSelections ( ) , n = 0 ; n < t . length ; n ++ ) { var r = t [ n ] ; r . head . line < e . lastLine ( ) && e . addSelection ( d ( r . head . line + 1 , r . head . ch ) ) } } ) } , f [ u [ p + "F3" ] = "findUnder" ] = function ( e ) { c ( e , ! 0 ) } , f [ u [ "Shift-" + p + "F3" ] = "findUnderPrevious" ] = function ( e ) { c ( e , ! 1 ) } , f [ u [ "Alt-F3" ] = "findAllUnder" ] = function ( e ) { var t = s ( e ) ; if ( t ) { for ( var n = e . getSearchCursor ( t . query ) , r = [ ] , i = - 1 ; n . findNext ( ) ; ) r . push ( { anchor : n . from ( ) , head : n . to ( ) } ) , n . from ( ) . line <= t . from . line && n . from ( ) . ch <= t . from . ch && i ++ ; e . setSelections ( r , i ) } } , u [ "Shift-" + p + "[" ] = "fold" , u [ "Shift-" + p + "]" ] = "unfold" , u [ v + p + "0" ] = u [ v + p + "j" ] = "unfoldAll" , u [ p + "I" ] = "findIncremental" , u [ "Shift-" + p + "I" ] = "findIncrementalReverse" , u [ p + "H" ] = "replace" , u . F3 = "findNext" , u [ "Shift-F3" ] = "findPrev" , e . normalizeKeyMap ( u ) } ) ;