|
5 | 5 | * LICENSE file in the root directory of this source tree. |
6 | 6 | */ |
7 | 7 |
|
8 | | -mod event_loop; |
9 | 8 | mod code_lens; |
| 9 | +mod event_loop; |
10 | 10 |
|
11 | 11 | use std::cmp::min; |
12 | 12 | use std::collections::HashMap; |
@@ -53,6 +53,7 @@ use lsp_types::CodeActionResponse; |
53 | 53 | use lsp_types::CodeActionTriggerKind; |
54 | 54 | use lsp_types::CodeLensOptions; |
55 | 55 | use lsp_types::CodeLensRequest; |
| 56 | +use lsp_types::CodeLensResolveRequest; |
56 | 57 | use lsp_types::CompletionItem; |
57 | 58 | use lsp_types::CompletionList; |
58 | 59 | use lsp_types::CompletionOptions; |
@@ -1672,7 +1673,7 @@ pub fn capabilities( |
1672 | 1673 | ..Default::default() |
1673 | 1674 | })), |
1674 | 1675 | code_lens_provider: Some(CodeLensOptions { |
1675 | | - resolve_provider: Some(false), |
| 1676 | + resolve_provider: Some(true), |
1676 | 1677 | work_done_progress_options: Default::default(), |
1677 | 1678 | }), |
1678 | 1679 | completion_provider: Some(CompletionOptions { |
@@ -2373,6 +2374,7 @@ impl Server { |
2373 | 2374 | DefinitionRequest::METHOD.as_str(), |
2374 | 2375 | ProvideType::METHOD.as_str(), |
2375 | 2376 | TypeErrorDisplayStatusRequest::METHOD.as_str(), |
| 2377 | + CodeLensResolveRequest::METHOD.as_str(), |
2376 | 2378 | ]; |
2377 | 2379 |
|
2378 | 2380 | let in_cancelled_requests = canceled_requests.remove(&x.id); |
@@ -2771,15 +2773,29 @@ impl Server { |
2771 | 2773 | ) |
2772 | 2774 | { |
2773 | 2775 | self.set_file_stats(params.text_document.uri.clone(), telemetry_event); |
2774 | | - if let Err(reason) = self.code_lens( |
| 2776 | + let response = match self.code_lens(&transaction, params) { |
| 2777 | + Ok(response) => response, |
| 2778 | + Err(reason) => { |
| 2779 | + telemetry_event.set_empty_response_reason(reason); |
| 2780 | + None |
| 2781 | + } |
| 2782 | + }; |
| 2783 | + self.send_response(new_response(x.id, Ok(response))); |
| 2784 | + } |
| 2785 | + } else if let Some(params) = as_request::<CodeLensResolveRequest>(&x) { |
| 2786 | + if let Some(params) = self |
| 2787 | + .extract_request_params_or_send_err_response::<CodeLensResolveRequest>( |
| 2788 | + params, &x.id, |
| 2789 | + ) |
| 2790 | + && let Err(reason) = self.resolve_code_lens( |
2775 | 2791 | x.id.clone(), |
2776 | 2792 | &transaction, |
2777 | | - params, |
| 2793 | + ¶ms, |
2778 | 2794 | telemetry_event.activity_key.clone(), |
2779 | | - ) { |
2780 | | - self.send_response(new_response(x.id, Ok(None::<()>))); |
2781 | | - telemetry_event.set_empty_response_reason(reason); |
2782 | | - } |
| 2795 | + ) |
| 2796 | + { |
| 2797 | + telemetry_event.set_empty_response_reason(reason); |
| 2798 | + self.send_response(new_response(x.id, Ok(params))); |
2783 | 2799 | } |
2784 | 2800 | } else if let Some(params) = as_request::<WorkspaceSymbolRequest>(&x) { |
2785 | 2801 | if let Some(params) = self |
|
0 commit comments