Skip to content

Commit d2e29e3

Browse files
John Van Schultzmeta-codesync[bot]
authored andcommitted
Move add_builtins_autoimport_completions to completion.rs module
Summary: ## Stack Summary This stack continues efforts to reduce the size of state/lsp.rs and move relevant functionality into modules per feature. This stack specifically focuses on logic used for completions. ## Diff Summary Moves add_builtins_autoimport_completions to the completion module. Reviewed By: yangdanny97 Differential Revision: D91782198 fbshipit-source-id: 80b0d09f0ebe4beae57dec7a7e44228bc77888a3
1 parent 2ea872b commit d2e29e3

File tree

2 files changed

+44
-39
lines changed

2 files changed

+44
-39
lines changed

pyrefly/lib/lsp/wasm/completion.rs

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,23 @@
55
* LICENSE file in the root directory of this source tree.
66
*/
77

8+
use fuzzy_matcher::FuzzyMatcher;
9+
use fuzzy_matcher::skim::SkimMatcherV2;
810
use lsp_types::CompletionItem;
911
use lsp_types::CompletionItemKind;
1012
use pyrefly_build::handle::Handle;
1113
use pyrefly_python::docstring::Docstring;
1214
use pyrefly_python::dunder;
1315
use pyrefly_python::keywords::get_keywords;
16+
use pyrefly_python::module_name::ModuleName;
1417
use pyrefly_types::literal::Lit;
1518
use pyrefly_types::types::Union;
1619
use ruff_python_ast::Identifier;
1720
use ruff_text_size::TextSize;
1821

1922
use crate::alt::attr::AttrInfo;
2023
use crate::export::exports::Export;
24+
use crate::export::exports::ExportLocation;
2125
use crate::state::lsp::FindPreference;
2226
use crate::state::state::Transaction;
2327
use crate::types::callable::Param;
@@ -169,4 +173,44 @@ impl Transaction<'_> {
169173
},
170174
))
171175
}
176+
177+
/// Adds completions from the builtins module, optionally filtered by fuzzy match.
178+
pub(crate) fn add_builtins_autoimport_completions(
179+
&self,
180+
handle: &Handle,
181+
identifier: Option<&Identifier>,
182+
completions: &mut Vec<CompletionItem>,
183+
) {
184+
if let Some(builtin_handle) = self
185+
.import_handle(handle, ModuleName::builtins(), None)
186+
.finding()
187+
{
188+
let builtin_exports = self.get_exports(&builtin_handle);
189+
for (name, location) in builtin_exports.iter() {
190+
if let Some(identifier) = identifier
191+
&& SkimMatcherV2::default()
192+
.smart_case()
193+
.fuzzy_match(name.as_str(), identifier.as_str())
194+
.is_none()
195+
{
196+
continue;
197+
}
198+
let kind = match location {
199+
ExportLocation::OtherModule(..) => continue,
200+
ExportLocation::ThisModule(export) => export
201+
.symbol_kind
202+
.map_or(Some(CompletionItemKind::VARIABLE), |k| {
203+
Some(k.to_lsp_completion_item_kind())
204+
}),
205+
};
206+
completions.push(CompletionItem {
207+
label: name.as_str().to_owned(),
208+
detail: None,
209+
kind,
210+
data: Some(serde_json::json!("builtin")),
211+
..Default::default()
212+
});
213+
}
214+
}
215+
}
172216
}

pyrefly/lib/state/lsp.rs

Lines changed: 0 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -2589,45 +2589,6 @@ impl<'a> Transaction<'a> {
25892589
Some(references)
25902590
}
25912591

2592-
fn add_builtins_autoimport_completions(
2593-
&self,
2594-
handle: &Handle,
2595-
identifier: Option<&Identifier>,
2596-
completions: &mut Vec<CompletionItem>,
2597-
) {
2598-
if let Some(builtin_handle) = self
2599-
.import_handle(handle, ModuleName::builtins(), None)
2600-
.finding()
2601-
{
2602-
let builtin_exports = self.get_exports(&builtin_handle);
2603-
for (name, location) in builtin_exports.iter() {
2604-
if let Some(identifier) = identifier
2605-
&& SkimMatcherV2::default()
2606-
.smart_case()
2607-
.fuzzy_match(name.as_str(), identifier.as_str())
2608-
.is_none()
2609-
{
2610-
continue;
2611-
}
2612-
let kind = match location {
2613-
ExportLocation::OtherModule(..) => continue,
2614-
ExportLocation::ThisModule(export) => export
2615-
.symbol_kind
2616-
.map_or(Some(CompletionItemKind::VARIABLE), |k| {
2617-
Some(k.to_lsp_completion_item_kind())
2618-
}),
2619-
};
2620-
completions.push(CompletionItem {
2621-
label: name.as_str().to_owned(),
2622-
detail: None,
2623-
kind,
2624-
data: Some(serde_json::json!("builtin")),
2625-
..Default::default()
2626-
});
2627-
}
2628-
}
2629-
}
2630-
26312592
fn add_autoimport_completions(
26322593
&self,
26332594
handle: &Handle,

0 commit comments

Comments
 (0)