1 { getWindowId, Bucket } = require 'utils'
11 constructor: (@window) ->
19 if _maybeCommand(@mode, @keys, keyStr)
26 console.log @keys.join(',')
27 if command = _getCommand(@mode, @keys)
28 lastKey = @keys[@keys.length - 1]
31 return lastKey != 'Esc'
36 enterNormalMode: () ->
37 @markers = @cb = undefined
41 _getCommand = (mode, keys) ->
42 lastKey = keys[keys.length - 1]
44 if mode == MODE_NORMAL or lastKey == 'Esc'
45 sequence = keys.join(',')
46 if command = commands[sequence]
48 else if keys.length > 0
49 return _getCommand mode, keys.slice(1)
51 else if mode == MODE_HINTS and keys.length > 0
53 return hintCharHandler(vim, lastKey.toLowerCase())
57 _maybeCommand = (mode, keys, keyStr) ->
58 if mode == MODE_NORMAL || keyStr == 'Esc'
59 sequence = keys.concat([keyStr]).join(',')
60 for commandSequence in Object.keys(commands)
61 if commandSequence.search(sequence) == 0
65 return _maybeCommand mode, keys.slice(1), keyStr
67 else if mode == MODE_HINTS