mirror of
https://github.com/helix-editor/helix.git
synced 2024-11-22 17:36:19 +04:00
Add work_done_token
as parameter to lsp methods
This commit is contained in:
parent
52fb90b81e
commit
a6d39585d8
@ -465,6 +465,7 @@ pub fn completion(
|
||||
&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 @@ pub fn completion(
|
||||
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 @@ pub fn text_document_signature_help(
|
||||
&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 @@ pub fn text_document_hover(
|
||||
&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 @@ pub async fn text_document_formatting(
|
||||
&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 @@ pub async fn text_document_formatting(
|
||||
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 @@ pub async fn text_document_range_formatting(
|
||||
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 @@ pub async fn text_document_range_formatting(
|
||||
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 @@ fn goto_request<
|
||||
&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 @@ pub fn goto_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::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 @@ pub fn goto_reference(
|
||||
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,
|
||||
},
|
||||
|
@ -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,
|
||||
|
@ -263,10 +263,11 @@ pub fn load(path: PathBuf) -> Result<Self, Error> {
|
||||
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(),
|
||||
|
Loading…
Reference in New Issue
Block a user