(doc, sel, bias, mayClear)
| 2230 | // Return a selection that does not partially select any atomic |
| 2231 | // ranges. |
| 2232 | function skipAtomicInSelection(doc, sel, bias, mayClear) { |
| 2233 | var out; |
| 2234 | for (var i = 0; i < sel.ranges.length; i++) { |
| 2235 | var range = sel.ranges[i]; |
| 2236 | var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i]; |
| 2237 | var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear); |
| 2238 | var newHead = skipAtomic(doc, range.head, old && old.head, bias, mayClear); |
| 2239 | if (out || newAnchor != range.anchor || newHead != range.head) { |
| 2240 | if (!out) out = sel.ranges.slice(0, i); |
| 2241 | out[i] = new Range(newAnchor, newHead); |
| 2242 | } |
| 2243 | } |
| 2244 | return out ? normalizeSelection(out, sel.primIndex) : sel; |
| 2245 | } |
| 2246 | |
| 2247 | function skipAtomicInner(doc, pos, oldPos, dir, mayClear) { |
| 2248 | var line = getLine(doc, pos.line); |
no test coverage detected