Unnamed repository; edit this file 'description' to name the repository.
statusline: dynamic padding for unfocused mode (#14440)
| -rw-r--r-- | helix-term/src/ui/statusline.rs | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/helix-term/src/ui/statusline.rs b/helix-term/src/ui/statusline.rs index aad3d532..88c75fe1 100644 --- a/helix-term/src/ui/statusline.rs +++ b/helix-term/src/ui/statusline.rs @@ -1,7 +1,5 @@ -use std::borrow::Cow; - use helix_core::indent::IndentStyle; -use helix_core::{coords_at_pos, encoding, Position}; +use helix_core::{coords_at_pos, encoding, unicode::width::UnicodeWidthStr, Position}; use helix_lsp::lsp::DiagnosticSeverity; use helix_view::document::DEFAULT_LANGUAGE_NAME; use helix_view::{ @@ -169,18 +167,16 @@ where let visible = context.focused; let config = context.editor.config(); let modenames = &config.statusline.mode; + let mode_str = match context.editor.mode() { + Mode::Insert => &modenames.insert, + Mode::Select => &modenames.select, + Mode::Normal => &modenames.normal, + }; let content = if visible { - Cow::Owned(format!( - " {} ", - match context.editor.mode() { - Mode::Insert => &modenames.insert, - Mode::Select => &modenames.select, - Mode::Normal => &modenames.normal, - } - )) + format!(" {mode_str} ") } else { // If not focused, explicitly leave an empty space instead of returning None. - Cow::Borrowed(" ") + " ".repeat(mode_str.width() + 2) }; let style = if visible && config.color_modes { match context.editor.mode() { |