]> git.gir.st - VimFx.git/blob - extension/packages/options.coffee
Merge pull request #264 from lydell/zhuochun-enhance-follow-link
[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 hintCharsInput = document.querySelector('setting[pref="extensions.VimFx.hint_chars"]')
12 blacklistInput = document.querySelector('setting[pref="extensions.VimFx.black_list"]')
13
14 prevPatternsInput = document.querySelector('setting[pref="extensions.VimFx.prev_patterns"]')
15 nextPatternsInput = document.querySelector('setting[pref="extensions.VimFx.next_patterns"]')
16
17 customizeButton = document.getElementById('customizeButton')
18 injectHelp = help.injectHelp.bind(undefined, document, commands)
19
20 switch topic
21 when 'addon-options-displayed'
22 hintCharsInput.addEventListener('change', filterChars, false)
23 blacklistInput.addEventListener('change', utils.updateBlacklist, false)
24 prevPatternsInput.addEventListener('change', validatePatterns, false)
25 nextPatternsInput.addEventListener('change', validatePatterns, false)
26 customizeButton.addEventListener('command', injectHelp, false)
27
28 when 'addon-options-hidden'
29 hintCharsInput.removeEventListener('change', filterChars, false)
30 blacklistInput.removeEventListener('change', utils.updateBlacklist, false)
31 prevPatternsInput.addEventListener('change', validatePatterns, false)
32 nextPatternsInput.addEventListener('change', validatePatterns, false)
33 customizeButton.removeEventListener('command', injectHelp, false)
34
35 filterChars = (event) ->
36 input = event.target
37 input.value = utils.removeDuplicateCharacters(input.value).replace(/\s/g, '')
38 input.valueToPreference()
39
40 validatePatterns = (event) ->
41 input = event.target
42 input.value =
43 utils.removeDuplicates(utils.splitListString(input.value))
44 .filter((pattern) -> pattern != '')
45 .join(',')
46 input.valueToPreference()
47
48 observe = ->
49 Services.obs.addObserver(observer, 'addon-options-displayed', false)
50 Services.obs.addObserver(observer, 'addon-options-hidden', false)
51
52 unload ->
53 Services.obs.removeObserver(observer, 'addon-options-displayed')
54 Services.obs.removeObserver(observer, 'addon-options-hidden')
55
56 exports.observe = observe
Imprint / Impressum