aboutsummaryrefslogtreecommitdiff
path: root/helix-term/src
diff options
context:
space:
mode:
authorNick2022-12-31 14:18:14 +0000
committerGitHub2022-12-31 14:18:14 +0000
commitc9ed42cdec95b67b0d0ed15218daff37358ca86f (patch)
tree99fd7a7233f24cdb80a855f670cef2f297a8fbcf /helix-term/src
parent63dcaae1b9083396fb3faaef9eaa2421f7e48fb9 (diff)
Add a status line element that shows just the basename of the file (#5318)
Diffstat (limited to 'helix-term/src')
-rw-r--r--helix-term/src/ui/statusline.rs21
1 files changed, 21 insertions, 0 deletions
diff --git a/helix-term/src/ui/statusline.rs b/helix-term/src/ui/statusline.rs
index 501faea3..a25b4540 100644
--- a/helix-term/src/ui/statusline.rs
+++ b/helix-term/src/ui/statusline.rs
@@ -139,6 +139,7 @@ where
match element_id {
helix_view::editor::StatusLineElement::Mode => render_mode,
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::FileEncoding => render_file_encoding,
helix_view::editor::StatusLineElement::FileLineEnding => render_file_line_ending,
@@ -426,6 +427,26 @@ where
write(context, title, None);
}
+fn render_file_base_name<F>(context: &mut RenderContext, write: F)
+where
+ F: Fn(&mut RenderContext, String, Option<Style>) + Copy,
+{
+ let title = {
+ let rel_path = context.doc.relative_path();
+ let path = rel_path
+ .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 { "" }
+ )
+ };
+
+ write(context, title, None);
+}
+
fn render_separator<F>(context: &mut RenderContext, write: F)
where
F: Fn(&mut RenderContext, String, Option<Style>) + Copy,