aboutsummaryrefslogtreecommitdiff
path: root/helix-lsp
diff options
context:
space:
mode:
authorRobin2021-06-12 12:45:21 +0000
committerGitHub2021-06-12 12:45:21 +0000
commit9baf1ecc90117710e785467f59a99ee119f50c73 (patch)
tree3cb091df93ad455b5cca529f578e8df3995486c1 /helix-lsp
parent44cc0d8eb0743101724fca8787217a9d0aa01bd4 (diff)
add symbol picker (#230)
* add symbol picker use the lsp document_symbol request * fix errors from merging in master * add docs for symbol picker
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>,