1 # This file provides an API a bit more easy to use than the very low-level
4 defaults = require('./defaults')
10 user: prefs.getBranch(defaults.BRANCH)
11 default: prefs.getDefaultBranch(defaults.BRANCH)
15 default: prefs.getDefaultBranch('')
19 get = (branch, key) ->
20 return switch branch.getPrefType(key)
22 branch.getBoolPref(key)
24 branch.getIntPref(key)
25 when branch.PREF_STRING
26 if branch.getStringPref
27 branch.getStringPref(key)
29 branch.getComplexValue(key, Ci.nsISupportsString).data
31 set = (branch, key, value) ->
34 branch.setBoolPref(key, value)
36 branch.setIntPref(key, value) # `value` will be `Math.floor`ed.
38 if branch.setStringPref
39 branch.setStringPref(key, value)
41 str = Cc['@mozilla.org/supports-string;1']
42 .createInstance(Ci.nsISupportsString)
44 branch.setComplexValue(key, Ci.nsISupportsString, str)
47 branch.clearUserPref(key)
50 "VimFx: Options may only be set to a boolean, number, string or null.
54 has = (branch, key) ->
55 branch.prefHasUserValue(key)
57 tmp = (branch, pref, temporaryValue) ->
58 previousValue = if has(branch, pref) then get(branch, pref) else null
59 set(branch, pref, temporaryValue)
60 return -> set(branch, pref, previousValue)
62 observe = (branch, domain, callback) ->
63 observer = {observe: (branch, topic, changedPref) -> callback(changedPref)}
64 branch.addObserver(domain, observer, false)
66 branch.removeObserver(domain, observer)
70 get: get.bind(null, branches.addon.user)
71 set: set.bind(null, branches.addon.user)
72 has: has.bind(null, branches.addon.user)
73 tmp: tmp.bind(null, branches.addon.user)
74 observe: observe.bind(null, branches.addon.user)
76 get: get.bind(null, branches.addon.default)
77 set: set.bind(null, branches.addon.default)
79 for key, value of defaults.all_prefs
80 module.exports.default.set(key, value)
84 get: get.bind(null, branches.root.user)
85 set: set.bind(null, branches.root.user)
86 has: has.bind(null, branches.root.user)
87 tmp: tmp.bind(null, branches.root.user)
88 observe: observe.bind(null, branches.root.user)
90 get: get.bind(null, branches.root.default)
91 set: set.bind(null, branches.root.default)
94 unbound: {get, set, has, tmp, observe}