1 # This file is the equivalent of main.coffee, but for frame scripts.
3 commands = require('./commands-frame')
4 config = require('./config')
5 createConfigAPI = require('./api-frame')
6 FrameEventManager = require('./events-frame')
7 messageManager = require('./message-manager')
8 prefs = require('./prefs')
9 VimFrame = require('./vim-frame')
11 test = require('../test/index')
15 {content} = FRAME_SCRIPT_ENVIRONMENT
16 vim = new VimFrame(content)
18 eventManager = new FrameEventManager(vim)
19 eventManager.addListeners()
20 eventManager.sendFocusType({ignore: ['none']})
22 messageManager.listen('runCommand', ({name, data}, callback) ->
23 result = commands[name](Object.assign({vim}, data))
28 onShutdown = (fn) -> shutdownHandlers.push(fn)
31 configDir = prefs.get('config_file_directory')
32 return null unless configDir
34 vimfx: createConfigAPI(vim, onShutdown)
37 error = config.loadFile(configDir, 'frame.js', scope)
40 # main.coffee cannot know when the 'loadConfig' listener below is ready, so
41 # run `loadConfig` manually on startup.
44 messageManager.listen('loadConfig', (data, callback) ->
49 messageManager.listen('unloadConfig', ->
50 for shutdownHandler in shutdownHandlers
54 console.error("VimFx: `vimfx.on('shutdown')` error in frame.js", error)
59 messageManager.send('runTests', null, (ok) -> test(vim) if ok)