diff --git a/crates/ide-db/src/symbol_index.rs b/crates/ide-db/src/symbol_index.rs index 365a727245..3539c7fbf8 100644 --- a/crates/ide-db/src/symbol_index.rs +++ b/crates/ide-db/src/symbol_index.rs @@ -53,7 +53,6 @@ pub struct Query { case_sensitive: bool, only_types: bool, libs: bool, - include_hidden: bool, } impl Query { @@ -67,14 +66,9 @@ impl Query { mode: SearchMode::Fuzzy, assoc_mode: AssocSearchMode::Include, case_sensitive: false, - include_hidden: false, } } - pub fn include_hidden(&mut self) { - self.include_hidden = true; - } - pub fn only_types(&mut self) { self.only_types = true; } @@ -363,6 +357,7 @@ impl Query { mut stream: fst::map::Union<'_>, mut cb: impl FnMut(&'sym FileSymbol), ) { + let ignore_underscore_prefixed = !self.query.starts_with("__"); while let Some((_, indexed_values)) = stream.next() { for &IndexedValue { index, value } in indexed_values { let symbol_index = &indices[index]; @@ -381,7 +376,8 @@ impl Query { if non_type_for_type_only_query || !self.matches_assoc_mode(symbol.is_assoc) { continue; } - if self.should_hide_query(symbol) { + // Hide symbols that start with `__` unless the query starts with `__` + if ignore_underscore_prefixed && symbol.name.starts_with("__") { continue; } if self.mode.check(&self.query, self.case_sensitive, &symbol.name) { @@ -392,11 +388,6 @@ impl Query { } } - fn should_hide_query(&self, symbol: &FileSymbol) -> bool { - // Hide symbols that start with `__` unless the query starts with `__` - !self.include_hidden && symbol.name.starts_with("__") && !self.query.starts_with("__") - } - fn matches_assoc_mode(&self, is_trait_assoc_item: bool) -> bool { !matches!( (is_trait_assoc_item, self.assoc_mode), diff --git a/crates/ide/src/navigation_target.rs b/crates/ide/src/navigation_target.rs index e40c7ecef0..a93a8da57e 100644 --- a/crates/ide/src/navigation_target.rs +++ b/crates/ide/src/navigation_target.rs @@ -940,11 +940,12 @@ static __FOO_CALLSITE: () = (); // It doesn't show the hidden symbol let navs = analysis.symbol_search(Query::new("foo".to_owned()), !0).unwrap(); assert_eq!(navs.len(), 2); + let navs = analysis.symbol_search(Query::new("_foo".to_owned()), !0).unwrap(); + assert_eq!(navs.len(), 0); - // Unless we configure a query to show hidden symbols - let mut query = Query::new("foo".to_owned()); - query.include_hidden(); + // Unless we explicitly search for a `__` prefix + let query = Query::new("__foo".to_owned()); let navs = analysis.symbol_search(query, !0).unwrap(); - assert_eq!(navs.len(), 3); + assert_eq!(navs.len(), 1); } }