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

Correlation state for editor-level Git workflows and diff presentation.

Repository services own Git data. This value remembers only operations and
generated-buffer views whose results are still relevant to this editor.

# `diff_view_info`

```elixir
@type diff_view_info() :: %{
  :source_buf =&gt; pid() | nil,
  :git_root =&gt; String.t(),
  :rel_path =&gt; String.t(),
  :staged =&gt; boolean(),
  :line_metadata =&gt; [Minga.Core.DiffView.line_meta()],
  :hunk_lines =&gt; [non_neg_integer()],
  optional(:view_mode) =&gt; :unified | :side_by_side,
  optional(:pane_width) =&gt; pos_integer()
}
```

# `t`

```elixir
@type t() :: %MingaEditor.State.Git{
  diff_views: %{required(pid()) =&gt; diff_view_info()}
}
```

# `diff_view_info`

```elixir
@spec diff_view_info(t(), pid() | nil) :: diff_view_info() | nil
```

Returns metadata for a generated diff buffer, when registered.

# `diff_views_for_source`

```elixir
@spec diff_views_for_source(t(), pid()) :: [{pid(), diff_view_info()}]
```

Returns every generated diff buffer associated with one source buffer.

# `register_diff_view`

```elixir
@spec register_diff_view(t(), pid(), diff_view_info()) :: t()
```

Registers a generated diff buffer and its source content.

# `retire_buffer`

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

Drops every generated diff-view reference to a retired buffer.

# `retire_diff_view`

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

Drops a generated diff buffer after it retires.

---

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