aboutsummaryrefslogtreecommitdiff
path: root/crates
diff options
context:
space:
mode:
authorKirill Bulatov <[email protected]>2020-12-06 22:39:03 +0000
committerKirill Bulatov <[email protected]>2020-12-07 21:41:08 +0000
commit9656ceb8963273047dab4ee9f3d0b19976890599 (patch)
tree6607f1c38271ea714f8977394db79954ac24d0b6 /crates
parent19cfa5802eabddd5747bbdb04c81b50fc9f6e623 (diff)
Document the feature
Diffstat (limited to 'crates')
-rw-r--r--crates/completion/src/completions/unqualified_path.rs43
1 files changed, 43 insertions, 0 deletions
diff --git a/crates/completion/src/completions/unqualified_path.rs b/crates/completion/src/completions/unqualified_path.rs
index fe6507c55..1482df8fb 100644
--- a/crates/completion/src/completions/unqualified_path.rs
+++ b/crates/completion/src/completions/unqualified_path.rs
@@ -73,6 +73,49 @@ fn complete_enum_variants(acc: &mut Completions, ctx: &CompletionContext, ty: &T
73 } 73 }
74} 74}
75 75
76// Feature: Fuzzy Completion and Autoimports
77//
78// When completing names in the current scope, proposes additional imports from other modules or crates,
79// if they can be qualified in the scope and their name contains all symbols from the completion input
80// (case-insensitive, in any order or places).
81//
82// ```
83// fn main() {
84// pda<|>
85// }
86// # pub mod std { pub mod marker { pub struct PhantomData { } } }
87// ```
88// ->
89// ```
90// use std::marker::PhantomData;
91//
92// fn main() {
93// PhantomData
94// }
95// # pub mod std { pub mod marker { pub struct PhantomData { } } }
96// ```
97//
98// .Fuzzy search details
99//
100// To avoid an excessive amount of the results returned, completion input is checked for inclusion in the identifiers only
101// (i.e. in `HashMap` in the `std::collections::HashMap` path), also not in the module indentifiers.
102//
103// .Merge Behaviour
104//
105// It is possible to configure how use-trees are merged with the `importMergeBehaviour` setting.
106// Mimics the corresponding behaviour of the `Auto Import` feature.
107//
108// .LSP and performance implications
109//
110// LSP 3.16 provides the way to defer the computation of some completion data, including the import edits for this feature.
111// If the LSP client supports the `additionalTextEdits` (case sensitive) resolve client capability, rust-analyzer computes
112// the completion edits only when a corresponding completion item is selected.
113// For clients with no such support, all edits have to be calculated on the completion request, including the fuzzy search completion ones,
114// which might be slow.
115//
116// .Feature toggle
117//
118// The feature can be turned off in the settings with the `rust-analyzer.completion.enableExperimental` flag.
76fn fuzzy_completion(acc: &mut Completions, ctx: &CompletionContext) -> Option<()> { 119fn fuzzy_completion(acc: &mut Completions, ctx: &CompletionContext) -> Option<()> {
77 let _p = profile::span("fuzzy_completion"); 120 let _p = profile::span("fuzzy_completion");
78 let current_module = ctx.scope.module()?; 121 let current_module = ctx.scope.module()?;