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 unobserve = (branch, domain, observer) ->
71 branch.removeObserver(domain, observer)
74 get: get.bind(null, branches.addon.user)
75 set: set.bind(null, branches.addon.user)
76 has: has.bind(null, branches.addon.user)
77 tmp: tmp.bind(null, branches.addon.user)
78 observe: observe.bind(null, branches.addon.user)
79 unobserve: unobserve.bind(null, branches.addon.user)
81 get: get.bind(null, branches.addon.default)
82 set: set.bind(null, branches.addon.default)
84 for key, value of defaults.all_prefs
85 module.exports.default.set(key, value)
89 get: get.bind(null, branches.root.user)
90 set: set.bind(null, branches.root.user)
91 has: has.bind(null, branches.root.user)
92 tmp: tmp.bind(null, branches.root.user)
93 observe: observe.bind(null, branches.root.user)
94 unobserve: unobserve.bind(null, branches.root.user)
96 get: get.bind(null, branches.root.default)
97 set: set.bind(null, branches.root.default)
100 unbound: {get, set, has, tmp, observe}