   @extend()
   defaultCount: null
 
-  getPoint: (cursor) ->
-    new Point(cursor.getBufferRow(), 0)
-
-  moveCursor: (cursor) ->
-    cursor.setBufferPosition(@getPoint(cursor))
+  getPoint: ({row}) ->
+    new Point(row, 0)
+
+  moveCursor: (cursor) ->
+    point = @getPoint(cursor.getBufferPosition())
+    cursor.setBufferPosition(point)
 
 class MoveToLastCharacterOfLine extends Motion
   @extend()

  linewise: true

  moveCursor: (cursor) ->
    cursor.setBufferPosition(@getPoint(cursor))

  getCount: ->
    super - 1

  getPoint: (cursor) ->
    row = cursor.getBufferRow() + @getCount()
    [row, 0]

class MoveToRelativeLineWithMinimum extends MoveToRelativeLine
  @extend(false)

  defaultCount: null

  moveCursor: (cursor) ->
    cursor.setBufferPosition(@getPoint())
    cursor.autoscroll({center: true})

  getPoint: ->
    getFirstCharacterPositionForBufferRow(@editor, @getRow())

  getRow: ->
