fix: lead the bottom position indicator with one margin column
This commit is contained in:
+23
-8
@@ -106,7 +106,7 @@ pub struct ChromeLine {
|
||||
pub struct SegmentConfig {
|
||||
pub title: String,
|
||||
pub padding: usize,
|
||||
pub margin: usize,
|
||||
pub margin: [usize; 2],
|
||||
pub leading_edge: String,
|
||||
pub trailing_edge: String,
|
||||
pub first_leading_edge: Option<String>,
|
||||
@@ -117,7 +117,7 @@ impl Default for SegmentConfig {
|
||||
Self {
|
||||
title: String::new(),
|
||||
padding: 1,
|
||||
margin: 0,
|
||||
margin: [0; 2],
|
||||
leading_edge: String::new(),
|
||||
trailing_edge: String::new(),
|
||||
first_leading_edge: None,
|
||||
@@ -148,7 +148,13 @@ impl ChromeLine {
|
||||
right: vec!["language".into(), "lsp".into(), "position".into()],
|
||||
segments: DEFAULT_BOTTOM_SEGMENTS
|
||||
.iter()
|
||||
.map(|name| ((*name).into(), default_segment(name)))
|
||||
.map(|name| {
|
||||
let mut segment = default_segment(name);
|
||||
if *name == "position" {
|
||||
segment.margin[0] = 1;
|
||||
}
|
||||
((*name).into(), segment)
|
||||
})
|
||||
.collect(),
|
||||
}
|
||||
}
|
||||
@@ -169,7 +175,11 @@ impl ChromeLine {
|
||||
validate_name(name)?;
|
||||
}
|
||||
for (name, segment) in &self.segments {
|
||||
for (option, value) in [("padding", segment.padding), ("margin", segment.margin)] {
|
||||
for (option, value) in [
|
||||
("padding", segment.padding),
|
||||
("leading_margin", segment.margin[0]),
|
||||
("trailing_margin", segment.margin[1]),
|
||||
] {
|
||||
if value > 64 {
|
||||
return Err(format!(
|
||||
"Chrome segment {name:?} {option} must be between 0 and 64"
|
||||
@@ -202,9 +212,6 @@ impl ChromeLine {
|
||||
|
||||
fn default_segment(name: &str) -> SegmentConfig {
|
||||
let mut segment = SegmentConfig::default();
|
||||
if name == "lsp" {
|
||||
segment.margin = 1;
|
||||
}
|
||||
if matches!(name, "tabs" | "position" | "battery") {
|
||||
segment.leading_edge = "░▓".into();
|
||||
}
|
||||
@@ -266,6 +273,8 @@ struct SegmentOptions {
|
||||
title: Option<String>,
|
||||
padding: Option<usize>,
|
||||
margin: Option<usize>,
|
||||
leading_margin: Option<usize>,
|
||||
trailing_margin: Option<usize>,
|
||||
leading_edge: Option<String>,
|
||||
trailing_edge: Option<String>,
|
||||
first_leading_edge: Option<String>,
|
||||
@@ -313,7 +322,13 @@ fn deserialize_line<'de, D: Deserializer<'de>>(
|
||||
segment.padding = padding;
|
||||
}
|
||||
if let Some(margin) = options.margin {
|
||||
segment.margin = margin;
|
||||
segment.margin = [margin; 2];
|
||||
}
|
||||
if let Some(margin) = options.leading_margin {
|
||||
segment.margin[0] = margin;
|
||||
}
|
||||
if let Some(margin) = options.trailing_margin {
|
||||
segment.margin[1] = margin;
|
||||
}
|
||||
if let Some(edge) = options.leading_edge {
|
||||
segment.leading_edge = edge;
|
||||
|
||||
Reference in New Issue
Block a user