diff options
-rw-r--r-- | crates/completion/src/completions/trait_impl.rs | 10 | ||||
-rw-r--r-- | crates/completion/src/completions/unqualified_path.rs | 48 |
2 files changed, 26 insertions, 32 deletions
diff --git a/crates/completion/src/completions/trait_impl.rs b/crates/completion/src/completions/trait_impl.rs index ca2b1bc3b..c4e0d0669 100644 --- a/crates/completion/src/completions/trait_impl.rs +++ b/crates/completion/src/completions/trait_impl.rs | |||
@@ -265,11 +265,11 @@ impl Test for T { | |||
265 | t<|> | 265 | t<|> |
266 | } | 266 | } |
267 | "#, | 267 | "#, |
268 | expect![[r#" | 268 | expect![[" |
269 | ta type TestType = | 269 | ta type TestType = \n\ |
270 | ct const TEST_CONST: u16 = | 270 | ct const TEST_CONST: u16 = \n\ |
271 | fn fn test() | 271 | fn fn test() |
272 | "#]], | 272 | "]], |
273 | ); | 273 | ); |
274 | } | 274 | } |
275 | 275 | ||
diff --git a/crates/completion/src/completions/unqualified_path.rs b/crates/completion/src/completions/unqualified_path.rs index 54d5c989b..0fbcf4f8c 100644 --- a/crates/completion/src/completions/unqualified_path.rs +++ b/crates/completion/src/completions/unqualified_path.rs | |||
@@ -153,15 +153,15 @@ fn fuzzy_completion(acc: &mut Completions, ctx: &CompletionContext) -> Option<() | |||
153 | acc.add_all(all_mod_paths.into_iter().filter_map(|(import_path, definition)| { | 153 | acc.add_all(all_mod_paths.into_iter().filter_map(|(import_path, definition)| { |
154 | render_resolution_with_import( | 154 | render_resolution_with_import( |
155 | RenderContext::new(ctx), | 155 | RenderContext::new(ctx), |
156 | ImportEdit { import_path: import_path, import_scope: import_scope.clone() }, | 156 | ImportEdit { import_path, import_scope: import_scope.clone() }, |
157 | &definition, | 157 | &definition, |
158 | ) | 158 | ) |
159 | })); | 159 | })); |
160 | Some(()) | 160 | Some(()) |
161 | } | 161 | } |
162 | 162 | ||
163 | // todo kb add tet marks for the completion order test + the sotring description | ||
164 | fn compute_fuzzy_completion_order_key(proposed_mod_path: &ModPath, user_input: &str) -> usize { | 163 | fn compute_fuzzy_completion_order_key(proposed_mod_path: &ModPath, user_input: &str) -> usize { |
164 | mark::hit!(certain_fuzzy_order_test); | ||
165 | let proposed_import_name = match proposed_mod_path.segments.last() { | 165 | let proposed_import_name = match proposed_mod_path.segments.last() { |
166 | Some(name) => name.to_string().to_lowercase(), | 166 | Some(name) => name.to_string().to_lowercase(), |
167 | None => return usize::MAX, | 167 | None => return usize::MAX, |
@@ -193,6 +193,14 @@ mod tests { | |||
193 | expect.assert_eq(&actual) | 193 | expect.assert_eq(&actual) |
194 | } | 194 | } |
195 | 195 | ||
196 | fn fuzzy_completion_config() -> CompletionConfig { | ||
197 | let mut completion_config = CompletionConfig::default(); | ||
198 | completion_config | ||
199 | .active_resolve_capabilities | ||
200 | .insert(crate::CompletionResolveCapability::AdditionalTextEdits); | ||
201 | completion_config | ||
202 | } | ||
203 | |||
196 | #[test] | 204 | #[test] |
197 | fn self_fulfilling_completion() { | 205 | fn self_fulfilling_completion() { |
198 | mark::check!(self_fulfilling_completion); | 206 | mark::check!(self_fulfilling_completion); |
@@ -794,13 +802,8 @@ impl My<|> | |||
794 | 802 | ||
795 | #[test] | 803 | #[test] |
796 | fn function_fuzzy_completion() { | 804 | fn function_fuzzy_completion() { |
797 | let mut completion_config = CompletionConfig::default(); | ||
798 | completion_config | ||
799 | .active_resolve_capabilities | ||
800 | .insert(crate::CompletionResolveCapability::AdditionalTextEdits); | ||
801 | |||
802 | check_edit_with_config( | 805 | check_edit_with_config( |
803 | completion_config, | 806 | fuzzy_completion_config(), |
804 | "stdin", | 807 | "stdin", |
805 | r#" | 808 | r#" |
806 | //- /lib.rs crate:dep | 809 | //- /lib.rs crate:dep |
@@ -825,13 +828,8 @@ fn main() { | |||
825 | 828 | ||
826 | #[test] | 829 | #[test] |
827 | fn macro_fuzzy_completion() { | 830 | fn macro_fuzzy_completion() { |
828 | let mut completion_config = CompletionConfig::default(); | ||
829 | completion_config | ||
830 | .active_resolve_capabilities | ||
831 | .insert(crate::CompletionResolveCapability::AdditionalTextEdits); | ||
832 | |||
833 | check_edit_with_config( | 831 | check_edit_with_config( |
834 | completion_config, | 832 | fuzzy_completion_config(), |
835 | "macro_with_curlies!", | 833 | "macro_with_curlies!", |
836 | r#" | 834 | r#" |
837 | //- /lib.rs crate:dep | 835 | //- /lib.rs crate:dep |
@@ -858,13 +856,8 @@ fn main() { | |||
858 | 856 | ||
859 | #[test] | 857 | #[test] |
860 | fn struct_fuzzy_completion() { | 858 | fn struct_fuzzy_completion() { |
861 | let mut completion_config = CompletionConfig::default(); | ||
862 | completion_config | ||
863 | .active_resolve_capabilities | ||
864 | .insert(crate::CompletionResolveCapability::AdditionalTextEdits); | ||
865 | |||
866 | check_edit_with_config( | 859 | check_edit_with_config( |
867 | completion_config, | 860 | fuzzy_completion_config(), |
868 | "ThirdStruct", | 861 | "ThirdStruct", |
869 | r#" | 862 | r#" |
870 | //- /lib.rs crate:dep | 863 | //- /lib.rs crate:dep |
@@ -893,21 +886,22 @@ fn main() { | |||
893 | 886 | ||
894 | #[test] | 887 | #[test] |
895 | fn fuzzy_completions_come_in_specific_order() { | 888 | fn fuzzy_completions_come_in_specific_order() { |
896 | let mut completion_config = CompletionConfig::default(); | 889 | mark::check!(certain_fuzzy_order_test); |
897 | completion_config | ||
898 | .active_resolve_capabilities | ||
899 | .insert(crate::CompletionResolveCapability::AdditionalTextEdits); | ||
900 | |||
901 | check_with_config( | 890 | check_with_config( |
902 | completion_config, | 891 | fuzzy_completion_config(), |
903 | r#" | 892 | r#" |
904 | //- /lib.rs crate:dep | 893 | //- /lib.rs crate:dep |
905 | pub struct FirstStruct; | 894 | pub struct FirstStruct; |
906 | pub mod some_module { | 895 | pub mod some_module { |
896 | // already imported, omitted | ||
907 | pub struct SecondStruct; | 897 | pub struct SecondStruct; |
908 | 898 | // does not contain all letters from the query, omitted | |
899 | pub struct UnrelatedOne; | ||
900 | // contains all letters from the query, but not in sequence, displayed last | ||
909 | pub struct ThiiiiiirdStruct; | 901 | pub struct ThiiiiiirdStruct; |
902 | // contains all letters from the query, but not in the beginning, displayed second | ||
910 | pub struct AfterThirdStruct; | 903 | pub struct AfterThirdStruct; |
904 | // contains all letters from the query in the begginning, displayed first | ||
911 | pub struct ThirdStruct; | 905 | pub struct ThirdStruct; |
912 | } | 906 | } |
913 | 907 | ||