diff options
author | Seth Bromberger | 2022-07-26 23:47:22 +0000 |
---|---|---|
committer | GitHub | 2022-07-26 23:47:22 +0000 |
commit | 846a6b65c3d13f49b571beee2189d17b71c92e3f (patch) | |
tree | e338696d783cfcde5eea4ca458fa938730ef136d | |
parent | 61856f1d64557a053f9160698ab8751bf01d76ab (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.md | 2 | ||||
-rw-r--r-- | book/src/themes.md | 1 | ||||
-rw-r--r-- | helix-term/src/ui/statusline.rs | 14 | ||||
-rw-r--r-- | helix-view/src/editor.rs | 6 |
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, } |