forked from phcode-dev/staging.phcode.dev
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathactive-line.js
More file actions
1 lines (1 loc) · 1.73 KB
/
Copy pathactive-line.js
File metadata and controls
1 lines (1 loc) · 1.73 KB
1
!function(mod){"object"==typeof exports&&"object"==typeof module?mod(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],mod):mod(CodeMirror)}(function(CodeMirror){"use strict";var WRAP_CLASS="CodeMirror-activeline",BACK_CLASS="CodeMirror-activeline-background",GUTT_CLASS="CodeMirror-activeline-gutter";function clearActiveLines(cm){for(var i=0;i<cm.state.activeLines.length;i++)cm.removeLineClass(cm.state.activeLines[i],"wrap",WRAP_CLASS),cm.removeLineClass(cm.state.activeLines[i],"background",BACK_CLASS),cm.removeLineClass(cm.state.activeLines[i],"gutter",GUTT_CLASS)}function sameArray(a,b){if(a.length!=b.length)return!1;for(var i=0;i<a.length;i++)if(a[i]!=b[i])return!1;return!0}function updateActiveLines(cm,ranges){for(var active=[],i=0;i<ranges.length;i++){var range=ranges[i],option=cm.getOption("styleActiveLine");if("object"==typeof option&&option.nonEmpty?range.anchor.line==range.head.line:range.empty()){var line=cm.getLineHandleVisualStart(range.head.line);active[active.length-1]!=line&&active.push(line)}}sameArray(cm.state.activeLines,active)||cm.operation(function(){clearActiveLines(cm);for(var i=0;i<active.length;i++)cm.addLineClass(active[i],"wrap",WRAP_CLASS),cm.addLineClass(active[i],"background",BACK_CLASS),cm.addLineClass(active[i],"gutter",GUTT_CLASS);cm.state.activeLines=active})}function selectionChange(cm,sel){updateActiveLines(cm,sel.ranges)}CodeMirror.defineOption("styleActiveLine",!1,function(cm,val,old){var prev=old!=CodeMirror.Init&&old;val!=prev&&(prev&&(cm.off("beforeSelectionChange",selectionChange),clearActiveLines(cm),delete cm.state.activeLines),val&&(cm.state.activeLines=[],updateActiveLines(cm,cm.listSelections()),cm.on("beforeSelectionChange",selectionChange)))})});