(doc, lineNo, from, to, marker)
| 6569 | // overlaps (covers the start or end, but not both) of a new span. |
| 6570 | // Such overlap is not allowed. |
| 6571 | function conflictingCollapsedRange(doc, lineNo, from, to, marker) { |
| 6572 | var line = getLine(doc, lineNo); |
| 6573 | var sps = sawCollapsedSpans && line.markedSpans; |
| 6574 | if (sps) for (var i = 0; i < sps.length; ++i) { |
| 6575 | var sp = sps[i]; |
| 6576 | if (!sp.marker.collapsed) continue; |
| 6577 | var found = sp.marker.find(0); |
| 6578 | var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker); |
| 6579 | var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker); |
| 6580 | if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) continue; |
| 6581 | if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) || |
| 6582 | fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0)) |
| 6583 | return true; |
| 6584 | } |
| 6585 | } |
| 6586 | |
| 6587 | // A visual line is a line as drawn on the screen. Folding, for |
| 6588 | // example, can cause multiple logical lines to appear on the same |
no test coverage detected