aboutsummaryrefslogtreecommitdiff
path: root/helix-lsp/src/client.rs
diff options
context:
space:
mode:
Diffstat (limited to 'helix-lsp/src/client.rs')
-rw-r--r--helix-lsp/src/client.rs26
1 files changed, 16 insertions, 10 deletions
diff --git a/helix-lsp/src/client.rs b/helix-lsp/src/client.rs
index b8b2971c..b229cd1a 100644
--- a/helix-lsp/src/client.rs
+++ b/helix-lsp/src/client.rs
@@ -255,11 +255,6 @@ impl Client {
.await
}
- // TODO: this is dumb. TextEdit describes changes to the initial doc (concurrent), but
- // TextDocumentContentChangeEvent describes a series of changes (sequential).
- // So S -> S1 -> S2, meaning positioning depends on the previous edits.
- //
- // Calculation is therefore a bunch trickier.
pub fn changeset_to_changes(
old_text: &Rope,
new_text: &Rope,
@@ -274,6 +269,12 @@ impl Client {
use crate::util::pos_to_lsp_pos;
use helix_core::Operation::*;
+ // this is dumb. TextEdit describes changes to the initial doc (concurrent), but
+ // TextDocumentContentChangeEvent describes a series of changes (sequential).
+ // So S -> S1 -> S2, meaning positioning depends on the previous edits.
+ //
+ // Calculation is therefore a bunch trickier.
+
// TODO: stolen from syntax.rs, share
use helix_core::RopeSlice;
fn traverse(pos: lsp::Position, text: RopeSlice) -> lsp::Position {
@@ -397,8 +398,6 @@ impl Client {
.await
}
- // TODO: impl into() TextDocumentIdentifier / VersionedTextDocumentIdentifier for Document.
-
pub async fn text_document_did_close(
&self,
text_document: lsp::TextDocumentIdentifier,
@@ -411,15 +410,22 @@ impl Client {
// will_save / will_save_wait_until
- pub async fn text_document_did_save(&self) -> anyhow::Result<()> {
- unimplemented!()
+ pub async fn text_document_did_save(
+ &self,
+ text_document: lsp::TextDocumentIdentifier,
+ ) -> Result<()> {
+ self.notify::<lsp::notification::DidSaveTextDocument>(lsp::DidSaveTextDocumentParams {
+ text_document,
+ text: None, // TODO:
+ })
+ .await
}
pub async fn completion(
&self,
text_document: lsp::TextDocumentIdentifier,
position: lsp::Position,
- ) -> anyhow::Result<Vec<lsp::CompletionItem>> {
+ ) -> Result<Vec<lsp::CompletionItem>> {
// TODO: figure out what should happen when you complete with multiple cursors
let params = lsp::CompletionParams {