From 0581f96f4614a8b53f52de880a2d9358c7000408 Mon Sep 17 00:00:00 2001 From: Michael Aaron Murphy Date: Thu, 14 Dec 2023 22:56:42 +0100 Subject: [PATCH] feat: improve tab title for mod.rs files --- src/tab.rs | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/tab.rs b/src/tab.rs index 1f77d40..d8f0604 100644 --- a/src/tab.rs +++ b/src/tab.rs @@ -190,7 +190,10 @@ impl EditorTab { if let Some(path) = &self.path_opt { match path.file_name() { Some(file_name_os) => match file_name_os.to_str() { - Some(file_name) => file_name.to_string(), + Some(file_name) => match file_name { + "mod.rs" => title_with_parent(&path, file_name), + _ => file_name.to_string(), + }, None => format!("{}", path.display()), }, None => format!("{}", path.display()), @@ -290,3 +293,18 @@ impl EditorTab { false } } + +/// Includes parent name in tab title +/// +/// Useful for distinguishing between Rust modules named `mod.rs` +fn title_with_parent(path: &std::path::Path, file_name: &str) -> String { + let parent_name = path + .parent() + .and_then(|path| path.file_name()) + .and_then(|os_str| os_str.to_str()); + + match parent_name { + Some(parent) => [parent, "/", file_name].concat(), + None => file_name.to_string(), + } +}