(pos, oldLine, oldCh)
| 1413 | selectionChanged = true; |
| 1414 | } |
| 1415 | function skipHidden(pos, oldLine, oldCh) { |
| 1416 | function getNonHidden(dir) { |
| 1417 | var lNo = pos.line + dir, end = dir == 1 ? doc.size : -1; |
| 1418 | while (lNo != end) { |
| 1419 | var line = getLine(lNo); |
| 1420 | if (!line.hidden) { |
| 1421 | var ch = pos.ch; |
| 1422 | if (toEnd || ch > oldCh || ch > line.text.length) ch = line.text.length; |
| 1423 | return {line: lNo, ch: ch}; |
| 1424 | } |
| 1425 | lNo += dir; |
| 1426 | } |
| 1427 | } |
| 1428 | var line = getLine(pos.line); |
| 1429 | var toEnd = pos.ch == line.text.length && pos.ch != oldCh; |
| 1430 | if (!line.hidden) return pos; |
| 1431 | if (pos.line >= oldLine) return getNonHidden(1) || getNonHidden(-1); |
| 1432 | else return getNonHidden(-1) || getNonHidden(1); |
| 1433 | } |
| 1434 | function setCursor(line, ch, user) { |
| 1435 | var pos = clipPos({line: line, ch: ch || 0}); |
| 1436 | (user ? setSelectionUser : setSelection)(pos, pos); |
no test coverage detected