Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'helix-view/src/info.rs')
| -rw-r--r-- | helix-view/src/info.rs | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/helix-view/src/info.rs b/helix-view/src/info.rs index ca783fef..7fc43f22 100644 --- a/helix-view/src/info.rs +++ b/helix-view/src/info.rs @@ -1,12 +1,12 @@ use crate::register::Registers; use helix_core::unicode::width::UnicodeWidthStr; -use std::fmt::Write; +use std::{borrow::Cow, fmt::Write}; #[derive(Debug)] /// Info box used in editor. Rendering logic will be in other crate. pub struct Info { /// Title shown at top. - pub title: String, + pub title: Cow<'static, str>, /// Text body, should contain newlines. pub text: String, /// Body width. @@ -16,17 +16,19 @@ pub struct Info { } impl Info { - pub fn new<T, U>(title: &str, body: &[(T, U)]) -> Self + pub fn new<T, K, V>(title: T, body: &[(K, V)]) -> Self where - T: AsRef<str>, - U: AsRef<str>, + T: Into<Cow<'static, str>>, + K: AsRef<str>, + V: AsRef<str>, { + let title = title.into(); if body.is_empty() { return Self { - title: title.to_string(), height: 1, width: title.len() as u16, text: "".to_string(), + title, }; } @@ -48,7 +50,7 @@ impl Info { } Self { - title: title.to_string(), + title, width: text.lines().map(|l| l.width()).max().unwrap() as u16, height: body.len() as u16, text, |