add configurable / theme-able statusline separator string (#3175)
* add configurable separator element to statusline * themable separator * clippy fixes * changed default separator to │ * doc updates
This commit is contained in:
parent
61856f1d64
commit
846a6b65c3
4 changed files with 23 additions and 0 deletions
|
@ -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
|
||||
|
|
|
@ -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 |
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue