1 # This file creates VimFx’s toolbar button.
3 help = require('./help')
4 translate = require('./translate')
5 utils = require('./utils')
7 cui = Cu.import('resource:///modules/CustomizableUI.jsm', {}).CustomizableUI
9 BUTTON_ID = 'VimFxButton'
11 injectButton = (vimfx) ->
14 defaultArea: cui.AREA_NAVBAR
16 tooltiptext: translate('button.tooltip.normal')
18 button = event.originalTarget
19 window = button.ownerGlobal
20 return unless vim = vimfx.getCurrentVim(window)
22 helpVisible = help.getHelp(window)
24 # If we somehow have gotten stuck with `vim.focusType == 'editable'`,
25 # allow the buttton to reset to 'none'. (This also hides the help dialog.)
26 vimfx.modes.normal.commands.esc.run({vim})
28 if vim.mode == 'normal' and not helpVisible
29 help.injectHelp(window, vimfx)
31 vim._enterMode('normal')
33 module.onShutdown(-> cui.destroyWidget(BUTTON_ID))
35 vimfx.on('modeDisplayChange', ({vim}) ->
37 # When the browser starts, the button might not be available yet.
38 return unless button = getButton(window)
41 if vim.mode == 'normal'
42 translate('button.tooltip.normal')
45 'button.tooltip.other_mode',
46 translate("mode.#{vim.mode}"),
47 translate('mode.normal')
49 button.setAttribute('tooltiptext', tooltip)
52 getButton = (window) -> window.document.getElementById(BUTTON_ID)