aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSeth Bromberger2022-07-26 23:47:22 +0000
committerGitHub2022-07-26 23:47:22 +0000
commit846a6b65c3d13f49b571beee2189d17b71c92e3f (patch)
treee338696d783cfcde5eea4ca458fa938730ef136d
parent61856f1d64557a053f9160698ab8751bf01d76ab (diff)
add configurable / theme-able statusline separator string (#3175)
* add configurable separator element to statusline * themable separator * clippy fixes * changed default separator to │ * doc updates
-rw-r--r--book/src/configuration.md2
-rw-r--r--book/src/themes.md1
-rw-r--r--helix-term/src/ui/statusline.rs14
-rw-r--r--helix-view/src/editor.rs6
4 files changed, 23 insertions, 0 deletions
diff --git a/book/src/configuration.md b/book/src/configuration.md
index 5372b9f0..5eb94c4e 100644
--- a/book/src/configuration.md
+++ b/book/src/configuration.md
@@ -63,6 +63,7 @@ Statusline elements can be defined as follows:
left = ["mode", "spinner"]
center = ["file-name"]
right = ["diagnostics", "selections", "position", "file-encoding", "file-line-ending", "file-type"]
+separator = "│"
```
The following elements can be configured:
@@ -79,6 +80,7 @@ The following elements can be configured:
| `selections` | The number of active selections |
| `position` | The cursor position |
| `position-percentage` | The cursor position as a percentage of the total number of lines |
+| `separator` | The string defined in `editor.statusline.separator` (defaults to `"│"`) |
| `spacer` | Inserts a space between elements (multiple/contiguous spacers may be specified) |
### `[editor.lsp]` Section
diff --git a/book/src/themes.md b/book/src/themes.md
index ad8864b2..e03782db 100644
--- a/book/src/themes.md
+++ b/book/src/themes.md
@@ -224,6 +224,7 @@ These scopes are used for theming the editor interface.
| `ui.statusline.normal` | Statusline mode during normal mode ([only if `editor.color-modes` is enabled][editor-section]) |
| `ui.statusline.insert` | Statusline mode during insert mode ([only if `editor.color-modes` is enabled][editor-section]) |
| `ui.statusline.select` | Statusline mode during select mode ([only if `editor.color-modes` is enabled][editor-section]) |
+| `ui.statusline.separator` | Separator character in statusline |
| `ui.popup` | Documentation popups (e.g space-k) |
| `ui.popup.info` | Prompt for multiple key options |
| `ui.window` | Border lines separating splits |
diff --git a/helix-term/src/ui/statusline.rs b/helix-term/src/ui/statusline.rs
index df6d4800..75e5dbd7 100644
--- a/helix-term/src/ui/statusline.rs
+++ b/helix-term/src/ui/statusline.rs
@@ -144,6 +144,7 @@ where
helix_view::editor::StatusLineElement::Selections => render_selections,
helix_view::editor::StatusLineElement::Position => render_position,
helix_view::editor::StatusLineElement::PositionPercentage => render_position_percentage,
+ helix_view::editor::StatusLineElement::Separator => render_separator,
helix_view::editor::StatusLineElement::Spacer => render_spacer,
}
}
@@ -353,6 +354,19 @@ where
write(context, title, None);
}
+fn render_separator<F>(context: &mut RenderContext, write: F)
+where
+ F: Fn(&mut RenderContext, String, Option<Style>) + Copy,
+{
+ let sep = &context.editor.config().statusline.separator;
+
+ write(
+ context,
+ sep.to_string(),
+ Some(context.editor.theme.get("ui.statusline.separator")),
+ );
+}
+
fn render_spacer<F>(context: &mut RenderContext, write: F)
where
F: Fn(&mut RenderContext, String, Option<Style>) + Copy,
diff --git a/helix-view/src/editor.rs b/helix-view/src/editor.rs
index f99924cf..501c3069 100644
--- a/helix-view/src/editor.rs
+++ b/helix-view/src/editor.rs
@@ -203,6 +203,7 @@ pub struct StatusLineConfig {
pub left: Vec<StatusLineElement>,
pub center: Vec<StatusLineElement>,
pub right: Vec<StatusLineElement>,
+ pub separator: String,
}
impl Default for StatusLineConfig {
@@ -213,6 +214,7 @@ impl Default for StatusLineConfig {
left: vec![E::Mode, E::Spinner, E::FileName],
center: vec![],
right: vec![E::Diagnostics, E::Selections, E::Position, E::FileEncoding],
+ separator: String::from("│"),
}
}
}
@@ -247,8 +249,12 @@ pub enum StatusLineElement {
/// The cursor position
Position,
+ /// The separator string
+ Separator,
+
/// The cursor position as a percent of the total file
PositionPercentage,
+
/// A single space
Spacer,
}