2013-02-16 01:13:47 +04:00
|
|
|
## Configuration API
|
2012-12-17 06:48:21 +04:00
|
|
|
|
2013-02-16 01:13:47 +04:00
|
|
|
### Reading Config Settings
|
2012-12-17 06:48:21 +04:00
|
|
|
|
2013-02-13 08:51:09 +04:00
|
|
|
If you are writing a package that you want to make configurable, you'll need to
|
|
|
|
read config settings. You can read a value from `config` with `config.get`:
|
2012-12-17 06:48:21 +04:00
|
|
|
|
|
|
|
```coffeescript
|
2012-12-18 00:10:18 +04:00
|
|
|
# read a value with `config.get`
|
2013-03-02 05:14:28 +04:00
|
|
|
@autosave() if config.get "core.autosave"
|
2012-12-18 00:10:18 +04:00
|
|
|
```
|
2012-12-17 06:48:21 +04:00
|
|
|
|
2012-12-18 00:10:18 +04:00
|
|
|
Or you can use `observeConfig` to track changes from a view object.
|
2012-12-17 06:48:21 +04:00
|
|
|
|
|
|
|
```coffeescript
|
|
|
|
class MyView extends View
|
|
|
|
initialize: ->
|
2013-01-24 23:36:25 +04:00
|
|
|
@observeConfig 'editor.fontSize', () =>
|
|
|
|
@adjustFontSize()
|
2012-12-17 06:48:21 +04:00
|
|
|
```
|
|
|
|
|
2012-12-18 00:10:18 +04:00
|
|
|
The `observeConfig` method will call the given callback immediately with the
|
|
|
|
current value for the specified key path, and it will also call it in the future
|
|
|
|
whenever the value of that key path changes.
|
|
|
|
|
|
|
|
Subscriptions made with `observeConfig` are automatically cancelled when the
|
|
|
|
view is removed. You can cancel config subscriptions manually via the
|
|
|
|
`unobserveConfig` method.
|
2012-12-17 06:48:21 +04:00
|
|
|
|
|
|
|
```coffeescript
|
|
|
|
view1.unobserveConfig() # unobserve all properties
|
|
|
|
```
|
|
|
|
|
2012-12-18 00:10:18 +04:00
|
|
|
You can add the ability to observe config values to non-view classes by
|
|
|
|
extending their prototype with the `ConfigObserver` mixin:
|
|
|
|
|
2012-12-17 06:48:21 +04:00
|
|
|
```coffeescript
|
|
|
|
ConfigObserver = require 'config-observer'
|
|
|
|
_.extend MyClass.prototype, ConfigObserver
|
|
|
|
```
|
|
|
|
|
2013-02-16 01:13:47 +04:00
|
|
|
### Writing Config Settings
|
2013-02-13 08:51:09 +04:00
|
|
|
|
2013-02-13 08:54:13 +04:00
|
|
|
As discussed above, the config database is automatically populated from
|
|
|
|
`config.cson` when Atom is started, but you can programmatically write to it in
|
|
|
|
the following way:
|
2013-02-13 08:51:09 +04:00
|
|
|
|
|
|
|
```coffeescript
|
|
|
|
# basic key update
|
2013-03-02 05:14:28 +04:00
|
|
|
config.set("core.autosave", true)
|
2013-05-16 21:51:23 +04:00
|
|
|
|
|
|
|
config.pushAtKeyPath("core.disabledPackages", "wrap-guide")
|
2013-02-13 08:51:09 +04:00
|
|
|
```
|
|
|
|
|
|
|
|
You can also use `setDefaults`, which will assign default values for keys that
|
|
|
|
are always overridden by values assigned with `set`. Defaults are not written out
|
|
|
|
to the the `config.json` file to prevent it from becoming cluttered.
|
|
|
|
|
|
|
|
```coffeescript
|
|
|
|
config.setDefaults("editor", fontSize: 18, showInvisibles: true)
|
|
|
|
```
|