1 { classes: Cc, interfaces: Ci } = Components
3 PREF_BRANCH = "extensions.VimFx."
5 # Default values for the preference
6 # All used preferences should be mentioned here becuase
7 # preference type is derived from here
9 addon_id: 'VimFx@akhodakivskiy.github.com'
10 hint_chars: 'asdfgercvhjkl;uinm'
14 black_list: '*mail.google.com*'
16 leave_dt_on_esc: false
18 getBranchPref = (branch, key, defaultValue) ->
19 type = branch.getPrefType(key)
23 return branch.getBoolPref key
25 return branch.getIntPref key
26 when branch.PREF_STRING
27 return branch.getCharPref key
29 if defaultValue != undefined
33 prefs = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefService)
34 branch = prefs.getBranch PREF_BRANCH
36 return (key, defaultValue=undefined) ->
37 value = getBranchPref branch, key, defaultValue
38 return if value == undefined then getDefaultPref(key) else value
40 getDefaultPref = (key) -> return DEFAULT_PREF_VALUES[key]
42 getFirefoxPref = do ->
43 prefs = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefService)
44 branch = prefs.getBranch ''
46 return (key, defaultValue=undefined) ->
47 return getBranchPref branch, key, defaultValue
49 # Assign and save Firefox preference value
51 prefs = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefService)
52 branch = prefs.getBranch PREF_BRANCH
54 return (key, value) ->
57 branch.setBoolPref(key, value)
59 branch.setIntPref(key, value)
61 branch.setCharPref(key, value)
63 branch.clearUserPref(key)
65 DISABLED_COMMANDS = do ->
66 str = getPref 'disabled_commands'
72 for key in str.split('||')
73 for c in key.split('|')
79 enableCommand = (key) ->
80 for c in key.split('|')
81 while (idx = DISABLED_COMMANDS.indexOf(c)) > -1
82 DISABLED_COMMANDS.splice(idx, 1)
84 setPref 'disabled_commands', JSON.stringify DISABLED_COMMANDS
86 # Adds command to the disabled list
87 disableCommand = (key) ->
88 for c in key.split('|')
89 if DISABLED_COMMANDS.indexOf(c) == -1
90 DISABLED_COMMANDS.push c
92 setPref 'disabled_commands', JSON.stringify DISABLED_COMMANDS
94 # Checks if given command is disabled in the preferences
95 isCommandDisabled = (key) ->
96 for c in key.split('|')
97 if DISABLED_COMMANDS.indexOf(c) > -1
102 exports.getPref = getPref
103 exports.getDefaultPref = getDefaultPref
104 exports.getFirefoxPref = getFirefoxPref
105 exports.setPref = setPref
106 exports.isCommandDisabled = isCommandDisabled
107 exports.disableCommand = disableCommand
108 exports.enableCommand = enableCommand