File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -14,6 +14,7 @@ mod def;
1414mod transform;
1515mod visitor;
1616pub mod graph;
17+ pub mod collapse;
1718pub use def:: * ;
1819pub use visitor:: * ;
1920//Easy to work with AST parsing and util.
Original file line number Diff line number Diff line change @@ -172,6 +172,7 @@ impl LanguageServer for Backend {
172172 } ,
173173 ) ,
174174 ) ,
175+ folding_range_provider : Some ( FoldingRangeProviderCapability :: Simple ( true ) ) ,
175176 references_provider : Some ( OneOf :: Left ( true ) ) ,
176177 rename_provider : Some ( OneOf :: Left ( true ) ) ,
177178 code_lens_provider : Some ( CodeLensOptions {
@@ -247,6 +248,16 @@ impl LanguageServer for Backend {
247248 }
248249 Ok ( None )
249250 }
251+ async fn folding_range ( & self , params : FoldingRangeParams ) -> Result < Option < Vec < FoldingRange > > > {
252+ let uri = params. text_document . uri ;
253+ let root_fileid = FileID :: from_uri ( & Url :: parse ( uri. as_str ( ) ) . unwrap ( ) ) ;
254+ let root_graph = self . pipeline . root ( ) . borrow_and_update ( ) . clone ( ) ;
255+ if !root_graph. contains_id ( root_fileid) { return Ok ( None ) ; }
256+
257+ let document = root_graph. files . get ( & root_fileid) . unwrap ( ) ;
258+ let c = ast:: collapse:: Collapse :: new ( document. source . clone ( ) , document. tree . clone ( ) , uri. clone ( ) ) ;
259+ Ok ( Some ( c. ranges ) )
260+ }
250261 async fn goto_definition (
251262 & self ,
252263 params : GotoDefinitionParams ,
You can’t perform that action at this time.
0 commit comments