summaryrefslogtreecommitdiff
path: root/helix-term/src/ui/statusline.rs
diff options
context:
space:
mode:
Diffstat (limited to 'helix-term/src/ui/statusline.rs')
-rw-r--r--helix-term/src/ui/statusline.rs29
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);