]> git.gir.st - VimFx.git/blob - extension/packages/vim.coffee
Merge pull request #343 from lydell/better-find-mode
[VimFx.git] / extension / packages / vim.coffee
1 utils = require 'utils'
2 { modes } = require 'modes'
3
4 class Vim
5 constructor: (@window) ->
6 @rootWindow = utils.getRootWindow(@window) # For convenience.
7 @storage = {}
8 @loaded = false
9 @lastLoad = Date.now()
10 @enterMode('normal')
11
12 enterMode: (mode, args...) ->
13 # `args` is an array of arguments to be passed to the mode's `onEnter` method
14
15 if mode not of modes
16 throw new Error("Not a valid VimFx mode to enter: #{ mode }")
17
18 if @mode != mode
19 if @mode of modes
20 modes[@mode].onLeave(@, @storage[@mode])
21
22 @mode = mode
23
24 modes[@mode].onEnter(@, @storage[@mode] ?= {}, args...)
25
26 onInput: (keyStr, event) ->
27 suppress = modes[@mode]?.onInput(@, @storage[@mode], keyStr, event)
28 return suppress
29
30 exports.Vim = Vim
Imprint / Impressum