1 utils = require 'utils'
2 { unloader } = require 'unloader'
3 { getPref } = require 'prefs'
5 { commands } = require 'commands'
8 Services.obs.addObserver(observer, 'addon-options-displayed', false)
9 Services.obs.addObserver(observer, 'addon-options-hidden', false)
12 observe: (document, topic, addon) ->
14 'setting[pref="extensions.VimFx.hint_chars"]':
16 'setting[pref="extensions.VimFx.black_list"]':
17 change: utils.updateBlacklist
18 'setting[pref="extensions.VimFx.prev_patterns"]':
19 change: validatePatterns
20 'setting[pref="extensions.VimFx.next_patterns"]':
21 change: validatePatterns
23 command: help.injectHelp.bind(undefined, document, commands)
26 when 'addon-options-displayed'
27 applySpec(document, spec, true)
28 when 'addon-options-hidden'
29 applySpec(document, spec, false)
31 filterChars = (event) ->
33 input.value = utils.removeDuplicateCharacters(input.value).replace(/\s/g, '')
34 input.valueToPreference()
36 validatePatterns = (event) ->
39 utils.removeDuplicates(utils.splitListString(input.value))
40 .filter((pattern) -> pattern != '')
42 input.valueToPreference()
44 applySpec = (document, spec, enable) ->
45 for selector, events of spec
46 element = document.querySelector(selector)
47 method = if enable then 'addEventListener' else 'removeEventListener'
48 for event, action of events
49 element[method](event, action, false)
52 Services.obs.removeObserver(observer, 'addon-options-displayed')
53 Services.obs.removeObserver(observer, 'addon-options-hidden')
56 exports.observe = observe