diff options
Diffstat (limited to 'src/config')
| -rw-r--r-- | src/config/mod.rs | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/config/mod.rs b/src/config/mod.rs index 376f923..021d2c1 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -10,6 +10,7 @@ use crate::config::message::num_tokens_from_messages; use crate::utils::{mask_text, now}; use anyhow::{anyhow, bail, Context, Result}; +use copypasta::{ClipboardContext, ClipboardProvider}; use inquire::{Confirm, Text}; use parking_lot::RwLock; use serde::Deserialize; @@ -70,6 +71,8 @@ pub struct Config { pub light_theme: bool, /// Set a timeout in seconds for connect to gpt pub connect_timeout: usize, + /// Automatically copy the last message output to the clipboard + pub auto_copy: bool, /// Predefined roles #[serde(skip)] pub roles: Vec<Role>, @@ -97,6 +100,7 @@ impl Default for Config { conversation_first: false, light_theme: false, connect_timeout: 10, + auto_copy: false, roles: vec![], role: None, conversation: None, @@ -169,6 +173,20 @@ impl Config { Ok(path) } + pub fn copy_message(&self, output: &str) -> Result<()> { + if self.auto_copy { + match ClipboardContext::new() { + Ok(mut ctx) => { + ctx.set_contents(output.to_string()).map_err(|err| { + anyhow!("Error: Unable to the last message output to clipboard, {err}") + })?; + } + Err(_) => bail!("Error: Unable to access clipboard context."), + } + } + Ok(()) + } + pub fn save_message(&self, input: &str, output: &str) -> Result<()> { if !self.save { return Ok(()); |
