1 utils = require 'utils'
2 { modes } = require 'modes'
5 constructor: (@window) ->
6 @rootWindow = utils.getRootWindow(@window) # For convenience.
8 @lastInteraction = null
11 enterMode: (mode, args...) ->
12 # `args` is an array of arguments to be passed to the mode's `onEnter`
16 throw new Error("Not a valid VimFx mode to enter: #{ mode }")
20 modes[@mode].onLeave(@, @storage[@mode])
24 modes[@mode].onEnter(@, @storage[@mode] ?= {}, args...)
26 onInput: (keyStr, event) ->
27 suppress = modes[@mode]?.onInput(@, @storage[@mode], keyStr, event)