relative paths showing active file in global search (#803)

This commit is contained in:
Ethan Frei 2021-10-07 21:08:10 -05:00 committed by GitHub
parent 2e692dc184
commit 9f27be429d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1291,7 +1291,8 @@ fn global_search(cx: &mut Context) {
cx.push_layer(Box::new(prompt));
let root = find_root(None).unwrap_or_else(|| PathBuf::from("./"));
let current_path = doc_mut!(cx.editor).path().cloned();
let show_picker = async move {
let all_matches: Vec<(usize, PathBuf)> =
UnboundedReceiverStream::new(all_matches_rx).collect().await;
@ -1301,14 +1302,19 @@ fn global_search(cx: &mut Context) {
editor.set_status("No matches found".to_string());
return;
}
let picker = FilePicker::new(
all_matches,
move |(_line_num, path)| {
path.strip_prefix(&root)
.unwrap_or(path)
let relative_path = helix_core::path::get_relative_path(path)
.to_str()
.unwrap()
.into()
.to_owned();
if current_path.as_ref().map(|p| p == path).unwrap_or(false) {
format!("{} (*)", relative_path).into()
} else {
relative_path.into()
}
},
move |editor: &mut Editor, (line_num, path), action| {
match editor.open(path.into(), action) {