From 36cbfcaafcb8a3b1c47650439531a35c99b203ea Mon Sep 17 00:00:00 2001 From: Jonas Maier <> Date: Sun, 24 May 2026 09:47:29 +0200 Subject: terminal prompt from ps1 module now --- src/ps1.rs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'src/ps1.rs') diff --git a/src/ps1.rs b/src/ps1.rs index 05b5886..38beebb 100644 --- a/src/ps1.rs +++ b/src/ps1.rs @@ -5,7 +5,7 @@ use crate::parse::{ExpString, Parse}; use crate::run::{Vars, WatchId}; use crate::{BString, Session, bstr}; -pub const PROMPT_VAR: &str = "PROMPT"; +pub const PROMPT_VAR: &bstr = b"PROMPT"; #[allow(unused)] const DEFAULT_PROMPT_VALUE_DEBUG: &bstr = b"dev [$CWD_PRETTY]# "; @@ -19,6 +19,7 @@ pub const DEFAULT_PROMPT_VALUE: &bstr = DEFAULT_PROMPT_VALUE_DEBUG; #[cfg(not(debug_assertions))] pub const DEFAULT_PROMPT_VALUE: &bstr = DEFAULT_PROMPT_VALUE_RELEASE; +#[derive(Clone)] pub struct Prompt { watch_var: WatchId, watch_content: Option, @@ -28,8 +29,12 @@ pub struct Prompt { impl Prompt { pub fn new(vars: &mut Vars) -> Self { + if vars.lookup(PROMPT_VAR).is_none() { + vars.set(PROMPT_VAR.to_owned(), DEFAULT_PROMPT_VALUE.to_owned()); + } + Self { - watch_var: vars.watch(vec![PROMPT_VAR.as_bytes().to_vec()]), + watch_var: vars.watch(vec![PROMPT_VAR.to_vec()]), watch_content: None, parsed: None, cached_prompt: None, @@ -45,7 +50,7 @@ impl Prompt { pub fn load_prompt(&mut self, vars: &mut Vars) { if vars.pop_dirty(&self.watch_var) { let prompt = vars - .lookup(PROMPT_VAR.as_bytes()) + .lookup(PROMPT_VAR) .map(Cow::into_owned) .unwrap_or_else(|| DEFAULT_PROMPT_VALUE.to_vec()); let parsed = parse_prompt(prompt); -- cgit v1.2.3