ZIm/crates/assistant/src
Nathan Sobo 7abb63cfda
Improve the ergonomics of creating local buffers (#10347)
This PR renames `language::Buffer::new` to `language::Buffer::local` and
simplifies its interface. Instead of taking a replica id (which should
always be 0 for the local case) and a `BufferId`, which was awkward and
verbose to construct, it simply takes text and a `cx`.

It uses the `cx` to derive a `BufferId` from the `EntityId` associated
with the `cx`, which should always be positive based on the following
analysis...

We convert the entity id to a u64 using this method on `EntityId`, which
is defined by macros in the `slotmap` crate:

```rust
    pub fn as_ffi(self) -> u64 {
        (u64::from(self.version.get()) << 32) | u64::from(self.idx)
    }
```

If you look at the type of `version` in `KeyData`, it is non-zero:

```rust
#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct KeyData {
    idx: u32,
    version: NonZeroU32,
}
```

This commit also adds `Context::reserve_model` and
`Context::insert_model` to determine a model's entity ID before it is
created, which we need in order to assign a `BufferId` in the background
when loading a buffer asynchronously.

Release Notes:

- N/A

---------

Co-authored-by: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com>
2024-04-10 08:32:51 -06:00
..
completion_provider Enable Claude 3 models to be used via the Zed server if "language-models" feature flag is enabled for user (#10015) 2024-03-31 15:57:57 -06:00
assistant.rs File context for assistant panel (#9712) 2024-03-29 13:55:01 -07:00
assistant_panel.rs Improve the ergonomics of creating local buffers (#10347) 2024-04-10 08:32:51 -06:00
assistant_settings.rs Add the ability for extensions to provide language settings (#10296) 2024-04-08 19:17:12 -04:00
codegen.rs Improve the ergonomics of creating local buffers (#10347) 2024-04-10 08:32:51 -06:00
completion_provider.rs Introduce InlineCompletionProvider (#9777) 2024-03-26 13:28:06 +01:00
embedded_scope.rs File context for assistant panel (#9712) 2024-03-29 13:55:01 -07:00
prompts.rs Allow AI interactions to be proxied through Zed's server so you don't need an API key (#7367) 2024-03-19 19:22:26 +01:00
saved_conversation.rs Allow AI interactions to be proxied through Zed's server so you don't need an API key (#7367) 2024-03-19 19:22:26 +01:00
streaming_diff.rs Allow AI interactions to be proxied through Zed's server so you don't need an API key (#7367) 2024-03-19 19:22:26 +01:00