summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorsigoden <sigoden@gmail.com>2024-10-11 07:12:05 +0800
committerGitHub <noreply@github.com>2024-10-11 07:12:05 +0800
commit511916bc99567ed147c56038feb61bee44e938df (patch)
tree09deb9f06c64afacdab547082565997f1391dd0f /src
parenta3e2c2a14718b4f23831cea9bce14ee4430dc90b (diff)
downloadaichat-511916bc99567ed147c56038feb61bee44e938df.tar.gz
fix: prelude works only if the state is empty (#920)
Diffstat (limited to 'src')
-rw-r--r--src/config/mod.rs19
1 files changed, 8 insertions, 11 deletions
diff --git a/src/config/mod.rs b/src/config/mod.rs
index 33bde56..97ec014 100644
--- a/src/config/mod.rs
+++ b/src/config/mod.rs
@@ -1378,6 +1378,9 @@ impl Config {
}
pub fn apply_prelude(&mut self) -> Result<()> {
+ if !self.state().is_empty() {
+ return Ok(());
+ }
let prelude = match self.working_mode {
WorkingMode::Cmd => self.prelude.as_ref(),
WorkingMode::Repl => self.repl_prelude.as_ref().or(self.prelude.as_ref()),
@@ -1396,21 +1399,15 @@ impl Config {
let err_msg = || format!("Invalid prelude '{}", prelude);
match prelude.split_once(':') {
Some(("role", name)) => {
- if self.state().is_empty() {
- self.use_role(name).with_context(err_msg)?;
- }
+ self.use_role(name).with_context(err_msg)?;
}
Some(("session", name)) => {
- if self.session.is_none() {
- self.use_session(Some(name)).with_context(err_msg)?;
- }
+ self.use_session(Some(name)).with_context(err_msg)?;
}
Some((session_name, role_name)) => {
- if self.session.is_none() {
- self.use_session(Some(session_name)).with_context(err_msg)?;
- if let Some(true) = self.session.as_ref().map(|v| v.is_empty()) {
- self.use_role(role_name).with_context(err_msg)?;
- }
+ self.use_session(Some(session_name)).with_context(err_msg)?;
+ if let Some(true) = self.session.as_ref().map(|v| v.is_empty()) {
+ self.use_role(role_name).with_context(err_msg)?;
}
}
_ => {