recent_buffers.rs

 1use gpui::{Subscription, Task, WeakModel};
 2use language::Buffer;
 3
 4use crate::{LanguageModelRequestMessage, Role};
 5
 6pub struct RecentBuffersContext {
 7    pub enabled: bool,
 8    pub buffers: Vec<RecentBuffer>,
 9    pub message: String,
10    pub pending_message: Option<Task<()>>,
11}
12
13pub struct RecentBuffer {
14    pub buffer: WeakModel<Buffer>,
15    pub _subscription: Subscription,
16}
17
18impl Default for RecentBuffersContext {
19    fn default() -> Self {
20        Self {
21            enabled: true,
22            buffers: Vec::new(),
23            message: String::new(),
24            pending_message: None,
25        }
26    }
27}
28
29impl RecentBuffersContext {
30    /// Returns the [`RecentBuffersContext`] as a message to the language model.
31    pub fn to_message(&self) -> Option<LanguageModelRequestMessage> {
32        self.enabled.then(|| LanguageModelRequestMessage {
33            role: Role::System,
34            content: self.message.clone(),
35        })
36    }
37}