1 utils = require 'utils'
2 hints = require 'mode-hints/hints'
5 , searchForMatchingCommand
9 onEnter: (vim, storage, [ callback ]) ->
10 markers = hints.injectHints(vim.window.document)
11 if markers.length == 0
12 vim.enterMode('normal')
14 storage.markers = markers
15 storage.callback = callback
17 onLeave: (vim, storage) ->
18 hints.removeHints(vim.window.document)
19 storage.markers = storage.callback = undefined
21 onInput: (vim, storage, keyStr, event) ->
22 { markers, callback } = storage
26 hints.rotateOverlappingMarkers(markers, true)
28 hints.rotateOverlappingMarkers(markers, false)
32 marker.deleteHintChar()
35 return false if keyStr not in utils.getHintChars() or event.ctrlKey or event.metaKey
37 marker.matchHintChar(keyStr)
40 marker.reward() # Add element features to the bloom filter
41 dontEnterNormalMode = callback(marker, markers)
42 vim.enterMode('normal') unless dontEnterNormalMode