]> git.gir.st - VimFx.git/blob - extension/packages/prefs.coffee
Merge branch 'develop' into better-hintmarkers
[VimFx.git] / extension / packages / prefs.coffee
1 { classes: Cc, interfaces: Ci } = Components
2
3 PREF_BRANCH = 'extensions.VimFx.'
4 DEFAULT_PREFS_FILE = 'defaults/preferences/defaults.js'
5
6 # Default values for preferences are now specified in
7 # defaults/preferences/defaults.js.
8
9 prefs = Services.prefs
10 vimfxBranch = prefs.getBranch(PREF_BRANCH)
11
12 getBranchPref = (branch, key, defaultValue = undefined) ->
13 type = branch.getPrefType(key)
14 return switch type
15 when branch.PREF_BOOL
16 branch.getBoolPref(key)
17 when branch.PREF_INT
18 branch.getIntPref(key)
19 when branch.PREF_STRING
20 branch.getCharPref(key)
21 else
22 defaultValue
23
24 isPrefSet = (key) ->
25 return vimfxBranch.prefHasUserValue(key)
26
27 getPref = getBranchPref.bind(undefined, vimfxBranch)
28
29 # Unicode String.
30 getComplexPref = (key) ->
31 return vimfxBranch.getComplexValue(key, Ci.nsISupportsString).data
32
33 setBranchPref = (branch, key, value) ->
34 switch typeof value
35 when 'boolean'
36 branch.setBoolPref(key, value)
37 when 'number'
38 branch.setIntPref(key, value)
39 when 'string'
40 branch.setCharPref(key, value)
41 else
42 branch.clearUserPref(key)
43
44 setPref = setBranchPref.bind(undefined, vimfxBranch)
45
46 setDefaultPrefs = ->
47 baseUri = Services.io.newURI(__SCRIPT_URI_SPEC__, null, null)
48 uri = Services.io.newURI(DEFAULT_PREFS_FILE, null, baseUri)
49
50 branch = prefs.getDefaultBranch('')
51 scope = {pref: setBranchPref.bind(undefined, branch)}
52 Services.scriptloader.loadSubScript(uri.spec, scope)
53
54 exports.isPrefSet = isPrefSet
55 exports.getPref = getPref
56 exports.getComplexPref = getComplexPref
57 exports.setPref = setPref
58 exports.setDefaultPrefs = setDefaultPrefs
Imprint / Impressum