nl_tokens: bracketRegex is used to specify which type of bracket to scan should be a regexp e . g . / [[ \ ]] / Note : If where is on an open bracket then this bracket is ignored . Returns false when no bracket was found null when it reached maxScanLines and gave up
pl_tokens: function scanForBracket ( cm , where , dir , style , config ) { var maxScanLen = ( config && config . maxScanLineLength ) || 10000 ; var maxScanLines = ( config && config . maxScanLines ) || 1000 ; var stack = [ ] ; var re = config && config . bracketRegex ? config . bracketRegex : / [(){}[\]] / ; var lineEnd = dir > 0 ? Math . min ( where . line + maxScanLines , cm . lastLine ( ) + 1 ) : Math . max ( cm . firstLine ( ) - 1 , where . line - maxScanLines ) ; for ( var lineNo = where . line ; lineNo != lineEnd ; lineNo += dir ) { var line = cm . getLine ( lineNo ) ; if ( ! line ) continue ; var pos = dir > 0 ? 0 : line . length - 1 , end = dir > 0 ? line . <mask> : - 1 ; if ( line . length > maxScanLen ) continue ; if ( lineNo == where . line ) pos = where . ch - ( dir < 0 ? 1 : 0 ) ; for ( ; pos != end ; pos += dir ) { var ch = line . charAt ( pos ) ; if ( re . test ( ch ) && ( style === undefined || cm . getTokenTypeAt ( Pos ( lineNo , pos + 1 ) ) == style ) ) { var match = matching [ ch ] ; if ( ( match . charAt ( 1 ) == ">" ) == ( dir > 0 ) ) stack . push ( ch ) ; else if ( ! stack . length ) return { pos : Pos ( lineNo , pos ) , ch : ch } ; else stack . pop ( ) ; } } } return lineNo - dir == ( dir > 0 ? cm . lastLine ( ) : cm . firstLine ( ) ) ? false : null ; }