(cm, ranges, primIndex)
| 4604 | // build a selection out of it. 'Consumes' ranges array (modifying |
| 4605 | // it). |
| 4606 | function normalizeSelection(cm, ranges, primIndex) { |
| 4607 | var mayTouch = cm && cm.options.selectionsMayTouch; |
| 4608 | var prim = ranges[primIndex]; |
| 4609 | ranges.sort(function (a, b) { return cmp(a.from(), b.from()); }); |
| 4610 | primIndex = indexOf(ranges, prim); |
| 4611 | for (var i = 1; i < ranges.length; i++) { |
| 4612 | var cur = ranges[i], prev = ranges[i - 1]; |
| 4613 | var diff = cmp(prev.to(), cur.from()); |
| 4614 | if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) { |
| 4615 | var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to()); |
| 4616 | var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head; |
| 4617 | if (i <= primIndex) { --primIndex; } |
| 4618 | ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to)); |
| 4619 | } |
| 4620 | } |
| 4621 | return new Selection(ranges, primIndex) |
| 4622 | } |
| 4623 | |
| 4624 | function simpleSelection(anchor, head) { |
| 4625 | return new Selection([new Range(anchor, head || anchor)], 0) |
no test coverage detected