From 0e48cd0c3c712cea0267476de974012b2b05b508 Mon Sep 17 00:00:00 2001 From: Kirill Bulatov Date: Mon, 28 Dec 2020 11:41:08 +0200 Subject: Draft the module exclusion in modules --- crates/ide_db/src/imports_locator.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'crates/ide_db/src') diff --git a/crates/ide_db/src/imports_locator.rs b/crates/ide_db/src/imports_locator.rs index b2980a5d6..0de949b9a 100644 --- a/crates/ide_db/src/imports_locator.rs +++ b/crates/ide_db/src/imports_locator.rs @@ -27,7 +27,12 @@ pub fn find_exact_imports<'a>( local_query.limit(40); local_query }, - import_map::Query::new(name_to_import).anchor_end().case_sensitive().limit(40), + import_map::Query::new(name_to_import) + .limit(40) + .name_only() + .name_end() + .strict_include() + .case_sensitive(), ) } @@ -36,11 +41,12 @@ pub fn find_similar_imports<'a>( krate: Crate, limit: Option, name_to_import: &str, + // TODO kb change it to search across the whole path or not? ignore_modules: bool, ) -> impl Iterator> { let _p = profile::span("find_similar_imports"); - let mut external_query = import_map::Query::new(name_to_import); + let mut external_query = import_map::Query::new(name_to_import).name_only(); if ignore_modules { external_query = external_query.exclude_import_kind(import_map::ImportKind::Module); } -- cgit v1.2.3 From c4995cfbd5b265c02d3038d72b8a022cde5f7040 Mon Sep 17 00:00:00 2001 From: Kirill Bulatov Date: Mon, 28 Dec 2020 14:24:13 +0200 Subject: Better query api and fuzzy search --- crates/ide_db/src/imports_locator.rs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) (limited to 'crates/ide_db/src') diff --git a/crates/ide_db/src/imports_locator.rs b/crates/ide_db/src/imports_locator.rs index 0de949b9a..986cb5b83 100644 --- a/crates/ide_db/src/imports_locator.rs +++ b/crates/ide_db/src/imports_locator.rs @@ -30,8 +30,7 @@ pub fn find_exact_imports<'a>( import_map::Query::new(name_to_import) .limit(40) .name_only() - .name_end() - .strict_include() + .search_mode(import_map::SearchMode::Equals) .case_sensitive(), ) } @@ -41,14 +40,14 @@ pub fn find_similar_imports<'a>( krate: Crate, limit: Option, name_to_import: &str, - // TODO kb change it to search across the whole path or not? - ignore_modules: bool, + name_only: bool, ) -> impl Iterator> { let _p = profile::span("find_similar_imports"); - let mut external_query = import_map::Query::new(name_to_import).name_only(); - if ignore_modules { - external_query = external_query.exclude_import_kind(import_map::ImportKind::Module); + let mut external_query = + import_map::Query::new(name_to_import).search_mode(import_map::SearchMode::Fuzzy); + if name_only { + external_query = external_query.name_only(); } let mut local_query = symbol_index::Query::new(name_to_import.to_string()); -- cgit v1.2.3 From e4c3f753d23752a9fbb01bdf1cd92a8cb1f6681e Mon Sep 17 00:00:00 2001 From: Kirill Bulatov Date: Mon, 28 Dec 2020 14:54:31 +0200 Subject: Add docs and optimisations --- crates/ide_db/src/imports_locator.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'crates/ide_db/src') diff --git a/crates/ide_db/src/imports_locator.rs b/crates/ide_db/src/imports_locator.rs index 986cb5b83..b6355af4b 100644 --- a/crates/ide_db/src/imports_locator.rs +++ b/crates/ide_db/src/imports_locator.rs @@ -39,18 +39,18 @@ pub fn find_similar_imports<'a>( sema: &Semantics<'a, RootDatabase>, krate: Crate, limit: Option, - name_to_import: &str, + fuzzy_search_string: &str, name_only: bool, ) -> impl Iterator> { let _p = profile::span("find_similar_imports"); let mut external_query = - import_map::Query::new(name_to_import).search_mode(import_map::SearchMode::Fuzzy); + import_map::Query::new(fuzzy_search_string).search_mode(import_map::SearchMode::Fuzzy); if name_only { external_query = external_query.name_only(); } - let mut local_query = symbol_index::Query::new(name_to_import.to_string()); + let mut local_query = symbol_index::Query::new(fuzzy_search_string.to_string()); if let Some(limit) = limit { local_query.limit(limit); -- cgit v1.2.3