Skip to main content

Mountain/RPC/CocoonService/GenericNotification/LanguageProviders/
Dispatch.rs

1//! Dispatch a `register_*_provider` method string to the correct ProviderType.
2//! Returns `true` if recognised.
3
4use CommonLibrary::LanguageFeature::DTO::ProviderType::ProviderType;
5use serde_json::Value;
6
7use crate::RPC::CocoonService::CocoonServiceImpl;
8
9pub fn Fn(Method:&str, Params:Value, Service:&CocoonServiceImpl) -> bool {
10	let ProvType = match Method {
11		"register_hover_provider" => ProviderType::Hover,
12
13		"register_completion_item_provider" => ProviderType::Completion,
14
15		"register_definition_provider" => ProviderType::Definition,
16
17		"register_reference_provider" => ProviderType::References,
18
19		"register_code_actions_provider" => ProviderType::CodeAction,
20
21		"register_document_highlight_provider" => ProviderType::DocumentHighlight,
22
23		"register_document_symbol_provider" => ProviderType::DocumentSymbol,
24
25		"register_workspace_symbol_provider" => ProviderType::WorkspaceSymbol,
26
27		"register_rename_provider" => ProviderType::Rename,
28
29		"register_document_formatting_provider" => ProviderType::DocumentFormatting,
30
31		"register_document_range_formatting_provider" => ProviderType::DocumentRangeFormatting,
32
33		"register_on_type_formatting_provider" => ProviderType::OnTypeFormatting,
34
35		"register_signature_help_provider" => ProviderType::SignatureHelp,
36
37		"register_code_lens_provider" => ProviderType::CodeLens,
38
39		"register_folding_range_provider" => ProviderType::FoldingRange,
40
41		"register_selection_range_provider" => ProviderType::SelectionRange,
42
43		"register_semantic_tokens_provider" => ProviderType::SemanticTokens,
44
45		"register_inlay_hints_provider" => ProviderType::InlayHint,
46
47		"register_type_hierarchy_provider" => ProviderType::TypeHierarchy,
48
49		"register_call_hierarchy_provider" => ProviderType::CallHierarchy,
50
51		"register_linked_editing_range_provider" => ProviderType::LinkedEditingRange,
52
53		"register_document_link_provider" => ProviderType::DocumentLink,
54
55		"register_color_provider" => ProviderType::Color,
56
57		"register_implementation_provider" => ProviderType::Implementation,
58
59		"register_type_definition_provider" => ProviderType::TypeDefinition,
60
61		"register_declaration_provider" => ProviderType::Declaration,
62
63		"register_evaluatable_expression_provider" => ProviderType::EvaluatableExpression,
64
65		"register_inline_values_provider" => ProviderType::InlineValues,
66
67		"register_inline_completion_item_provider" => ProviderType::InlineCompletion,
68
69		_ => return false,
70	};
71
72	super::Register::Fn(Params, Service, ProvType);
73
74	true
75}