]> git.gir.st - VimFx.git/blob - extension/packages/mode-hints/mode-hints.coffee
Fix: Hint marker rotation was broken
[VimFx.git] / extension / packages / mode-hints / mode-hints.coffee
1 utils = require 'utils'
2 hints = require 'mode-hints/hints'
3
4 exports.mode_hints =
5 onEnter: (vim, storage, [ callback ]) ->
6 markers = hints.injectHints(vim.window.document)
7 if markers.length == 0
8 vim.enterNormalMode()
9 return
10 storage.markers = markers
11 storage.callback = callback
12
13 # Processes the char, updates and hides/shows markers
14 onInput: (vim, storage, keyStr, event) ->
15 { markers, callback } = storage
16
17 switch keyStr
18 when 'Space'
19 hints.rotateOverlappingMarkers(markers, true)
20 when 'Shift-Space'
21 hints.rotateOverlappingMarkers(markers, false)
22
23 when 'Backspace'
24 for marker in markers
25 marker.deleteHintChar()
26
27 else
28 return false if keyStr not in utils.getHintChars() or event.ctrlKey or event.metaKey
29 for marker in markers
30 marker.matchHintChar(keyStr)
31
32 if marker.isMatched()
33 marker.reward() # Add element features to the bloom filter
34 dontEnterNormalMode = callback(marker, markers)
35 vim.enterNormalMode() unless dontEnterNormalMode
36 break
37
38 return true
39
40 onEnterNormalMode: (vim, storage) ->
41 hints.removeHints(vim.window.document)
42 storage.markers = storage.callback = undefined
Imprint / Impressum