2 , searchForMatchingCommand } = require 'commands'
3 { modes } = require 'modes'
6 constructor: (@window) ->
10 enterMode: (mode, args) ->
11 # `args` is an array of arguments to be passed to the mode's `onEnter` method
13 modes[@mode]?.onLeave(@, @storage[@mode], args)
16 modes[@mode]?.onEnter(@, @storage[@mode], args)
18 onInput: (keyStr, event, options = {}) ->
19 esc = searchForMatchingCommand([keyStr], [escapeCommand]).esc
21 if options.autoInsertMode and not esc
24 result = modes[@mode]?.onInput(@, @storage[@mode], keyStr, event)