diff options
| author | Kirill Bulatov <mail4score@gmail.com> | 2024-11-25 23:33:29 +0200 |
|---|---|---|
| committer | Kirill Bulatov <mail4score@gmail.com> | 2024-11-25 23:33:29 +0200 |
| commit | f7c53a2df0aea1187879a37653480b31afb11417 (patch) | |
| tree | 21b21d8a88ed129d3f4fcf7d5a7e82facd8f14b5 | |
| parent | 4cda576eeb74fb0610bd386955d0a314872ba720 (diff) | |
| download | rust-f7c53a2df0aea1187879a37653480b31afb11417.tar.gz rust-f7c53a2df0aea1187879a37653480b31afb11417.zip | |
Revert "Prepare for omittiong parts of completion data that need to be resolved"
This reverts commit 008d5130b7dce96693cd9c39cd5e71d9dc73bd5b.
10 files changed, 16 insertions, 99 deletions
diff --git a/src/tools/rust-analyzer/crates/ide-completion/src/config.rs b/src/tools/rust-analyzer/crates/ide-completion/src/config.rs index 1d05419c96d..0d403f49b7a 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/config.rs +++ b/src/tools/rust-analyzer/crates/ide-completion/src/config.rs @@ -7,7 +7,7 @@ use hir::ImportPathConfig; use ide_db::{imports::insert_use::InsertUseConfig, SnippetCap}; -use crate::{snippet::Snippet, CompletionFieldsToResolve}; +use crate::snippet::Snippet; #[derive(Clone, Debug, PartialEq, Eq)] pub struct CompletionConfig { @@ -27,7 +27,6 @@ pub struct CompletionConfig { pub prefer_absolute: bool, pub snippets: Vec<Snippet>, pub limit: Option<usize>, - pub fields_to_resolve: CompletionFieldsToResolve, } #[derive(Clone, Debug, PartialEq, Eq)] diff --git a/src/tools/rust-analyzer/crates/ide-completion/src/lib.rs b/src/tools/rust-analyzer/crates/ide-completion/src/lib.rs index 1e022cf244b..58d1fad0950 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/lib.rs +++ b/src/tools/rust-analyzer/crates/ide-completion/src/lib.rs @@ -37,35 +37,6 @@ pub use crate::{ snippet::{Snippet, SnippetScope}, }; -#[derive(Copy, Clone, Debug, PartialEq, Eq)] -pub struct CompletionFieldsToResolve { - pub resolve_label_details: bool, - pub resolve_tags: bool, - pub resolve_detail: bool, - pub resolve_documentation: bool, - pub resolve_sort_text: bool, - pub resolve_filter_text: bool, - pub resolve_text_edit: bool, - // FIXME: those are always resolved - // pub resolve_additional_text_edits: bool, - pub resolve_command: bool, -} - -impl CompletionFieldsToResolve { - pub const fn empty() -> Self { - Self { - resolve_label_details: false, - resolve_tags: false, - resolve_detail: false, - resolve_documentation: false, - resolve_sort_text: false, - resolve_filter_text: false, - resolve_text_edit: false, - resolve_command: false, - } - } -} - //FIXME: split the following feature into fine-grained features. // Feature: Magic Completions diff --git a/src/tools/rust-analyzer/crates/ide-completion/src/tests.rs b/src/tools/rust-analyzer/crates/ide-completion/src/tests.rs index f371012de3f..9d77d970071 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/tests.rs +++ b/src/tools/rust-analyzer/crates/ide-completion/src/tests.rs @@ -37,8 +37,8 @@ use test_fixture::ChangeFixture; use test_utils::assert_eq_text; use crate::{ - resolve_completion_edits, CallableSnippets, CompletionConfig, CompletionFieldsToResolve, - CompletionItem, CompletionItemKind, + resolve_completion_edits, CallableSnippets, CompletionConfig, CompletionItem, + CompletionItemKind, }; /// Lots of basic item definitions @@ -84,7 +84,6 @@ pub(crate) const TEST_CONFIG: CompletionConfig = CompletionConfig { prefer_absolute: false, snippets: Vec::new(), limit: None, - fields_to_resolve: CompletionFieldsToResolve::empty(), }; pub(crate) fn completion_list(ra_fixture: &str) -> String { diff --git a/src/tools/rust-analyzer/crates/ide/src/lib.rs b/src/tools/rust-analyzer/crates/ide/src/lib.rs index c46c4c8ce94..547286c3f4d 100644 --- a/src/tools/rust-analyzer/crates/ide/src/lib.rs +++ b/src/tools/rust-analyzer/crates/ide/src/lib.rs @@ -119,8 +119,8 @@ pub use ide_assists::{ Assist, AssistConfig, AssistId, AssistKind, AssistResolveStrategy, SingleResolve, }; pub use ide_completion::{ - CallableSnippets, CompletionConfig, CompletionFieldsToResolve, CompletionItem, - CompletionItemKind, CompletionRelevance, Snippet, SnippetScope, + CallableSnippets, CompletionConfig, CompletionItem, CompletionItemKind, CompletionRelevance, + Snippet, SnippetScope, }; pub use ide_db::{ base_db::{Cancelled, CrateGraph, CrateId, FileChange, SourceRoot, SourceRootId}, diff --git a/src/tools/rust-analyzer/crates/rust-analyzer/src/config.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/config.rs index 5e097023c24..2be71ef92a3 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/src/config.rs +++ b/src/tools/rust-analyzer/crates/rust-analyzer/src/config.rs @@ -12,10 +12,10 @@ use std::{ use cfg::{CfgAtom, CfgDiff}; use hir::Symbol; use ide::{ - AssistConfig, CallableSnippets, CompletionConfig, CompletionFieldsToResolve, DiagnosticsConfig, - ExprFillDefaultMode, GenericParameterHints, HighlightConfig, HighlightRelatedConfig, - HoverConfig, HoverDocFormat, InlayFieldsToResolve, InlayHintsConfig, JoinLinesConfig, - MemoryLayoutHoverConfig, MemoryLayoutHoverRenderKind, Snippet, SnippetScope, SourceRootId, + AssistConfig, CallableSnippets, CompletionConfig, DiagnosticsConfig, ExprFillDefaultMode, + GenericParameterHints, HighlightConfig, HighlightRelatedConfig, HoverConfig, HoverDocFormat, + InlayFieldsToResolve, InlayHintsConfig, JoinLinesConfig, MemoryLayoutHoverConfig, + MemoryLayoutHoverRenderKind, Snippet, SnippetScope, SourceRootId, }; use ide_db::{ imports::insert_use::{ImportGranularity, InsertUseConfig, PrefixKind}, @@ -1393,7 +1393,6 @@ impl Config { } pub fn completion(&self, source_root: Option<SourceRootId>) -> CompletionConfig { - let client_capability_fields = self.completion_resolve_support_properties(); CompletionConfig { enable_postfix_completions: self.completion_postfix_enable(source_root).to_owned(), enable_imports_on_the_fly: self.completion_autoimport_enable(source_root).to_owned() @@ -1418,16 +1417,6 @@ impl Config { limit: self.completion_limit(source_root).to_owned(), enable_term_search: self.completion_termSearch_enable(source_root).to_owned(), term_search_fuel: self.completion_termSearch_fuel(source_root).to_owned() as u64, - fields_to_resolve: CompletionFieldsToResolve { - resolve_label_details: client_capability_fields.contains("labelDetails"), - resolve_tags: client_capability_fields.contains("tags"), - resolve_detail: client_capability_fields.contains("detail"), - resolve_documentation: client_capability_fields.contains("documentation"), - resolve_sort_text: client_capability_fields.contains("sortText"), - resolve_filter_text: client_capability_fields.contains("filterText"), - resolve_text_edit: client_capability_fields.contains("textEdit"), - resolve_command: client_capability_fields.contains("command"), - }, } } diff --git a/src/tools/rust-analyzer/crates/rust-analyzer/src/handlers/request.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/handlers/request.rs index 9e3226fe798..bcbd970a0d2 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/src/handlers/request.rs +++ b/src/tools/rust-analyzer/crates/rust-analyzer/src/handlers/request.rs @@ -1019,11 +1019,9 @@ pub(crate) fn handle_completion( let items = to_proto::completion_items( &snap.config, - &completion_config.fields_to_resolve, &line_index, snap.file_version(position.file_id), text_document_position, - completion_trigger_character, items, ); diff --git a/src/tools/rust-analyzer/crates/rust-analyzer/src/integrated_benchmarks.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/integrated_benchmarks.rs index 8946c7acb93..8a4f9d49fef 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/src/integrated_benchmarks.rs +++ b/src/tools/rust-analyzer/crates/rust-analyzer/src/integrated_benchmarks.rs @@ -12,8 +12,7 @@ use hir::ChangeWithProcMacros; use ide::{ - AnalysisHost, CallableSnippets, CompletionConfig, CompletionFieldsToResolve, DiagnosticsConfig, - FilePosition, TextSize, + AnalysisHost, CallableSnippets, CompletionConfig, DiagnosticsConfig, FilePosition, TextSize, }; use ide_db::{ imports::insert_use::{ImportGranularity, InsertUseConfig}, @@ -173,7 +172,6 @@ fn integrated_completion_benchmark() { snippets: Vec::new(), limit: None, add_semicolon_to_unit: true, - fields_to_resolve: CompletionFieldsToResolve::empty(), }; let position = FilePosition { file_id, offset: TextSize::try_from(completion_offset).unwrap() }; @@ -221,7 +219,6 @@ fn integrated_completion_benchmark() { snippets: Vec::new(), limit: None, add_semicolon_to_unit: true, - fields_to_resolve: CompletionFieldsToResolve::empty(), }; let position = FilePosition { file_id, offset: TextSize::try_from(completion_offset).unwrap() }; @@ -267,7 +264,6 @@ fn integrated_completion_benchmark() { snippets: Vec::new(), limit: None, add_semicolon_to_unit: true, - fields_to_resolve: CompletionFieldsToResolve::empty(), }; let position = FilePosition { file_id, offset: TextSize::try_from(completion_offset).unwrap() }; diff --git a/src/tools/rust-analyzer/crates/rust-analyzer/src/lsp/capabilities.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/lsp/capabilities.rs index e5df7947f2d..9610808c27e 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/src/lsp/capabilities.rs +++ b/src/tools/rust-analyzer/crates/rust-analyzer/src/lsp/capabilities.rs @@ -458,21 +458,7 @@ impl ClientCapabilities { .into_iter() .flatten() .cloned() - .collect() - } - - pub fn completion_resolve_support_properties(&self) -> FxHashSet<String> { - self.0 - .text_document - .as_ref() - .and_then(|text| text.completion.as_ref()) - .and_then(|completion_caps| completion_caps.completion_item.as_ref()) - .and_then(|completion_item_caps| completion_item_caps.resolve_support.as_ref()) - .map(|resolve_support| resolve_support.properties.iter()) - .into_iter() - .flatten() - .cloned() - .collect() + .collect::<FxHashSet<_>>() } pub fn hover_markdown_support(&self) -> bool { diff --git a/src/tools/rust-analyzer/crates/rust-analyzer/src/lsp/ext.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/lsp/ext.rs index 990fadc6719..618481bbc66 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/src/lsp/ext.rs +++ b/src/tools/rust-analyzer/crates/rust-analyzer/src/lsp/ext.rs @@ -825,7 +825,6 @@ pub struct CompletionResolveData { pub position: lsp_types::TextDocumentPositionParams, pub imports: Vec<CompletionImport>, pub version: Option<i32>, - pub completion_trigger_character: Option<char>, } #[derive(Debug, Serialize, Deserialize)] diff --git a/src/tools/rust-analyzer/crates/rust-analyzer/src/lsp/to_proto.rs b/src/tools/rust-analyzer/crates/rust-analyzer/src/lsp/to_proto.rs index 6e6a70bb3bc..4902c9f88c1 100644 --- a/src/tools/rust-analyzer/crates/rust-analyzer/src/lsp/to_proto.rs +++ b/src/tools/rust-analyzer/crates/rust-analyzer/src/lsp/to_proto.rs @@ -6,9 +6,9 @@ use std::{ }; use ide::{ - Annotation, AnnotationKind, Assist, AssistKind, Cancellable, CompletionFieldsToResolve, - CompletionItem, CompletionItemKind, CompletionRelevance, Documentation, FileId, FileRange, - FileSystemEdit, Fold, FoldKind, Highlight, HlMod, HlOperator, HlPunct, HlRange, HlTag, Indel, + Annotation, AnnotationKind, Assist, AssistKind, Cancellable, CompletionItem, + CompletionItemKind, CompletionRelevance, Documentation, FileId, FileRange, FileSystemEdit, + Fold, FoldKind, Highlight, HlMod, HlOperator, HlPunct, HlRange, HlTag, Indel, InlayFieldsToResolve, InlayHint, InlayHintLabel, InlayHintLabelPart, InlayKind, Markup, NavigationTarget, ReferenceCategory, RenameError, Runnable, Severity, SignatureHelp, SnippetEdit, SourceChange, StructureNodeKind, SymbolKind, TextEdit, TextRange, TextSize, @@ -227,11 +227,9 @@ pub(crate) fn snippet_text_edit_vec( pub(crate) fn completion_items( config: &Config, - fields_to_resolve: &CompletionFieldsToResolve, line_index: &LineIndex, version: Option<i32>, tdpp: lsp_types::TextDocumentPositionParams, - completion_trigger_character: Option<char>, mut items: Vec<CompletionItem>, ) -> Vec<lsp_types::CompletionItem> { if config.completion_hide_deprecated() { @@ -241,17 +239,7 @@ pub(crate) fn completion_items( let max_relevance = items.iter().map(|it| it.relevance.score()).max().unwrap_or_default(); let mut res = Vec::with_capacity(items.len()); for item in items { - completion_item( - &mut res, - config, - fields_to_resolve, - line_index, - version, - &tdpp, - max_relevance, - completion_trigger_character, - item, - ); + completion_item(&mut res, config, line_index, version, &tdpp, max_relevance, item); } if let Some(limit) = config.completion(None).limit { @@ -265,12 +253,10 @@ pub(crate) fn completion_items( fn completion_item( acc: &mut Vec<lsp_types::CompletionItem>, config: &Config, - fields_to_resolve: &CompletionFieldsToResolve, line_index: &LineIndex, version: Option<i32>, tdpp: &lsp_types::TextDocumentPositionParams, max_relevance: u32, - completion_trigger_character: Option<char>, item: CompletionItem, ) { let insert_replace_support = config.insert_replace_support().then_some(tdpp.position); @@ -278,7 +264,6 @@ fn completion_item( let lookup = item.lookup().to_owned(); let mut additional_text_edits = Vec::new(); - let mut something_to_resolve = false; // LSP does not allow arbitrary edits in completion, so we have to do a // non-trivial mapping here. @@ -352,12 +337,7 @@ fn completion_item( }) .collect::<Vec<_>>(); if !imports.is_empty() { - let data = lsp_ext::CompletionResolveData { - position: tdpp.clone(), - imports, - version, - completion_trigger_character, - }; + let data = lsp_ext::CompletionResolveData { position: tdpp.clone(), imports, version }; lsp_item.data = Some(to_value(data).unwrap()); } } |
