| 9729 | return endOfLine(true, cm, line, lineN, -1) |
| 9730 | } |
| 9731 | function lineStartSmart(cm, pos) { |
| 9732 | var start = lineStart(cm, pos.line) |
| 9733 | var line = getLine(cm.doc, start.line) |
| 9734 | var order = getOrder(line, cm.doc.direction) |
| 9735 | if (!order || order[0].level == 0) { |
| 9736 | var firstNonWS = Math.max(0, line.text.search(/\S/)) |
| 9737 | var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch |
| 9738 | return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky) |
| 9739 | } |
| 9740 | return start |
| 9741 | } |
| 9742 | |
| 9743 | // Run a handler that was bound to a key. |
| 9744 | function doHandleBinding(cm, bound, dropShift) { |