
This PR wire up the context picker with the inline assist. UI is not finalized. Release Notes: - N/A --------- Co-authored-by: Richard <richard@zed.dev> Co-authored-by: Agus <agus@zed.dev>
47 lines
1,023 B
Rust
47 lines
1,023 B
Rust
use gpui::SharedString;
|
|
|
|
use crate::context::{Context, ContextId, ContextKind};
|
|
|
|
pub struct ContextStore {
|
|
context: Vec<Context>,
|
|
next_context_id: ContextId,
|
|
}
|
|
|
|
impl ContextStore {
|
|
pub fn new() -> Self {
|
|
Self {
|
|
context: Vec::new(),
|
|
next_context_id: ContextId(0),
|
|
}
|
|
}
|
|
|
|
pub fn context(&self) -> &Vec<Context> {
|
|
&self.context
|
|
}
|
|
|
|
pub fn drain(&mut self) -> Vec<Context> {
|
|
self.context.drain(..).collect()
|
|
}
|
|
|
|
pub fn clear(&mut self) {
|
|
self.context.clear();
|
|
}
|
|
|
|
pub fn insert_context(
|
|
&mut self,
|
|
kind: ContextKind,
|
|
name: impl Into<SharedString>,
|
|
text: impl Into<SharedString>,
|
|
) {
|
|
self.context.push(Context {
|
|
id: self.next_context_id.post_inc(),
|
|
name: name.into(),
|
|
kind,
|
|
text: text.into(),
|
|
});
|
|
}
|
|
|
|
pub fn remove_context(&mut self, id: &ContextId) {
|
|
self.context.retain(|context| context.id != *id);
|
|
}
|
|
}
|