diff options
author | Gokul Soumya | 2022-05-31 17:13:08 +0000 |
---|---|---|
committer | Blaž Hrastnik | 2022-06-21 16:43:25 +0000 |
commit | 8ad0b83e306ff6dfc1499d3e6d25b2fd36a096a4 (patch) | |
tree | 501b37975764e8d3e14a7a5140e8ec81e5a7bd53 /helix-term/src | |
parent | 924b4ebb39df71d8499e7d38015c2423a89a3e49 (diff) |
Make indent guides configurable
Diffstat (limited to 'helix-term/src')
-rw-r--r-- | helix-term/src/ui/editor.rs | 20 | ||||
-rw-r--r-- | helix-term/src/ui/picker.rs | 2 |
2 files changed, 13 insertions, 9 deletions
diff --git a/helix-term/src/ui/editor.rs b/helix-term/src/ui/editor.rs index 7455f625..ec25ce94 100644 --- a/helix-term/src/ui/editor.rs +++ b/helix-term/src/ui/editor.rs @@ -131,7 +131,7 @@ impl EditorView { surface, theme, highlights, - &editor.config().whitespace, + &editor.config(), ); Self::render_gutter(editor, doc, view, view.area, surface, theme, is_focused); Self::render_rulers(editor, doc, view, inner, surface, theme); @@ -373,8 +373,9 @@ impl EditorView { surface: &mut Surface, theme: &Theme, highlights: H, - whitespace: &helix_view::editor::WhitespaceConfig, + config: &helix_view::editor::Config, ) { + let whitespace = &config.whitespace; use helix_view::editor::WhitespaceRenderValue; // It's slightly more efficient to produce a full RopeSlice from the Rope, then slice that a bunch @@ -397,22 +398,25 @@ impl EditorView { } else { " ".to_string() }; + let indent_guide_char = config.indent_guides.character.to_string(); let text_style = theme.get("ui.text"); let whitespace_style = theme.get("ui.virtual.whitespace"); let mut is_in_indent_area = true; let mut last_line_indent_level = 0; - let indent_style = theme - .try_get("ui.virtual.indent-guide") - .unwrap_or_else(|| theme.get("comment")); + let indent_style = theme.get("ui.virtual.indent-guide"); let draw_indent_guides = |indent_level, line, surface: &mut Surface| { + if !config.indent_guides.render { + return; + } + for i in 0..(indent_level / tab_width as u16) { surface.set_string( viewport.x + (i * tab_width as u16) - offset.col as u16, viewport.y + line, - "│", + &indent_guide_char, indent_style, ); } @@ -491,7 +495,7 @@ impl EditorView { let grapheme = Cow::from(grapheme); let is_whitespace; - let (grapheme, width) = if grapheme == "\t" { + let (display_grapheme, width) = if grapheme == "\t" { is_whitespace = true; // make sure we display tab as appropriate amount of spaces let visual_tab_width = tab_width - (visual_x as usize % tab_width); @@ -518,7 +522,7 @@ impl EditorView { surface.set_string( viewport.x + visual_x - offset.col as u16, viewport.y + line, - grapheme, + display_grapheme, if is_whitespace { style.patch(whitespace_style) } else { diff --git a/helix-term/src/ui/picker.rs b/helix-term/src/ui/picker.rs index 9ffe45c1..95ec8405 100644 --- a/helix-term/src/ui/picker.rs +++ b/helix-term/src/ui/picker.rs @@ -240,7 +240,7 @@ impl<T: 'static> Component for FilePicker<T> { surface, &cx.editor.theme, highlights, - &cx.editor.config().whitespace, + &cx.editor.config(), ); // highlight the line |