]> git.gir.st - VimFx.git/blob - extension/packages/vim.coffee
Esc related tweaks
[VimFx.git] / extension / packages / vim.coffee
1 { escapeCommand
2 , searchForMatchingCommand } = require 'commands'
3 { modes } = require 'modes'
4
5 class Vim
6 constructor: (@window) ->
7 @storage = {}
8 @enterMode('normal')
9
10 enterMode: (mode, args) ->
11 # `args` is an array of arguments to be passed to the mode's `onEnter` method
12 if @mode != mode
13 modes[@mode]?.onLeave(@, @storage[@mode], args)
14 @mode = mode
15 @storage[@mode] ?= {}
16 modes[@mode]?.onEnter(@, @storage[@mode], args)
17
18 onInput: (keyStr, event, options = {}) ->
19 esc = searchForMatchingCommand([keyStr], [escapeCommand]).esc
20
21 if options.autoInsertMode and not esc
22 return false
23
24 result = modes[@mode]?.onInput(@, @storage[@mode], keyStr, event)
25
26 if esc
27 @enterMode('normal')
28
29 return result
30
31 exports.Vim = Vim
Imprint / Impressum