From adb5d842ba3ff7e539a77de54a0a8db3018a3844 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bla=C5=BE=20Hrastnik?= Date: Tue, 3 Aug 2021 09:29:03 +0900 Subject: [PATCH] Use nicer filepaths instead of URIs in goto picker --- helix-term/src/commands.rs | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs index 7403f5b2..cc2c2cca 100644 --- a/helix-term/src/commands.rs +++ b/helix-term/src/commands.rs @@ -2497,6 +2497,8 @@ fn goto_impl( align_view(doc, view, Align::Center); } + let cwdir = std::env::current_dir().expect("couldn't determine current directory"); + match locations.as_slice() { [location] => { jump_to(editor, location, offset_encoding, Action::Replace); @@ -2507,8 +2509,23 @@ fn goto_impl( _locations => { let picker = ui::Picker::new( locations, - |location| { - let file = location.uri.as_str(); + move |location| { + let file: Cow<'_, str> = (location.uri.scheme() == "file") + .then(|| { + location + .uri + .to_file_path() + .map(|path| { + // strip root prefix + path.strip_prefix(&cwdir) + .map(|path| path.to_path_buf()) + .unwrap_or(path) + }) + .ok() + .and_then(|path| path.to_str().map(|path| path.to_owned().into())) + }) + .flatten() + .unwrap_or_else(|| location.uri.as_str().into()); let line = location.range.start.line; format!("{}:{}", file, line).into() },