refactor(statusline): refactor some code following the code review

Avoid very small helper functions for the diagnositcs and inline them
instead.
Rename the config field `status_line` to `statusline` to remain
consistent with `bufferline`.
pull/2434/head
etienne-k 2 years ago
parent 2dc4d343ae
commit 5cb4e76432

@ -62,7 +62,7 @@ impl StatusLine {
context.theme.get("ui.statusline.inactive") context.theme.get("ui.statusline.inactive")
}; };
surface.set_style(viewport.with_height(1), base_style); surface.set_style(viewport, base_style);
let write_left = |context: &mut RenderContext, text, style| { let write_left = |context: &mut RenderContext, text, style| {
Self::append(&mut context.parts.left, text, &base_style, style) Self::append(&mut context.parts.left, text, &base_style, style)
@ -76,7 +76,7 @@ impl StatusLine {
// Left side of the status line. // Left side of the status line.
let element_ids = &editor.config().status_line.left; let element_ids = &editor.config().statusline.left;
element_ids element_ids
.iter() .iter()
.map(|element_id| Self::get_render_function(*element_id)) .map(|element_id| Self::get_render_function(*element_id))
@ -91,7 +91,7 @@ impl StatusLine {
// Right side of the status line. // Right side of the status line.
let element_ids = &editor.config().status_line.right; let element_ids = &editor.config().statusline.right;
element_ids element_ids
.iter() .iter()
.map(|element_id| Self::get_render_function(*element_id)) .map(|element_id| Self::get_render_function(*element_id))
@ -109,7 +109,7 @@ impl StatusLine {
// Center of the status line. // Center of the status line.
let element_ids = &editor.config().status_line.center; let element_ids = &editor.config().statusline.center;
element_ids element_ids
.iter() .iter()
.map(|element_id| Self::get_render_function(*element_id)) .map(|element_id| Self::get_render_function(*element_id))
@ -220,45 +220,14 @@ impl StatusLine {
}); });
if warnings > 0 { if warnings > 0 {
Self::render_diagnostics_warning_state(context, write);
Self::render_diagnostics_warning_count(context, warnings, write);
}
if errors > 0 {
Self::render_diagnostics_error_state(context, write);
Self::render_diagnostics_error_count(context, errors, write);
}
}
fn render_diagnostics_warning_state<F>(context: &mut RenderContext, write: F)
where
F: Fn(&mut RenderContext, String, Option<Style>) + Copy,
{
write(context, "●".to_string(), Some(context.theme.get("warning"))); write(context, "●".to_string(), Some(context.theme.get("warning")));
write(context, format!(" {} ", warnings), None);
} }
fn render_diagnostics_warning_count<F>( if errors > 0 {
context: &mut RenderContext,
warning_count: usize,
write: F,
) where
F: Fn(&mut RenderContext, String, Option<Style>) + Copy,
{
write(context, format!(" {} ", warning_count), None);
}
fn render_diagnostics_error_state<F>(context: &mut RenderContext, write: F)
where
F: Fn(&mut RenderContext, String, Option<Style>) + Copy,
{
write(context, "●".to_string(), Some(context.theme.get("error"))); write(context, "●".to_string(), Some(context.theme.get("error")));
write(context, format!(" {} ", errors), None);
} }
fn render_diagnostics_error_count<F>(context: &mut RenderContext, error_count: usize, write: F)
where
F: Fn(&mut RenderContext, String, Option<Style>) + Copy,
{
write(context, format!(" {} ", error_count), None);
} }
fn render_selections<F>(context: &mut RenderContext, write: F) fn render_selections<F>(context: &mut RenderContext, write: F)

@ -148,7 +148,7 @@ pub struct Config {
pub auto_info: bool, pub auto_info: bool,
pub file_picker: FilePickerConfig, pub file_picker: FilePickerConfig,
/// Configuration of the statusline elements /// Configuration of the statusline elements
pub status_line: StatusLineConfig, pub statusline: StatusLineConfig,
/// Shape for cursor in each mode /// Shape for cursor in each mode
pub cursor_shape: CursorShapeConfig, pub cursor_shape: CursorShapeConfig,
/// Set to `true` to override automatic detection of terminal truecolor support in the event of a false negative. Defaults to `false`. /// Set to `true` to override automatic detection of terminal truecolor support in the event of a false negative. Defaults to `false`.
@ -459,7 +459,7 @@ impl Default for Config {
completion_trigger_len: 2, completion_trigger_len: 2,
auto_info: true, auto_info: true,
file_picker: FilePickerConfig::default(), file_picker: FilePickerConfig::default(),
status_line: StatusLineConfig::default(), statusline: StatusLineConfig::default(),
cursor_shape: CursorShapeConfig::default(), cursor_shape: CursorShapeConfig::default(),
true_color: false, true_color: false,
search: SearchConfig::default(), search: SearchConfig::default(),

Loading…
Cancel
Save