summaryrefslogtreecommitdiffstats
path: root/default-plugins
diff options
context:
space:
mode:
authorPaulo Coelho <9609090+prscoelho@users.noreply.github.com>2021-09-12 19:29:07 +0100
committerGitHub <noreply@github.com>2021-09-12 20:29:07 +0200
commitaae9c9c807d5990fb3cdc6fcb3fd0bb8c3c3c7f2 (patch)
tree2a565e6aecc5f3346633c6ae7b3ed3cafc3483fd /default-plugins
parent8888476885d80a5727ac9c23f2e4c288b75aadb8 (diff)
Calculate width with unicode-width in tab-bar and utils (#709)
* fix(tab-bar): calculate string width using unicode-width * fix(utils): calculate ansi_len using unicode-width
Diffstat (limited to 'default-plugins')
-rw-r--r--default-plugins/tab-bar/Cargo.toml1
-rw-r--r--default-plugins/tab-bar/src/line.rs7
-rw-r--r--default-plugins/tab-bar/src/tab.rs5
3 files changed, 8 insertions, 5 deletions
diff --git a/default-plugins/tab-bar/Cargo.toml b/default-plugins/tab-bar/Cargo.toml
index dd91bdb5c..7fd6593dd 100644
--- a/default-plugins/tab-bar/Cargo.toml
+++ b/default-plugins/tab-bar/Cargo.toml
@@ -8,5 +8,6 @@ license = "MIT"
[dependencies]
colored = "2"
ansi_term = "0.12"
+unicode-width = "0.1.8"
zellij-tile = { path = "../../zellij-tile" }
zellij-tile-utils = { path = "../../zellij-tile-utils" } \ No newline at end of file
diff --git a/default-plugins/tab-bar/src/line.rs b/default-plugins/tab-bar/src/line.rs
index be5623ff9..af78b0fcf 100644
--- a/default-plugins/tab-bar/src/line.rs
+++ b/default-plugins/tab-bar/src/line.rs
@@ -1,4 +1,5 @@
use ansi_term::ANSIStrings;
+use unicode_width::UnicodeWidthStr;
use crate::{LinePart, ARROW_SEPARATOR};
use zellij_tile::prelude::*;
@@ -100,7 +101,7 @@ fn left_more_message(tab_count_to_the_left: usize, palette: Palette, separator:
};
// 238
// chars length plus separator length on both sides
- let more_text_len = more_text.chars().count() + 2 * separator.chars().count();
+ let more_text_len = more_text.width() + 2 * separator.width();
let left_separator = style!(palette.cyan, palette.orange).paint(separator);
let more_styled_text = style!(palette.black, palette.orange)
.bold()
@@ -130,7 +131,7 @@ fn right_more_message(
" +many → ".to_string()
};
// chars length plus separator length on both sides
- let more_text_len = more_text.chars().count() + 2 * separator.chars().count();
+ let more_text_len = more_text.width() + 2 * separator.width();
let left_separator = style!(palette.cyan, palette.orange).paint(separator);
let more_styled_text = style!(palette.black, palette.orange)
.bold()
@@ -159,7 +160,7 @@ fn tab_line_prefix(session_name: Option<&str>, palette: Palette, cols: usize) ->
}];
if let Some(name) = session_name {
let name_part = format!("({}) ", name);
- let name_part_len = name_part.chars().count();
+ let name_part_len = name_part.width();
let name_part_styled_text = style!(palette.white, palette.cyan).bold().paint(name_part);
if cols.saturating_sub(prefix_text_len) >= name_part_len {
parts.push(LinePart {
diff --git a/default-plugins/tab-bar/src/tab.rs b/default-plugins/tab-bar/src/tab.rs
index dfa5ab776..fdb498553 100644
--- a/default-plugins/tab-bar/src/tab.rs
+++ b/default-plugins/tab-bar/src/tab.rs
@@ -1,11 +1,12 @@
use crate::{line::tab_separator, LinePart};
use ansi_term::ANSIStrings;
+use unicode_width::UnicodeWidthStr;
use zellij_tile::prelude::*;
use zellij_tile_utils::style;
pub fn active_tab(text: String, palette: Palette, separator: &str) -> LinePart {
let left_separator = style!(palette.cyan, palette.green).paint(separator);
- let tab_text_len = text.chars().count() + 2 + separator.chars().count() * 2; // 2 for left and right separators, 2 for the text padding
+ let tab_text_len = text.width() + 2 + separator.width() * 2; // 2 for left and right separators, 2 for the text padding
let tab_styled_text = style!(palette.black, palette.green)
.bold()
.paint(format!(" {} ", text));
@@ -22,7 +23,7 @@ pub fn active_tab(text: String, palette: Palette, separator: &str) -> LinePart {
pub fn non_active_tab(text: String, palette: Palette, separator: &str) -> LinePart {
let left_separator = style!(palette.cyan, palette.fg).paint(separator);
- let tab_text_len = text.chars().count() + 2 + separator.chars().count() * 2; // 2 for left and right separators, 2 for the text padding
+ let tab_text_len = text.width() + 2 + separator.width() * 2; // 2 for left and right separators, 2 for the text padding
let tab_styled_text = style!(palette.black, palette.fg)
.bold()
.paint(format!(" {} ", text));