Skip to content

Commit 2cb20ff

Browse files
committed
fix(statusline): restore the configurability of color modes
The configuration was ignored after reintegrating the changes of #2676 in 8d28f95.
1 parent fae2348 commit 2cb20ff

File tree

2 files changed

+26
-18
lines changed

2 files changed

+26
-18
lines changed

helix-term/src/ui/editor.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,9 +164,9 @@ impl EditorView {
164164
.clip_bottom(1); // -1 from bottom to remove commandline
165165

166166
let mut context =
167-
statusline::RenderContext::new(doc, view, &editor.theme, is_focused, &self.spinners);
167+
statusline::RenderContext::new(editor, doc, view, is_focused, &self.spinners);
168168

169-
statusline::render(editor, &mut context, statusline_area, surface);
169+
statusline::render(&mut context, statusline_area, surface);
170170
}
171171

172172
pub fn render_rulers(

helix-term/src/ui/statusline.rs

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use helix_view::{
33
document::{Mode, SCRATCH_BUFFER_NAME},
44
graphics::Rect,
55
theme::Style,
6-
Document, Editor, Theme, View,
6+
Document, Editor, View,
77
};
88

99
use crate::ui::ProgressSpinners;
@@ -13,26 +13,26 @@ use tui::buffer::Buffer as Surface;
1313
use tui::text::{Span, Spans};
1414

1515
pub struct RenderContext<'a> {
16+
pub editor: &'a Editor,
1617
pub doc: &'a Document,
1718
pub view: &'a View,
18-
pub theme: &'a Theme,
1919
pub focused: bool,
2020
pub spinners: &'a ProgressSpinners,
2121
pub parts: RenderBuffer<'a>,
2222
}
2323

2424
impl<'a> RenderContext<'a> {
2525
pub fn new(
26+
editor: &'a Editor,
2627
doc: &'a Document,
2728
view: &'a View,
28-
theme: &'a Theme,
2929
focused: bool,
3030
spinners: &'a ProgressSpinners,
3131
) -> Self {
3232
RenderContext {
33+
editor,
3334
doc,
3435
view,
35-
theme,
3636
focused,
3737
spinners,
3838
parts: RenderBuffer::default(),
@@ -47,11 +47,11 @@ pub struct RenderBuffer<'a> {
4747
pub right: Spans<'a>,
4848
}
4949

50-
pub fn render(editor: &Editor, context: &mut RenderContext, viewport: Rect, surface: &mut Surface) {
50+
pub fn render(context: &mut RenderContext, viewport: Rect, surface: &mut Surface) {
5151
let base_style = if context.focused {
52-
context.theme.get("ui.statusline")
52+
context.editor.theme.get("ui.statusline")
5353
} else {
54-
context.theme.get("ui.statusline.inactive")
54+
context.editor.theme.get("ui.statusline.inactive")
5555
};
5656

5757
surface.set_style(viewport.with_height(1), base_style);
@@ -68,7 +68,7 @@ pub fn render(editor: &Editor, context: &mut RenderContext, viewport: Rect, surf
6868

6969
// Left side of the status line.
7070

71-
let element_ids = &editor.config().statusline.left;
71+
let element_ids = &context.editor.config().statusline.left;
7272
element_ids
7373
.iter()
7474
.map(|element_id| get_render_function(*element_id))
@@ -83,7 +83,7 @@ pub fn render(editor: &Editor, context: &mut RenderContext, viewport: Rect, surf
8383

8484
// Right side of the status line.
8585

86-
let element_ids = &editor.config().statusline.right;
86+
let element_ids = &context.editor.config().statusline.right;
8787
element_ids
8888
.iter()
8989
.map(|element_id| get_render_function(*element_id))
@@ -101,7 +101,7 @@ pub fn render(editor: &Editor, context: &mut RenderContext, viewport: Rect, surf
101101

102102
// Center of the status line.
103103

104-
let element_ids = &editor.config().statusline.center;
104+
let element_ids = &context.editor.config().statusline.center;
105105
element_ids
106106
.iter()
107107
.map(|element_id| get_render_function(*element_id))
@@ -166,11 +166,11 @@ where
166166
" "
167167
}
168168
),
169-
if visible {
169+
if visible && context.editor.config().color_modes {
170170
match context.doc.mode() {
171-
Mode::Insert => Some(context.theme.get("ui.statusline.insert")),
172-
Mode::Select => Some(context.theme.get("ui.statusline.select")),
173-
Mode::Normal => Some(context.theme.get("ui.statusline.normal")),
171+
Mode::Insert => Some(context.editor.theme.get("ui.statusline.insert")),
172+
Mode::Select => Some(context.editor.theme.get("ui.statusline.select")),
173+
Mode::Normal => Some(context.editor.theme.get("ui.statusline.normal")),
174174
}
175175
} else {
176176
None
@@ -219,12 +219,20 @@ where
219219
});
220220

221221
if warnings > 0 {
222-
write(context, "●".to_string(), Some(context.theme.get("warning")));
222+
write(
223+
context,
224+
"●".to_string(),
225+
Some(context.editor.theme.get("warning")),
226+
);
223227
write(context, format!(" {} ", warnings), None);
224228
}
225229

226230
if errors > 0 {
227-
write(context, "●".to_string(), Some(context.theme.get("error")));
231+
write(
232+
context,
233+
"●".to_string(),
234+
Some(context.editor.theme.get("error")),
235+
);
228236
write(context, format!(" {} ", errors), None);
229237
}
230238
}

0 commit comments

Comments
 (0)