diff options
Diffstat (limited to 'helix-term/src')
-rw-r--r-- | helix-term/src/ui/statusline.rs | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/helix-term/src/ui/statusline.rs b/helix-term/src/ui/statusline.rs index a25b4540..dbb513f8 100644 --- a/helix-term/src/ui/statusline.rs +++ b/helix-term/src/ui/statusline.rs @@ -141,6 +141,9 @@ where helix_view::editor::StatusLineElement::Spinner => render_lsp_spinner, helix_view::editor::StatusLineElement::FileBaseName => render_file_base_name, helix_view::editor::StatusLineElement::FileName => render_file_name, + helix_view::editor::StatusLineElement::FileModificationIndicator => { + render_file_modification_indicator + } helix_view::editor::StatusLineElement::FileEncoding => render_file_encoding, helix_view::editor::StatusLineElement::FileLineEnding => render_file_line_ending, helix_view::editor::StatusLineElement::FileType => render_file_type, @@ -417,16 +420,26 @@ where .as_ref() .map(|p| p.to_string_lossy()) .unwrap_or_else(|| SCRATCH_BUFFER_NAME.into()); - format!( - " {}{} ", - path, - if context.doc.is_modified() { "[+]" } else { "" } - ) + format!(" {} ", path) }; write(context, title, None); } +fn render_file_modification_indicator<F>(context: &mut RenderContext, write: F) +where + F: Fn(&mut RenderContext, String, Option<Style>) + Copy, +{ + let title = (if context.doc.is_modified() { + "[+]" + } else { + " " + }) + .to_string(); + + write(context, title, None); +} + fn render_file_base_name<F>(context: &mut RenderContext, write: F) where F: Fn(&mut RenderContext, String, Option<Style>) + Copy, @@ -437,11 +450,7 @@ where .as_ref() .and_then(|p| p.as_path().file_name().map(|s| s.to_string_lossy())) .unwrap_or_else(|| SCRATCH_BUFFER_NAME.into()); - format!( - " {}{} ", - path, - if context.doc.is_modified() { "[+]" } else { "" } - ) + format!(" {} ", path) }; write(context, title, None); |