]> git.lizzy.rs Git - rust.git/blob - crates/ra_lsp_server/src/caps.rs
Update dependencies
[rust.git] / crates / ra_lsp_server / src / caps.rs
1 //! Advertizes the capabilities of the LSP Server.
2
3 use lsp_types::{
4     CodeActionProviderCapability, CodeLensOptions, CompletionOptions,
5     DocumentOnTypeFormattingOptions, FoldingRangeProviderCapability,
6     ImplementationProviderCapability, RenameOptions, RenameProviderCapability, SaveOptions,
7     SelectionRangeProviderCapability, ServerCapabilities, SignatureHelpOptions,
8     TextDocumentSyncCapability, TextDocumentSyncKind, TextDocumentSyncOptions,
9     TypeDefinitionProviderCapability, WorkDoneProgressOptions,
10 };
11
12 pub fn server_capabilities() -> ServerCapabilities {
13     ServerCapabilities {
14         text_document_sync: Some(TextDocumentSyncCapability::Options(TextDocumentSyncOptions {
15             open_close: Some(true),
16             change: Some(TextDocumentSyncKind::Full),
17             will_save: None,
18             will_save_wait_until: None,
19             save: Some(SaveOptions::default()),
20         })),
21         hover_provider: Some(true),
22         completion_provider: Some(CompletionOptions {
23             resolve_provider: None,
24             trigger_characters: Some(vec![":".to_string(), ".".to_string()]),
25             work_done_progress_options: WorkDoneProgressOptions { work_done_progress: None },
26         }),
27         signature_help_provider: Some(SignatureHelpOptions {
28             trigger_characters: Some(vec!["(".to_string(), ",".to_string()]),
29             retrigger_characters: None,
30             work_done_progress_options: WorkDoneProgressOptions { work_done_progress: None },
31         }),
32         declaration_provider: None,
33         definition_provider: Some(true),
34         type_definition_provider: Some(TypeDefinitionProviderCapability::Simple(true)),
35         implementation_provider: Some(ImplementationProviderCapability::Simple(true)),
36         references_provider: Some(true),
37         document_highlight_provider: Some(true),
38         document_symbol_provider: Some(true),
39         workspace_symbol_provider: Some(true),
40         code_action_provider: Some(CodeActionProviderCapability::Simple(true)),
41         code_lens_provider: Some(CodeLensOptions { resolve_provider: Some(true) }),
42         document_formatting_provider: Some(true),
43         document_range_formatting_provider: None,
44         document_on_type_formatting_provider: Some(DocumentOnTypeFormattingOptions {
45             first_trigger_character: "=".to_string(),
46             more_trigger_character: Some(vec![".".to_string(), ">".to_string()]),
47         }),
48         selection_range_provider: Some(SelectionRangeProviderCapability::Simple(true)),
49         semantic_highlighting: None,
50         folding_range_provider: Some(FoldingRangeProviderCapability::Simple(true)),
51         rename_provider: Some(RenameProviderCapability::Options(RenameOptions {
52             prepare_provider: Some(true),
53             work_done_progress_options: WorkDoneProgressOptions { work_done_progress: None },
54         })),
55         document_link_provider: None,
56         color_provider: None,
57         execute_command_provider: None,
58         workspace: None,
59         experimental: Default::default(),
60     }
61 }