mirror of
https://github.com/Foundry376/Mailspring.git
synced 2025-01-07 16:48:02 +08:00
df38008c56
Summary: This diff includes a few small things: - Menu: Don't select the first item until the user taps down arrow, and allow the user to use the arrow keys to move up and down through Menu items. - Menu: Make scroll code from MultiselectList re-usable, use in Menu. Now if you use the keys to move to an item that is offscreen it will follow. - Popover: Tapping the button that opened popover should close it - Make sure buttons in toolbars are at least standard height - Re-enable Markdown processing via `grunt docs` - A bit of initial inline documentation for crosjdoc. Need to evaluate whether this is worth doing everywhere. - New `search-playground` package for experimenting with search and search weights. - Swap itemClassProvider for more generic itemPropProvider - Add crojsdoc config file - Export React, because third party packages can't require things from our app - [FEATURE] Bring back static file support in third party packages via `nylas://translate/IMG_20150417_124142.jpg` - Fix invariant error with search bar - [FEATURE] "Show Original" under Message actions - Fix DatabaseView so that many archives at once don't cause problems Test Plan: Run specs Reviewers: evan Reviewed By: evan Differential Revision: https://review.inboxapp.com/D1426
58 lines
2 KiB
Markdown
58 lines
2 KiB
Markdown
## Configuration API
|
|
|
|
### Reading Config Settings
|
|
|
|
If you are writing a package that you want to make configurable, you'll need to
|
|
read config settings via the `atom.config` global. You can read the current
|
|
value of a namespaced config key with `atom.config.get`:
|
|
|
|
```coffeescript
|
|
# read a value with `config.get`
|
|
@showInvisibles() if atom.config.get "editor.showInvisibles"
|
|
```
|
|
|
|
Or you can subscribe via `atom.config.observe` to track changes from any view
|
|
object.
|
|
|
|
```coffeescript
|
|
{View} = require 'space-pen'
|
|
|
|
class MyView extends View
|
|
attached: ->
|
|
@fontSizeObserveSubscription =
|
|
atom.config.observe 'editor.fontSize', (newValue, {previous}) =>
|
|
@adjustFontSize()
|
|
|
|
detached: ->
|
|
@fontSizeObserveSubscription.dispose()
|
|
```
|
|
|
|
The `atom.config.observe` 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. If you only want to invoke
|
|
the callback when the next time the value changes, use `atom.config.onDidChange`
|
|
instead.
|
|
|
|
Subscription methods return *disposable* subscription objects. Note in the
|
|
example above how we save the subscription to the `@fontSizeObserveSubscription`
|
|
instance variable and dispose of it when the view is detached. To group multiple
|
|
subscriptions together, you can add them all to a
|
|
[`CompositeDisposable`][composite-disposable] that you dispose when the view is
|
|
detached.
|
|
|
|
### Writing Config Settings
|
|
|
|
The `atom.config` database is populated on startup from `~/.atom/config.cson`,
|
|
but you can programmatically write to it with `atom.config.set`:
|
|
|
|
```coffeescript
|
|
# basic key update
|
|
atom.config.set("core.showInvisibles", true)
|
|
```
|
|
|
|
If you're exposing package configuration via specific key paths, you'll want to
|
|
associate them with a schema in your package's main module. Read more about
|
|
schemas in the [config API docs][config-api].
|
|
|
|
[composite-disposable]: https://atom.io/docs/api/latest/CompositeDisposable
|
|
[config-api]: https://atom.io/docs/api/latest/Config
|