diff --git a/config.example.toml b/config.example.toml index f8632b74..64ede336 100644 --- a/config.example.toml +++ b/config.example.toml @@ -11,6 +11,7 @@ default_room = "#iamb-users:0x.badd.cafe" default_split = "vertical" external_edit_file_suffix = ".md" ignorecase = false +input_prompt = "❯ " log_level = "warn" members_split = "vertical" message_shortcode_display = false diff --git a/docs/iamb.5 b/docs/iamb.5 index 9873a539..46cd8970 100644 --- a/docs/iamb.5 +++ b/docs/iamb.5 @@ -166,6 +166,8 @@ Subsection for configuring image previews. See for more details. .It Sy ignorecase Defines whether searches ignore case. Defaults to false. +.It Sy input_prompt +Override the default message bar prompt. .It Sy log_level Specifies the lowest log level that should be shown. Possible values are: diff --git a/src/config.rs b/src/config.rs index f797d4c5..898f68a8 100644 --- a/src/config.rs +++ b/src/config.rs @@ -832,6 +832,7 @@ pub struct TunableValues { pub user_gutter_width: usize, pub external_edit_file_suffix: String, pub tabstop: usize, + pub input_prompt: Option, pub members_split: Option, pub default_split: SplitDirection, pub ssl_verify: bool, @@ -883,6 +884,7 @@ pub struct Tunables { pub user_gutter_width: Option, pub external_edit_file_suffix: Option, pub tabstop: Option, + pub input_prompt: Option, pub members_split: Option, pub default_split: Option, pub ssl_verify: Option, @@ -933,6 +935,7 @@ impl Tunables { .external_edit_file_suffix .or(other.external_edit_file_suffix), tabstop: self.tabstop.or(other.tabstop), + input_prompt: self.input_prompt.or(other.input_prompt), members_split: self.members_split.or(other.members_split), default_split: self.default_split.or(other.default_split), ssl_verify: self.ssl_verify.or(other.ssl_verify), @@ -975,6 +978,7 @@ impl Tunables { .external_edit_file_suffix .unwrap_or_else(|| ".md".to_string()), tabstop: self.tabstop.unwrap_or(4), + input_prompt: self.input_prompt, members_split: self.members_split, default_split: self.default_split.unwrap_or_default(), ssl_verify: self.ssl_verify.unwrap_or(true), diff --git a/src/tests.rs b/src/tests.rs index dcf8533f..7a733132 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -170,6 +170,7 @@ pub fn mock_tunables() -> TunableValues { ignorecase: false, default_room: None, encryption: Encryption::default().values(), + input_prompt: None, log_level: "warn".into(), max_log_files: 7, message_shortcode_display: false, diff --git a/src/windows/room/chat.rs b/src/windows/room/chat.rs index a9e00fa5..b9136dc9 100644 --- a/src/windows/room/chat.rs +++ b/src/windows/room/chat.rs @@ -1177,10 +1177,12 @@ impl StatefulWidget for Chat<'_> { let encryption_settings = &settings.tunables.encryption; let encryption_indicator = encryption_settings .get_indicator(EncryptionIndicatorLocation::PROMPT, state.room().encryption_state()); - let prompt = match (self.focused, encryption_indicator) { - (false, _) => Span::raw(" "), - (true, Some(i)) => i, - (true, None) => Span::raw("> "), + let input_prompt = settings.tunables.input_prompt.as_deref(); + let prompt = match (self.focused, encryption_indicator, input_prompt) { + (false, _, _) => Span::raw(" "), + (true, Some(i), _) => i, + (true, None, None) => Span::raw("> "), + (true, None, Some(s)) => Span::raw(s), }; let tbox = TextBox::new().prompt(prompt);