# Extract a BufferStore object from Project \(\#14037\) · gitcafe/zed

[View on GitCafe](https://git.cafe/gitcafe/zed/commit/489077befcc1ac4e1aa4505fa3f27f1a6528da48)

Repository: [gitcafe/zed](https://git.cafe/gitcafe/zed)

Visibility: public

Requested revision: 489077befcc1ac4e1aa4505fa3f27f1a6528da48

Requested commit: 489077befcc1ac4e1aa4505fa3f27f1a6528da48

Commit: 489077befcc1ac4e1aa4505fa3f27f1a6528da48

Tree: 7bb7681ed2088587f0f04d0711bb5a7b235e9dde

Author: Max Brunsfeld

Committer: GitHub

## Message

```
Extract a BufferStore object from Project (#14037)

This is a ~small~ pure refactor that's a step toward SSH remoting. I've
extracted the Project's buffer state management into a smaller, separate
struct called `BufferStore`, currently in the same crate. I did this as
a separate PR to reduce conflicts between main and `remoting-over-ssh`.

The idea is to make use of this struct (and other smaller structs that
make up `Project`) in a dedicated, simpler `HeadlessProject` type that
we will use in the SSH server to model the remote end of a project. With
this approach, as we develop the headless project, we can avoid adding
more conditional logic to `Project` itself (which is already very
complex), and actually make `Project` a bit smaller by extracting out
helper objects.

Release Notes:

- N/A
```

## Parents

- [21c5ce2bbd6ed5669c449d1282e7b41f67ae4f55](https://git.cafe/gitcafe/zed/commit/21c5ce2bbd6ed5669c449d1282e7b41f67ae4f55?format=markdown)

[Source at this commit](https://git.cafe/gitcafe/zed/tree/489077befcc1ac4e1aa4505fa3f27f1a6528da48?format=markdown)
