]>
git.r.bdr.sh - rbdr/dotfiles/blob - atom/packages/pretty-json/node_modules/jsonminify/report/assets/scripts/vendor/codemirror/util/match-highlighter.js
1 // Define match-highlighter commands. Depends on searchcursor.js
2 // Use by attaching the following function call to the cursorActivity event:
3 //myCodeMirror.matchHighlight(minChars);
4 // And including a special span.CodeMirror-matchhighlight css class (also optionally a separate one for .CodeMirror-focused -- see demo matchhighlighter.html)
7 var DEFAULT_MIN_CHARS
= 2 ;
9 function MatchHighlightState () {
12 function getMatchHighlightState ( cm
) {
13 return cm
. _matchHighlightState
|| ( cm
. _matchHighlightState
= new MatchHighlightState ());
16 function clearMarks ( cm
) {
17 var state
= getMatchHighlightState ( cm
);
18 for ( var i
= 0 ; i
< state
. marked
. length
; ++ i
)
19 state
. marked
[ i
]. clear ();
23 function markDocument ( cm
, className
, minChars
) {
25 minChars
= ( typeof minChars
!== 'undefined' ? minChars : DEFAULT_MIN_CHARS
);
26 if ( cm
. somethingSelected () && cm
. getSelection (). replace ( /^\s+|\s+$/g , "" ). length
>= minChars
) {
27 var state
= getMatchHighlightState ( cm
);
28 var query
= cm
. getSelection ();
29 cm
. operation ( function () {
30 if ( cm
. lineCount () < 2000 ) { // This is too expensive on big documents.
31 for ( var cursor
= cm
. getSearchCursor ( query
); cursor
. findNext ();) {
32 //Only apply matchhighlight to the matches other than the one actually selected
33 if ( cursor
. from (). line
!== cm
. getCursor ( true ). line
||
34 cursor
. from (). ch
!== cm
. getCursor ( true ). ch
)
35 state
. marked
. push ( cm
. markText ( cursor
. from (), cursor
. to (),
36 { className : className
}));
43 CodeMirror
. defineExtension ( "matchHighlight" , function ( className
, minChars
) {
44 markDocument ( this , className
, minChars
);