1 {MotionWithInput, MoveToFirstCharacterOfLine} = require './general-motions'
2 {ViewModel} = require '../view-models/view-model'
3 {Point, Range} = require 'atom'
6 class MoveToMark extends MotionWithInput
7 operatesInclusively: false
9 constructor: (@editor, @vimState, @linewise=true) ->
10 super(@editor, @vimState)
11 @operatesLinewise = @linewise
12 @viewModel = new ViewModel(this, class: 'move-to-mark', singleChar: true, hidden: true)
14 isLinewise: -> @linewise
16 moveCursor: (cursor, count=1) ->
17 markPosition = @vimState.getMark(@input.characters)
19 if @input.characters is '`' # double '`' pressed
20 markPosition ?= [0, 0] # if markPosition not set, go to the beginning of the file
21 @vimState.setMark('`', cursor.getBufferPosition())
23 cursor.setBufferPosition(markPosition) if markPosition?
25 cursor.moveToFirstCharacterOfLine()