Skip to main content

DevelopmentNodeEnvironment_MicrosoftVSCodeDependency_22NodeVersion_Bundle_Clean_Debug_ElectronProfile_EsbuildCompiler_Mountain/RPC/CocoonService/GenericNotification/
LanguageProviders.rs

1#![allow(non_snake_case, unused_variables, dead_code, unused_imports)]
2
3//! Notification handlers: `register_*_provider` language feature registrations.
4//! All follow the same pattern: extract `handle`, `language_selector`,
5//! `extension_id` from `Params` and call `RegisterProvider`.
6
7use CommonLibrary::LanguageFeature::DTO::ProviderType::ProviderType;
8use serde_json::Value;
9
10use crate::RPC::CocoonService::CocoonServiceImpl;
11
12pub fn HandleRegisterProvider(Params:Value, Service:&CocoonServiceImpl, ProvType:ProviderType) {
13	let Handle = Params.get("handle").and_then(|V| V.as_u64()).unwrap_or(0) as u32;
14	let Selector = Params.get("language_selector").and_then(|V| V.as_str()).unwrap_or("*");
15	let ExtId = Params.get("extension_id").and_then(|V| V.as_str()).unwrap_or("");
16	Service.RegisterProvider(Handle, ProvType, Selector, ExtId);
17}
18
19/// Dispatch a `register_*_provider` method string to the correct
20/// `ProviderType`. Returns `true` if the method was recognised and dispatched.
21pub fn DispatchRegisterProvider(Method:&str, Params:Value, Service:&CocoonServiceImpl) -> bool {
22	let ProvType = match Method {
23		"register_hover_provider" => ProviderType::Hover,
24		"register_completion_item_provider" => ProviderType::Completion,
25		"register_definition_provider" => ProviderType::Definition,
26		"register_reference_provider" => ProviderType::References,
27		"register_code_actions_provider" => ProviderType::CodeAction,
28		"register_document_highlight_provider" => ProviderType::DocumentHighlight,
29		"register_document_symbol_provider" => ProviderType::DocumentSymbol,
30		"register_workspace_symbol_provider" => ProviderType::WorkspaceSymbol,
31		"register_rename_provider" => ProviderType::Rename,
32		"register_document_formatting_provider" => ProviderType::DocumentFormatting,
33		"register_document_range_formatting_provider" => ProviderType::DocumentRangeFormatting,
34		"register_on_type_formatting_provider" => ProviderType::OnTypeFormatting,
35		"register_signature_help_provider" => ProviderType::SignatureHelp,
36		"register_code_lens_provider" => ProviderType::CodeLens,
37		"register_folding_range_provider" => ProviderType::FoldingRange,
38		"register_selection_range_provider" => ProviderType::SelectionRange,
39		"register_semantic_tokens_provider" => ProviderType::SemanticTokens,
40		"register_inlay_hints_provider" => ProviderType::InlayHint,
41		"register_type_hierarchy_provider" => ProviderType::TypeHierarchy,
42		"register_call_hierarchy_provider" => ProviderType::CallHierarchy,
43		"register_linked_editing_range_provider" => ProviderType::LinkedEditingRange,
44		"register_document_link_provider" => ProviderType::DocumentLink,
45		"register_color_provider" => ProviderType::Color,
46		"register_implementation_provider" => ProviderType::Implementation,
47		"register_type_definition_provider" => ProviderType::TypeDefinition,
48		"register_declaration_provider" => ProviderType::Declaration,
49		"register_evaluatable_expression_provider" => ProviderType::EvaluatableExpression,
50		"register_inline_values_provider" => ProviderType::InlineValues,
51		_ => return false,
52	};
53	HandleRegisterProvider(Params, Service, ProvType);
54	true
55}