aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwojciechkepka2021-06-18 03:39:37 +0000
committerBlaž Hrastnik2021-06-18 08:42:38 +0000
commita6d39585d8a1cf260262e7f3e3c4741791582049 (patch)
tree6b494962f5a1ad4f88ef5bb9ff00c9f94c9f316c
parent52fb90b81eb6eb48ed64aceb7e6e1527b25cd998 (diff)
Add `work_done_token` as parameter to lsp methods
-rw-r--r--helix-lsp/src/client.rs52
-rw-r--r--helix-term/src/commands.rs14
-rw-r--r--helix-view/src/document.rs9
3 files changed, 40 insertions, 35 deletions
diff --git a/helix-lsp/src/client.rs b/helix-lsp/src/client.rs
index 9ca708a7..0b52681c 100644
--- a/helix-lsp/src/client.rs
+++ b/helix-lsp/src/client.rs
@@ -465,6 +465,7 @@ impl Client {
&self,
text_document: lsp::TextDocumentIdentifier,
position: lsp::Position,
+ work_done_token: Option<lsp::ProgressToken>,
) -> impl Future<Output = Result<Value>> {
// ) -> Result<Vec<lsp::CompletionItem>> {
let params = lsp::CompletionParams {
@@ -473,9 +474,7 @@ impl Client {
position,
},
// TODO: support these tokens by async receiving and updating the choice list
- work_done_progress_params: lsp::WorkDoneProgressParams {
- work_done_token: None,
- },
+ work_done_progress_params: lsp::WorkDoneProgressParams { work_done_token },
partial_result_params: lsp::PartialResultParams {
partial_result_token: None,
},
@@ -490,15 +489,14 @@ impl Client {
&self,
text_document: lsp::TextDocumentIdentifier,
position: lsp::Position,
+ work_done_token: Option<lsp::ProgressToken>,
) -> impl Future<Output = Result<Value>> {
let params = lsp::SignatureHelpParams {
text_document_position_params: lsp::TextDocumentPositionParams {
text_document,
position,
},
- work_done_progress_params: lsp::WorkDoneProgressParams {
- work_done_token: None,
- },
+ work_done_progress_params: lsp::WorkDoneProgressParams { work_done_token },
context: None,
// lsp::SignatureHelpContext
};
@@ -510,15 +508,14 @@ impl Client {
&self,
text_document: lsp::TextDocumentIdentifier,
position: lsp::Position,
+ work_done_token: Option<lsp::ProgressToken>,
) -> impl Future<Output = Result<Value>> {
let params = lsp::HoverParams {
text_document_position_params: lsp::TextDocumentPositionParams {
text_document,
position,
},
- work_done_progress_params: lsp::WorkDoneProgressParams {
- work_done_token: None,
- },
+ work_done_progress_params: lsp::WorkDoneProgressParams { work_done_token },
// lsp::SignatureHelpContext
};
@@ -531,6 +528,7 @@ impl Client {
&self,
text_document: lsp::TextDocumentIdentifier,
options: lsp::FormattingOptions,
+ work_done_token: Option<lsp::ProgressToken>,
) -> anyhow::Result<Vec<lsp::TextEdit>> {
let capabilities = self.capabilities.as_ref().unwrap();
@@ -545,9 +543,7 @@ impl Client {
let params = lsp::DocumentFormattingParams {
text_document,
options,
- work_done_progress_params: lsp::WorkDoneProgressParams {
- work_done_token: None,
- },
+ work_done_progress_params: lsp::WorkDoneProgressParams { work_done_token },
};
let response = self.request::<lsp::request::Formatting>(params).await?;
@@ -560,6 +556,7 @@ impl Client {
text_document: lsp::TextDocumentIdentifier,
range: lsp::Range,
options: lsp::FormattingOptions,
+ work_done_token: Option<lsp::ProgressToken>,
) -> anyhow::Result<Vec<lsp::TextEdit>> {
let capabilities = self.capabilities.as_ref().unwrap();
@@ -575,9 +572,7 @@ impl Client {
text_document,
range,
options,
- work_done_progress_params: lsp::WorkDoneProgressParams {
- work_done_token: None,
- },
+ work_done_progress_params: lsp::WorkDoneProgressParams { work_done_token },
};
let response = self
@@ -596,15 +591,14 @@ impl Client {
&self,
text_document: lsp::TextDocumentIdentifier,
position: lsp::Position,
+ work_done_token: Option<lsp::ProgressToken>,
) -> impl Future<Output = Result<Value>> {
let params = lsp::GotoDefinitionParams {
text_document_position_params: lsp::TextDocumentPositionParams {
text_document,
position,
},
- work_done_progress_params: lsp::WorkDoneProgressParams {
- work_done_token: None,
- },
+ work_done_progress_params: lsp::WorkDoneProgressParams { work_done_token },
partial_result_params: lsp::PartialResultParams {
partial_result_token: None,
},
@@ -617,30 +611,42 @@ impl Client {
&self,
text_document: lsp::TextDocumentIdentifier,
position: lsp::Position,
+ work_done_token: Option<lsp::ProgressToken>,
) -> impl Future<Output = Result<Value>> {
- self.goto_request::<lsp::request::GotoDefinition>(text_document, position)
+ self.goto_request::<lsp::request::GotoDefinition>(text_document, position, work_done_token)
}
pub fn goto_type_definition(
&self,
text_document: lsp::TextDocumentIdentifier,
position: lsp::Position,
+ work_done_token: Option<lsp::ProgressToken>,
) -> impl Future<Output = Result<Value>> {
- self.goto_request::<lsp::request::GotoTypeDefinition>(text_document, position)
+ self.goto_request::<lsp::request::GotoTypeDefinition>(
+ text_document,
+ position,
+ work_done_token,
+ )
}
pub fn goto_implementation(
&self,
text_document: lsp::TextDocumentIdentifier,
position: lsp::Position,
+ work_done_token: Option<lsp::ProgressToken>,
) -> impl Future<Output = Result<Value>> {
- self.goto_request::<lsp::request::GotoImplementation>(text_document, position)
+ self.goto_request::<lsp::request::GotoImplementation>(
+ text_document,
+ position,
+ work_done_token,
+ )
}
pub fn goto_reference(
&self,
text_document: lsp::TextDocumentIdentifier,
position: lsp::Position,
+ work_done_token: Option<lsp::ProgressToken>,
) -> impl Future<Output = Result<Value>> {
let params = lsp::ReferenceParams {
text_document_position: lsp::TextDocumentPositionParams {
@@ -650,9 +656,7 @@ impl Client {
context: lsp::ReferenceContext {
include_declaration: true,
},
- work_done_progress_params: lsp::WorkDoneProgressParams {
- work_done_token: None,
- },
+ work_done_progress_params: lsp::WorkDoneProgressParams { work_done_token },
partial_result_params: lsp::PartialResultParams {
partial_result_token: None,
},
diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs
index b2dd0d11..9b916a5e 100644
--- a/helix-term/src/commands.rs
+++ b/helix-term/src/commands.rs
@@ -1852,7 +1852,7 @@ fn goto_definition(cx: &mut Context) {
let pos = pos_to_lsp_pos(doc.text(), doc.selection(view.id).cursor(), offset_encoding);
// TODO: handle fails
- let future = language_server.goto_definition(doc.identifier(), pos);
+ let future = language_server.goto_definition(doc.identifier(), pos, None);
cx.callback(
future,
@@ -1889,7 +1889,7 @@ fn goto_type_definition(cx: &mut Context) {
let pos = pos_to_lsp_pos(doc.text(), doc.selection(view.id).cursor(), offset_encoding);
// TODO: handle fails
- let future = language_server.goto_type_definition(doc.identifier(), pos);
+ let future = language_server.goto_type_definition(doc.identifier(), pos, None);
cx.callback(
future,
@@ -1926,7 +1926,7 @@ fn goto_implementation(cx: &mut Context) {
let pos = pos_to_lsp_pos(doc.text(), doc.selection(view.id).cursor(), offset_encoding);
// TODO: handle fails
- let future = language_server.goto_implementation(doc.identifier(), pos);
+ let future = language_server.goto_implementation(doc.identifier(), pos, None);
cx.callback(
future,
@@ -1963,7 +1963,7 @@ fn goto_reference(cx: &mut Context) {
let pos = pos_to_lsp_pos(doc.text(), doc.selection(view.id).cursor(), offset_encoding);
// TODO: handle fails
- let future = language_server.goto_reference(doc.identifier(), pos);
+ let future = language_server.goto_reference(doc.identifier(), pos, None);
cx.callback(
future,
@@ -2075,7 +2075,7 @@ fn signature_help(cx: &mut Context) {
);
// TODO: handle fails
- let future = language_server.text_document_signature_help(doc.identifier(), pos);
+ let future = language_server.text_document_signature_help(doc.identifier(), pos, None);
cx.callback(
future,
@@ -2718,7 +2718,7 @@ fn completion(cx: &mut Context) {
let pos = pos_to_lsp_pos(doc.text(), doc.selection(view.id).cursor(), offset_encoding);
// TODO: handle fails
- let future = language_server.completion(doc.identifier(), pos);
+ let future = language_server.completion(doc.identifier(), pos, None);
let trigger_offset = doc.selection(view.id).cursor();
@@ -2776,7 +2776,7 @@ fn hover(cx: &mut Context) {
);
// TODO: handle fails
- let future = language_server.text_document_hover(doc.identifier(), pos);
+ let future = language_server.text_document_hover(doc.identifier(), pos, None);
cx.callback(
future,
diff --git a/helix-view/src/document.rs b/helix-view/src/document.rs
index fe9c87f7..e9a8097c 100644
--- a/helix-view/src/document.rs
+++ b/helix-view/src/document.rs
@@ -263,10 +263,11 @@ impl Document {
pub fn format(&mut self, view_id: ViewId) {
if let Some(language_server) = self.language_server() {
// TODO: await, no blocking
- let transaction = helix_lsp::block_on(
- language_server
- .text_document_formatting(self.identifier(), lsp::FormattingOptions::default()),
- )
+ let transaction = helix_lsp::block_on(language_server.text_document_formatting(
+ self.identifier(),
+ lsp::FormattingOptions::default(),
+ None,
+ ))
.map(|edits| {
helix_lsp::util::generate_transaction_from_edits(
self.text(),