diff options
Diffstat (limited to 'helix-lsp')
-rw-r--r-- | helix-lsp/src/client.rs | 13 | ||||
-rw-r--r-- | helix-lsp/src/lib.rs | 11 |
2 files changed, 24 insertions, 0 deletions
diff --git a/helix-lsp/src/client.rs b/helix-lsp/src/client.rs index 070f90d1..9ca708a7 100644 --- a/helix-lsp/src/client.rs +++ b/helix-lsp/src/client.rs @@ -660,4 +660,17 @@ impl Client { self.call::<lsp::request::References>(params) } + + pub fn document_symbols( + &self, + text_document: lsp::TextDocumentIdentifier, + ) -> impl Future<Output = Result<Value>> { + let params = lsp::DocumentSymbolParams { + text_document, + work_done_progress_params: lsp::WorkDoneProgressParams::default(), + partial_result_params: lsp::PartialResultParams::default(), + }; + + self.call::<lsp::request::DocumentSymbolRequest>(params) + } } diff --git a/helix-lsp/src/lib.rs b/helix-lsp/src/lib.rs index e16ad765..cff62492 100644 --- a/helix-lsp/src/lib.rs +++ b/helix-lsp/src/lib.rs @@ -138,6 +138,17 @@ pub mod util { lsp::Range::new(start, end) } + pub fn lsp_range_to_range( + doc: &Rope, + range: lsp::Range, + offset_encoding: OffsetEncoding, + ) -> Option<Range> { + let start = lsp_pos_to_pos(doc, range.start, offset_encoding)?; + let end = lsp_pos_to_pos(doc, range.end, offset_encoding)?; + + Some(Range::new(start, end)) + } + pub fn generate_transaction_from_edits( doc: &Rope, edits: Vec<lsp::TextEdit>, |