1 utils = require 'utils'
2 hints = require 'mode-hints/hints'
4 { isEscCommandKey } = require 'commands'
7 onEnter: (vim, storage, callback) ->
8 markers = hints.injectHints(vim.window.document)
10 storage.markers = markers
11 storage.callback = callback
13 vim.enterMode('normal')
15 onLeave: (vim, storage) ->
16 hints.removeHints(vim.window.document)
17 storage.markers = storage.callback = undefined
19 onInput: (vim, storage, keyStr, event) ->
20 if isEscCommandKey(keyStr)
21 vim.enterMode('normal')
24 { markers, callback } = storage
28 hints.rotateOverlappingMarkers(markers, true)
30 hints.rotateOverlappingMarkers(markers, false)
34 marker.deleteHintChar()
37 return false if keyStr not in utils.getHintChars() or event.ctrlKey or event.metaKey
39 marker.matchHintChar(keyStr)
42 marker.reward() # Add element features to the bloom filter
43 dontEnterNormalMode = callback(marker, markers)
44 vim.enterMode('normal') unless dontEnterNormalMode