aboutsummaryrefslogtreecommitdiff
path: root/crates/ide_db/src/imports_locator.rs
diff options
context:
space:
mode:
authorKirill Bulatov <[email protected]>2020-09-18 21:40:11 +0100
committerKirill Bulatov <[email protected]>2020-11-16 19:19:05 +0000
commitf62e8616c879255e70052ae35ce7f98bffedac11 (patch)
treef1a21bebdd22483a1a503861bbe55b77fa1d2b37 /crates/ide_db/src/imports_locator.rs
parent0a658c4a973d934d622957a6fb03916271496385 (diff)
Add imports in auto completion
Diffstat (limited to 'crates/ide_db/src/imports_locator.rs')
-rw-r--r--crates/ide_db/src/imports_locator.rs14
1 files changed, 9 insertions, 5 deletions
diff --git a/crates/ide_db/src/imports_locator.rs b/crates/ide_db/src/imports_locator.rs
index df74be00b..e4f4b5427 100644
--- a/crates/ide_db/src/imports_locator.rs
+++ b/crates/ide_db/src/imports_locator.rs
@@ -1,12 +1,12 @@
1//! This module contains an import search funcionality that is provided to the assists module. 1//! This module contains an import search funcionality that is provided to the assists module.
2//! Later, this should be moved away to a separate crate that is accessible from the assists module. 2//! Later, this should be moved away to a separate crate that is accessible from the assists module.
3 3
4use hir::{Crate, MacroDef, ModuleDef, Semantics}; 4use hir::{Crate, MacroDef, ModuleDef, Query as ImportMapQuery, Semantics};
5use syntax::{ast, AstNode, SyntaxKind::NAME}; 5use syntax::{ast, AstNode, SyntaxKind::NAME};
6 6
7use crate::{ 7use crate::{
8 defs::{Definition, NameClass}, 8 defs::{Definition, NameClass},
9 symbol_index::{self, FileSymbol, Query}, 9 symbol_index::{self, FileSymbol, Query as SymbolQuery},
10 RootDatabase, 10 RootDatabase,
11}; 11};
12use either::Either; 12use either::Either;
@@ -21,12 +21,16 @@ pub fn find_imports<'a>(
21 let db = sema.db; 21 let db = sema.db;
22 22
23 // Query dependencies first. 23 // Query dependencies first.
24 let mut candidates: FxHashSet<_> = 24 let mut candidates: FxHashSet<_> = krate
25 krate.query_external_importables(db, name_to_import).collect(); 25 .query_external_importables(
26 db,
27 ImportMapQuery::new(name_to_import).anchor_end().case_sensitive().limit(40),
28 )
29 .collect();
26 30
27 // Query the local crate using the symbol index. 31 // Query the local crate using the symbol index.
28 let local_results = { 32 let local_results = {
29 let mut query = Query::new(name_to_import.to_string()); 33 let mut query = SymbolQuery::new(name_to_import.to_string());
30 query.exact(); 34 query.exact();
31 query.limit(40); 35 query.limit(40);
32 symbol_index::crate_symbols(db, krate.into(), query) 36 symbol_index::crate_symbols(db, krate.into(), query)