aboutsummaryrefslogtreecommitdiff
path: root/helix-lsp
diff options
context:
space:
mode:
Diffstat (limited to 'helix-lsp')
-rw-r--r--helix-lsp/src/client.rs13
-rw-r--r--helix-lsp/src/lib.rs11
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>,