+ if new_cursor.y is target_y
+ # both valid, and on the same line, use closest
+ if (@cursor.x - new_cursor.x) < (prev_cursor.x - @cursor.x)
+ @move_cursor new_cursor
+ else
+ @move_cursor prev_cursor
+ else
+ # new_cursor on wrong line, use prev_cursor
+ @move_cursor prev_cursor
+ else
+ # can't go any further prev, use prev_cursor
+ @move_cursor prev_cursor