Skip to content

Commit 070e08a

Browse files
committed
[ty] Move completion function to the top
This is the main entry point to this module. It should be at the top.
1 parent bab3924 commit 070e08a

File tree

1 file changed

+63
-63
lines changed

1 file changed

+63
-63
lines changed

crates/ty_ide/src/completion.rs

Lines changed: 63 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,69 @@ use crate::importer::{ImportRequest, Importer};
2323
use crate::symbols::QueryPattern;
2424
use crate::{Db, all_symbols, signature_help};
2525

26+
pub fn completion<'db>(
27+
db: &'db dyn Db,
28+
settings: &CompletionSettings,
29+
file: File,
30+
offset: TextSize,
31+
) -> Vec<Completion<'db>> {
32+
let parsed = parsed_module(db, file).load(db);
33+
let source = source_text(db, file);
34+
35+
let Some(context) = Context::new(db, file, &parsed, &source, offset) else {
36+
return vec![];
37+
};
38+
let query = context
39+
.cursor
40+
.typed
41+
.map(QueryPattern::fuzzy)
42+
.unwrap_or_else(QueryPattern::matches_all_symbols);
43+
let mut completions = Completions::new(db, context.collection_context(db), query);
44+
match context.kind {
45+
ContextKind::Import(ref import) => {
46+
import.add_completions(db, file, &mut completions);
47+
}
48+
ContextKind::NonImport(ref non_import) => {
49+
let model = SemanticModel::new(db, file);
50+
let (semantic_completions, scoped) = match non_import.target {
51+
CompletionTargetAst::ObjectDot { expr } => {
52+
(model.attribute_completions(expr), None)
53+
}
54+
CompletionTargetAst::Scoped(scoped) => {
55+
(model.scoped_completions(scoped.node), Some(scoped))
56+
}
57+
};
58+
59+
completions.extend(semantic_completions);
60+
if scoped.is_some() {
61+
add_keyword_completions(db, &mut completions);
62+
}
63+
if settings.auto_import {
64+
if let Some(scoped) = scoped {
65+
add_unimported_completions(
66+
db,
67+
file,
68+
&parsed,
69+
scoped,
70+
|module_name: &ModuleName, symbol: &str| {
71+
ImportRequest::import_from(module_name.as_str(), symbol)
72+
},
73+
&mut completions,
74+
);
75+
}
76+
}
77+
78+
if let Some(arg_completions) =
79+
detect_function_arg_completions(db, file, &parsed, offset)
80+
{
81+
completions.extend(arg_completions);
82+
}
83+
}
84+
}
85+
86+
completions.into_completions()
87+
}
88+
2689
/// A collection of completions built up from various sources.
2790
struct Completions<'db> {
2891
db: &'db dyn Db,
@@ -873,69 +936,6 @@ enum Sort {
873936
Lower,
874937
}
875938

876-
pub fn completion<'db>(
877-
db: &'db dyn Db,
878-
settings: &CompletionSettings,
879-
file: File,
880-
offset: TextSize,
881-
) -> Vec<Completion<'db>> {
882-
let parsed = parsed_module(db, file).load(db);
883-
let source = source_text(db, file);
884-
885-
let Some(context) = Context::new(db, file, &parsed, &source, offset) else {
886-
return vec![];
887-
};
888-
let query = context
889-
.cursor
890-
.typed
891-
.map(QueryPattern::fuzzy)
892-
.unwrap_or_else(QueryPattern::matches_all_symbols);
893-
let mut completions = Completions::new(db, context.collection_context(db), query);
894-
match context.kind {
895-
ContextKind::Import(ref import) => {
896-
import.add_completions(db, file, &mut completions);
897-
}
898-
ContextKind::NonImport(ref non_import) => {
899-
let model = SemanticModel::new(db, file);
900-
let (semantic_completions, scoped) = match non_import.target {
901-
CompletionTargetAst::ObjectDot { expr } => {
902-
(model.attribute_completions(expr), None)
903-
}
904-
CompletionTargetAst::Scoped(scoped) => {
905-
(model.scoped_completions(scoped.node), Some(scoped))
906-
}
907-
};
908-
909-
completions.extend(semantic_completions);
910-
if scoped.is_some() {
911-
add_keyword_completions(db, &mut completions);
912-
}
913-
if settings.auto_import {
914-
if let Some(scoped) = scoped {
915-
add_unimported_completions(
916-
db,
917-
file,
918-
&parsed,
919-
scoped,
920-
|module_name: &ModuleName, symbol: &str| {
921-
ImportRequest::import_from(module_name.as_str(), symbol)
922-
},
923-
&mut completions,
924-
);
925-
}
926-
}
927-
928-
if let Some(arg_completions) =
929-
detect_function_arg_completions(db, file, &parsed, offset)
930-
{
931-
completions.extend(arg_completions);
932-
}
933-
}
934-
}
935-
936-
completions.into_completions()
937-
}
938-
939939
/// Detect and construct completions for unset function arguments.
940940
///
941941
/// Suggestions are only provided if the cursor is currently inside a

0 commit comments

Comments
 (0)