# `MishkaCmsBuilder.Plugins.Settings`
[🔗](https://github.com/mishka-group/mishka_cms_builder/blob/v0.0.1-alpha.2/lib/mishka_cms_builder/plugins/settings.ex#L5)

The editor's own settings, registered on `settings:register` (`MishkaCmsCore.Settings`).

WHAT THE EDITOR WRITES FOR ITSELF. The Studio's switches (`cms_builder.studio.*`) and the
component presets (`cms_builder.preset.<component>`) are keys no definition names, one per site
and per component. One `match: :prefix` definition covers every `cms_builder.` key, and only its
`:permission` is read: any name that opens a builder writes them, a runtime area of a document the
editor edits or `admin:dashboard:code`, and the setting area alone does not. Without the editor
such a key takes `admin:dashboard:setting`, which fails closed.

THE MENTION NOTIFICATION'S TWO SWITCHES. Writing `@someone` in a review note notifies them
(`MishkaCmsBuilder.Mentions`); a site turns that off under Notifications and a
person turns their own copy off under Preferences. Both keys follow the notification type, as
`MishkaCmsCore.Notify.Delivery` reads them.

# `error_return`

```elixir
@type error_return() ::
  {:error, [%{action: atom(), field: atom(), message: String.t()}]}
```

# `okey_return`

```elixir
@type okey_return() :: {:ok, struct() | map() | module() | [any()]}
```

# `child_spec`

Returns a specification to start this module under a supervisor.

See `Supervisor`.

# `config`

```elixir
@spec config() :: keyword()
```

# `config`

```elixir
@spec config(atom()) :: any()
```

# `definitions`

```elixir
@spec definitions() :: [MishkaCmsCore.Settings.definition()]
```

The definitions this plugin contributes.

# `enable`

```elixir
@spec enable() :: okey_return() | error_return()
```

# `get`

```elixir
@spec get() :: keyword()
```

# `health_check`

```elixir
@spec health_check() :: :ok | {:degraded, term()} | {:error, term()}
```

Optional. See `c:MishkaInstaller.Event.Hook.health_check/0`. Override to report health.

# `on_dependency_error`

```elixir
@spec on_dependency_error(term()) :: term()
```

Optional. See `c:MishkaInstaller.Event.Hook.on_dependency_error/1`. Override to react.

# `opens`

```elixir
@spec opens() :: [String.t()]
```

The names that open a builder, any one of which writes a `cms_builder.` key.

# `register`

```elixir
@spec register() :: okey_return() | error_return()
```

# `restart`

```elixir
@spec restart() :: okey_return() | error_return()
```

# `start`

```elixir
@spec start() :: okey_return() | error_return()
```

# `start_link`

# `stop`

```elixir
@spec stop() :: okey_return() | error_return()
```

# `unregister`

```elixir
@spec unregister() :: okey_return() | error_return()
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
