]> git.gir.st - VimFx.git/blob - extension/packages/options.coffee
Merge branch 'hints-z-index' of git://github.com/lydell/VimFx into lydell-hints-z...
[VimFx.git] / extension / packages / options.coffee
1 utils = require 'utils'
2 { unload } = require 'unload'
3 { getPref } = require 'prefs'
4 help = require 'help'
5 { commands } = require 'commands'
6 { unload } = require 'unload'
7 { getPref } = require 'prefs'
8
9 observer =
10 observe: (document, topic, addon) ->
11 return unless addon == getPref('addon_id')
12
13 hintCharsInput = document.querySelector('setting[pref="extensions.VimFx.hint_chars"]')
14 blacklistInput = document.querySelector('setting[pref="extensions.VimFx.black_list"]')
15
16 prevPatternsInput = document.querySelector('setting[pref="extensions.VimFx.prev_patterns"]')
17 nextPatternsInput = document.querySelector('setting[pref="extensions.VimFx.next_patterns"]')
18
19 customizeButton = document.getElementById('customizeButton')
20 injectHelp = help.injectHelp.bind(undefined, document, commands)
21
22 switch topic
23 when 'addon-options-displayed'
24 hintCharsInput.addEventListener('change', filterChars, false)
25 blacklistInput.addEventListener('change', utils.updateBlacklist, false)
26 prevPatternsInput.addEventListener('change', validatePatterns, false)
27 nextPatternsInput.addEventListener('change', validatePatterns, false)
28 customizeButton.addEventListener('command', injectHelp, false)
29
30 when 'addon-options-hidden'
31 hintCharsInput.removeEventListener('change', filterChars, false)
32 blacklistInput.removeEventListener('change', utils.updateBlacklist, false)
33 prevPatternsInput.addEventListener('change', validatePatterns, false)
34 nextPatternsInput.addEventListener('change', validatePatterns, false)
35 customizeButton.removeEventListener('command', injectHelp, false)
36
37 filterChars = (event) ->
38 input = event.target
39 input.value = utils.removeDuplicateCharacters(input.value).replace(/\s/g, '')
40 input.valueToPreference()
41
42 validatePatterns = (event) ->
43 input = event.target
44 input.value = input.value.split(',')
45 .map((pattern) -> pattern.trim())
46 .filter((pattern) -> pattern != '')
47 .join(',')
48 input.valueToPreference()
49
50 observe = ->
51 Services.obs.addObserver(observer, 'addon-options-displayed', false)
52 Services.obs.addObserver(observer, 'addon-options-hidden', false)
53
54 unload ->
55 Services.obs.removeObserver(observer, 'addon-options-displayed')
56 Services.obs.removeObserver(observer, 'addon-options-hidden')
57
58 exports.observe = observe
Imprint / Impressum