From 57c990e2800fe99943674c9af0d2053d1dff7d55 Mon Sep 17 00:00:00 2001 From: Dylan Bulfin Date: Thu, 8 Dec 2022 16:24:46 -0500 Subject: [PATCH] Added command to differentiate duplicate names in bufferline Refactored logic, uses HashMap for efficiency Changed conditional --- helix-term/src/ui/editor.rs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/helix-term/src/ui/editor.rs b/helix-term/src/ui/editor.rs index fc201853f..7e3b0681f 100644 --- a/helix-term/src/ui/editor.rs +++ b/helix-term/src/ui/editor.rs @@ -671,6 +671,9 @@ impl EditorView { let mut x = viewport.x; let current_doc = view!(editor).doc; + use std::collections::HashMap; + let mut names_map: HashMap<&str, usize> = HashMap::new(); + for doc in editor.documents() { let fname = doc .path() @@ -680,6 +683,28 @@ impl EditorView { .to_str() .unwrap_or_default(); + if names_map.contains_key(fname) { + names_map.insert(fname, names_map.get(fname).unwrap() + 1); + } else { + names_map.insert(fname, 1); + } + } + + for doc in editor.documents() { + let mut fname = doc + .path() + .unwrap_or(&scratch) + .file_name() + .unwrap_or_default() + .to_str() + .unwrap_or_default(); + + let rel_path = doc.relative_path().unwrap_or_default(); + + if *names_map.get(fname).unwrap() > 1 { + fname = rel_path.to_str().unwrap_or_default(); + } + let style = if current_doc == doc.id() { bufferline_active } else {