# `MingaEditor.State.Parser`
[🔗](https://github.com/jsmestad/minga/blob/main/lib/minga_editor/state/parser.ex#L1)

Parser connection and parser-derived presentation state.

Highlight caches, injection ranges, and per-buffer face registries are kept
together so buffer retirement and parser availability transitions cannot
leave one parser-derived surface behind.

# `face_override_registries`

```elixir
@type face_override_registries() :: %{
  required(pid()) =&gt; MingaEditor.UI.Face.Registry.t()
}
```

# `injection_ranges`

```elixir
@type injection_ranges() :: %{
  required(pid()) =&gt; [Minga.Language.Highlight.InjectionRange.t()]
}
```

# `status`

```elixir
@type status() :: MingaEditor.Shell.Traditional.Modeline.parser_status()
```

# `t`

```elixir
@type t() :: %MingaEditor.State.Parser{
  face_override_registries: face_override_registries(),
  highlighting: MingaEditor.State.Highlighting.t(),
  injection_ranges: injection_ranges(),
  parser_manager: GenServer.server(),
  parser_status: status()
}
```

# `accept_highlighting`

```elixir
@spec accept_highlighting(t(), MingaEditor.State.Highlighting.t()) :: t()
```

Commits syntax-highlight presentation caches.

# `accept_injection_ranges`

```elixir
@spec accept_injection_ranges(t(), injection_ranges()) :: t()
```

Commits live parser injection ranges.

# `connect_manager`

```elixir
@spec connect_manager(t(), GenServer.server()) :: t()
```

Records the parser manager serving this editor.

# `new`

```elixir
@spec new(GenServer.server()) :: t()
```

Creates parser state for the configured parser manager.

# `reconcile_face_overrides`

```elixir
@spec reconcile_face_overrides(t(), pid(), MingaEditor.UI.Face.Registry.t() | nil) ::
  t()
```

Reconciles the face override registry associated with a buffer.

# `report_status`

```elixir
@spec report_status(t(), status()) :: t()
```

Records parser availability for editor presentation.

# `retire_buffer`

```elixir
@spec retire_buffer(t(), pid()) :: t()
```

Drops every parser-derived presentation value associated with a buffer.

---

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