diff --git a/src/references.rs b/src/references.rs index 3b4400f2..f9da66f8 100644 --- a/src/references.rs +++ b/src/references.rs @@ -6,23 +6,25 @@ use tower_lsp::lsp_types::{Location, Position, Url}; use crate::vault::{Reference, Vault}; pub fn references(vault: &Vault, cursor_position: Position, path: &Path) -> Option> { + let references: Vec<(&Path, &Reference)> = vault - .select_referenceable_at_position(path, cursor_position) - .and_then(|referenceable| vault.select_references_for_referenceable(&referenceable)) - .or(vault - .select_reference_at_position(path, cursor_position) - .map(|reference| { - let referenceables = vault.select_referenceables_for_reference(reference, path); - let references = referenceables - .into_iter() - .filter_map(|referenceable| { - vault.select_references_for_referenceable(&referenceable) - }) // drop the Nones on the options - .flatten() - .collect_vec(); + .select_reference_at_position(path, cursor_position) + .map(|reference| { + let referenceables = vault.select_referenceables_for_reference(reference, path); + let references = referenceables + .into_iter() + .filter_map(|referenceable| { + vault.select_references_for_referenceable(&referenceable) + }) // drop the Nones on the options + .flatten() + .collect_vec(); - references - }))?; + references + }) + .or(vault + .select_referenceable_at_position(path, cursor_position) + .and_then(|referenceable| vault.select_references_for_referenceable(&referenceable)) + )?; Some( references