1 { classes: Cc, interfaces: Ci } = Components
3 { unload } = require 'unload'
5 PREF_BRANCH = 'extensions.VimFx.'
7 # Default values for preferences are now specified in
8 # defaults/preferences/defaults.js
10 getBranchPref = (branch, key, defaultValue) ->
11 type = branch.getPrefType(key)
15 return branch.getBoolPref(key)
17 return branch.getIntPref(key)
18 when branch.PREF_STRING
19 return branch.getCharPref(key)
21 if defaultValue != undefined
25 prefs = Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefService)
26 branch = prefs.getBranch(PREF_BRANCH)
29 branch.prefHasUserValue(key)
32 prefs = Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefService)
33 branch = prefs.getBranch(PREF_BRANCH)
35 return (key, defaultValue = undefined) ->
36 return getBranchPref(branch, key, defaultValue)
39 getComplexPref = do ->
40 prefs = Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefService)
41 branch = prefs.getBranch(PREF_BRANCH)
44 return branch.getComplexValue(key, Ci.nsISupportsString).data
46 getFirefoxPref = do ->
47 prefs = Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefService)
48 branch = prefs.getBranch('')
50 return (key, defaultValue = undefined) ->
51 return getBranchPref(branch, key, defaultValue)
53 # Assign and save Firefox preference value
55 prefs = Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefService)
56 branch = prefs.getBranch(PREF_BRANCH)
58 return (key, value) ->
61 branch.setBoolPref(key, value)
63 branch.setIntPref(key, value)
65 branch.setCharPref(key, value)
67 branch.clearUserPref(key)
69 exports.isPrefSet = isPrefSet
70 exports.getPref = getPref
71 exports.getComplexPref = getComplexPref
72 exports.getFirefoxPref = getFirefoxPref
73 exports.setPref = setPref