diff options
| author | Jonas Maier <> | 2026-05-24 09:47:29 +0200 |
|---|---|---|
| committer | Jonas Maier <> | 2026-05-24 09:47:29 +0200 |
| commit | 36cbfcaafcb8a3b1c47650439531a35c99b203ea (patch) | |
| tree | 975b49ab8893a1ec1069d0a775f1703576247dd3 /src/ps1.rs | |
| parent | 7cd15fe67ca0118520dcc4e9e189d513b0375e10 (diff) | |
| download | pish-36cbfcaafcb8a3b1c47650439531a35c99b203ea.tar.gz | |
terminal prompt from ps1 module now
Diffstat (limited to 'src/ps1.rs')
| -rw-r--r-- | src/ps1.rs | 11 |
1 files changed, 8 insertions, 3 deletions
@@ -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<WatchId>, @@ -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); |
