aboutsummaryrefslogtreecommitdiff
path: root/helix-term
diff options
context:
space:
mode:
authorGokul Soumya2022-05-31 17:13:08 +0000
committerBlaž Hrastnik2022-06-21 16:43:25 +0000
commit8ad0b83e306ff6dfc1499d3e6d25b2fd36a096a4 (patch)
tree501b37975764e8d3e14a7a5140e8ec81e5a7bd53 /helix-term
parent924b4ebb39df71d8499e7d38015c2423a89a3e49 (diff)
Make indent guides configurable
Diffstat (limited to 'helix-term')
-rw-r--r--helix-term/src/ui/editor.rs20
-rw-r--r--helix-term/src/ui/picker.rs2
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