Unnamed repository; edit this file 'description' to name the repository.
statusline: dynamic padding for unfocused mode (#14440)
Piotr GinaƂ 5 months ago
parent d015eff · commit ffe513d
-rw-r--r--helix-term/src/ui/statusline.rs20
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() {