(doc, sel, bias, mayClear)
| 6996 | // Return a selection that does not partially select any atomic |
| 6997 | // ranges. |
| 6998 | function skipAtomicInSelection(doc, sel, bias, mayClear) { |
| 6999 | var out |
| 7000 | for (var i = 0; i < sel.ranges.length; i++) { |
| 7001 | var range = sel.ranges[i] |
| 7002 | var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i] |
| 7003 | var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear) |
| 7004 | var newHead = skipAtomic(doc, range.head, old && old.head, bias, mayClear) |
| 7005 | if (out || newAnchor != range.anchor || newHead != range.head) { |
| 7006 | if (!out) { |
| 7007 | out = sel.ranges.slice(0, i) |
| 7008 | } |
| 7009 | out[i] = new Range(newAnchor, newHead) |
| 7010 | } |
| 7011 | } |
| 7012 | return out ? normalizeSelection(doc.cm, out, sel.primIndex) : sel |
| 7013 | } |
| 7014 | |
| 7015 | function skipAtomicInner(doc, pos, oldPos, dir, mayClear) { |
| 7016 | var line = getLine(doc, pos.line) |
no test coverage detected