1 { getWindowId, Bucket } = require 'utils'
11 constructor: (@window) ->
19 if command = _getCommand(@mode, @keys)
23 else if _maybeCommand(@mode, @keys)
32 enterNormalMode: () ->
33 @markers = @cb = undefined
37 _endsWithEsc = (keys) ->
38 return keys.join(',').match(/Esc$/)
40 _getCommand = (mode, keys) ->
41 if mode == MODE_NORMAL or _endsWithEsc(keys)
42 sequence = keys.join(',')
43 if command = commands[sequence]
45 else if keys.length > 0
46 return _getCommand mode, keys.slice(1)
48 else if mode == MODE_HINTS
50 char = keys[keys.length - 1].toLowerCase()
51 return hintCharHandler(vim, char)
55 _maybeCommand = (mode, keys) ->
56 if mode == MODE_NORMAL and keys.length > 0
57 sequence = keys.join(',')
58 for commandSequence in Object.keys(commands)
59 if commandSequence.search(sequence) == 0
62 return _maybeCommand mode, keys.slice(1)