use reedline::{DefaultPrompt, DefaultPromptSegment, Prompt, PromptEditMode, PromptHistorySearch};
use std::borrow::Cow;
use std::ops::Deref;
pub struct CleanPrompt(pub DefaultPrompt);
impl Default for CleanPrompt {
fn default() -> Self {
Self::from(
DefaultPromptSegment::Basic("❯❯❯ ".to_string()),
DefaultPromptSegment::Empty,
)
}
}
impl CleanPrompt {
pub fn from(left_prompt: DefaultPromptSegment, right_prompt: DefaultPromptSegment) -> Self {
let default_prompt = DefaultPrompt::new(left_prompt, right_prompt);
CleanPrompt(default_prompt)
}
}
impl Prompt for CleanPrompt {
fn render_prompt_left(&self) -> Cow<'_, str> {
self.0.render_prompt_left()
}
fn render_prompt_right(&self) -> Cow<'_, str> {
self.0.render_prompt_right()
}
fn render_prompt_indicator(&self, _prompt_mode: PromptEditMode) -> Cow<'_, str> {
Cow::from("")
}
fn render_prompt_multiline_indicator(&self) -> Cow<'_, str> {
Cow::from("")
}
fn render_prompt_history_search_indicator(
&self,
_history_search: PromptHistorySearch,
) -> Cow<'_, str> {
Cow::from("")
}
}
impl Deref for CleanPrompt {
type Target = DefaultPrompt;
fn deref(&self) -> &Self::Target {
&self.0
}
}