+ return @moveSelectionVisual(selection, count, options) unless selection.isEmpty()
+
+ selection.modifySelection =>
+ @moveCursor(selection.cursor, count, options)
+ return if selection.isEmpty()
+
+ if selection.isReversed()
+ # for backward motion, add the original starting character of the motion
+ {start, end} = selection.getBufferRange()
+ selection.setBufferRange([start, [end.row, end.column + 1]])
+ else
+ # for forward motion, add the ending character of the motion
+ selection.cursor.moveRight()
+
+ moveSelectionVisual: (selection, count, options) ->