(doc,from,to,options,type)
| 1290 | signalLater(cm,"markerChanged",cm,this$1);});};TextMarker.prototype.attachLine=function(line){if(!this.lines.length&&this.doc.cm){var op=this.doc.cm.curOp;if(!op.maybeHiddenMarkers||indexOf(op.maybeHiddenMarkers,this)==-1) |
| 1291 | {(op.maybeUnhiddenMarkers||(op.maybeUnhiddenMarkers=[])).push(this);}} |
| 1292 | this.lines.push(line);};TextMarker.prototype.detachLine=function(line){this.lines.splice(indexOf(this.lines,line),1);if(!this.lines.length&&this.doc.cm){var op=this.doc.cm.curOp;(op.maybeHiddenMarkers||(op.maybeHiddenMarkers=[])).push(this);}};eventMixin(TextMarker);function markText(doc,from,to,options,type){if(options&&options.shared){return markTextShared(doc,from,to,options,type)} |
| 1293 | if(doc.cm&&!doc.cm.curOp){return operation(doc.cm,markText)(doc,from,to,options,type)} |
| 1294 | var marker=new TextMarker(doc,type),diff=cmp(from,to);if(options){copyObj(options,marker,false);} |
| 1295 | if(diff>0||diff==0&&marker.clearWhenEmpty!==false) |
| 1296 | {return marker} |
| 1297 | if(marker.replacedWith){marker.collapsed=true;marker.widgetNode=eltP("span",[marker.replacedWith],"CodeMirror-widget");if(!options.handleMouseEvents){marker.widgetNode.setAttribute("cm-ignore-events","true");} |
| 1298 | if(options.insertLeft){marker.widgetNode.insertLeft=true;}} |
| 1299 | if(marker.collapsed){if(conflictingCollapsedRange(doc,from.line,from,to,marker)||from.line!=to.line&&conflictingCollapsedRange(doc,to.line,from,to,marker)) |
| 1300 | {throw new Error("Inserting collapsed marker partially overlapping an existing one")} |
| 1301 | seeCollapsedSpans();} |
| 1302 | if(marker.addToHistory) |
| 1303 | {addChangeToHistory(doc,{from:from,to:to,origin:"markText"},doc.sel,NaN);} |
| 1304 | var curLine=from.line,cm=doc.cm,updateMaxLine;doc.iter(curLine,to.line+1,function(line){if(cm&&marker.collapsed&&!cm.options.lineWrapping&&visualLine(line)==cm.display.maxLine) |
| 1305 | {updateMaxLine=true;} |
| 1306 | if(marker.collapsed&&curLine!=from.line){updateLineHeight(line,0);} |
| 1307 | addMarkedSpan(line,new MarkedSpan(marker,curLine==from.line?from.ch:null,curLine==to.line?to.ch:null),doc.cm&&doc.cm.curOp);++curLine;});if(marker.collapsed){doc.iter(from.line,to.line+1,function(line){if(lineIsHidden(doc,line)){updateLineHeight(line,0);}});} |
| 1308 | if(marker.clearOnEnter){on(marker,"beforeCursorEnter",function(){return marker.clear();});} |
| 1309 | if(marker.readOnly){seeReadOnlySpans();if(doc.history.done.length||doc.history.undone.length) |
| 1310 | {doc.clearHistory();}} |
| 1311 | if(marker.collapsed){marker.id=++nextMarkerId;marker.atomic=true;} |
| 1312 | if(cm){if(updateMaxLine){cm.curOp.updateMaxLine=true;} |
| 1313 | if(marker.collapsed) |
| 1314 | {regChange(cm,from.line,to.line+1);} |
| 1315 | else if(marker.className||marker.startStyle||marker.endStyle||marker.css||marker.attributes||marker.title) |
| 1316 | {for(var i=from.line;i<=to.line;i++){regLineChange(cm,i,"text");}} |
| 1317 | if(marker.atomic){reCheckSelection(cm.doc);} |
| 1318 | signalLater(cm,"markerAdded",cm,marker);} |
| 1319 | return marker} |
| 1320 | var SharedTextMarker=function(markers,primary){this.markers=markers;this.primary=primary;for(var i=0;i<markers.length;++i) |
| 1321 | {markers[i].parent=this;}};SharedTextMarker.prototype.clear=function(){if(this.explicitlyCleared){return} |
| 1322 | this.explicitlyCleared=true;for(var i=0;i<this.markers.length;++i) |
no test coverage detected