summaryrefslogtreecommitdiff
path: root/support/texlab/crates/references/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'support/texlab/crates/references/src/lib.rs')
-rw-r--r--support/texlab/crates/references/src/lib.rs15
1 files changed, 11 insertions, 4 deletions
diff --git a/support/texlab/crates/references/src/lib.rs b/support/texlab/crates/references/src/lib.rs
index c223ad8eba..23dbd7e0ae 100644
--- a/support/texlab/crates/references/src/lib.rs
+++ b/support/texlab/crates/references/src/lib.rs
@@ -21,15 +21,16 @@ pub enum ReferenceKind {
pub struct ReferenceParams<'a> {
pub feature: FeatureParams<'a>,
pub offset: TextSize,
+ pub include_declaration: bool,
}
#[derive(Debug)]
-struct ReferenceContext<'a> {
- params: ReferenceParams<'a>,
+struct ReferenceContext<'a, 'b> {
+ params: &'b ReferenceParams<'a>,
results: Vec<Reference<'a>>,
}
-pub fn find_all(params: ReferenceParams) -> Vec<Reference<'_>> {
+pub fn find_all<'a>(params: &ReferenceParams<'a>) -> Vec<DocumentLocation<'a>> {
let mut context = ReferenceContext {
params,
results: Vec::new(),
@@ -38,7 +39,13 @@ pub fn find_all(params: ReferenceParams) -> Vec<Reference<'_>> {
entry::find_all(&mut context);
label::find_all(&mut context);
string_def::find_all(&mut context);
- context.results
+
+ context
+ .results
+ .into_iter()
+ .filter(|r| r.kind == ReferenceKind::Reference || params.include_declaration)
+ .map(|reference| reference.location)
+ .collect()
}
#[cfg(test)]