@@ -24,6 +24,7 @@ use tower_lsp::jsonrpc;
24
24
use tower_lsp:: jsonrpc:: Result ;
25
25
use tower_lsp:: lsp_types:: request:: GotoImplementationParams ;
26
26
use tower_lsp:: lsp_types:: request:: GotoImplementationResponse ;
27
+ use tower_lsp:: lsp_types:: FoldingRange ;
27
28
use tower_lsp:: lsp_types:: SelectionRange ;
28
29
use tower_lsp:: lsp_types:: * ;
29
30
use tower_lsp:: Client ;
@@ -131,6 +132,7 @@ pub(crate) enum LspRequest {
131
132
Initialize ( InitializeParams ) ,
132
133
WorkspaceSymbol ( WorkspaceSymbolParams ) ,
133
134
DocumentSymbol ( DocumentSymbolParams ) ,
135
+ FoldingRange ( FoldingRangeParams ) ,
134
136
ExecuteCommand ( ExecuteCommandParams ) ,
135
137
Completion ( CompletionParams ) ,
136
138
CompletionResolve ( CompletionItem ) ,
@@ -153,6 +155,7 @@ pub(crate) enum LspResponse {
153
155
Initialize ( InitializeResult ) ,
154
156
WorkspaceSymbol ( Option < Vec < SymbolInformation > > ) ,
155
157
DocumentSymbol ( Option < DocumentSymbolResponse > ) ,
158
+ FoldingRange ( Option < Vec < FoldingRange > > ) ,
156
159
ExecuteCommand ( Option < Value > ) ,
157
160
Completion ( Option < CompletionResponse > ) ,
158
161
CompletionResolve ( CompletionItem ) ,
@@ -263,6 +266,14 @@ impl LanguageServer for Backend {
263
266
)
264
267
}
265
268
269
+ async fn folding_range ( & self , params : FoldingRangeParams ) -> Result < Option < Vec < FoldingRange > > > {
270
+ cast_response ! (
271
+ self ,
272
+ self . request( LspRequest :: FoldingRange ( params) ) . await ,
273
+ LspResponse :: FoldingRange
274
+ )
275
+ }
276
+
266
277
async fn execute_command (
267
278
& self ,
268
279
params : ExecuteCommandParams ,
0 commit comments