on master help sign in
Add `work_done_token` as parameter to lsp methods
commita6d39585d8a1cf260262e7f3e3c4741791582049 authorwojciechkepka <wojtek.kepka@protonmail.com> dateFri 18 Jun 2021, 05:39 (5 years ago) parent52fb90b
3 files changed+40−35
helix-lsp/src/client.rs+28−24 helix-term/src/commands.rs+7−7 helix-view/src/document.rs+5−4
helix-lsp/src/client.rs+28−24
@@ -465,6 +465,7 @@ impl Client {
465465 &self,
466466 text_document: lsp::TextDocumentIdentifier,
467467 position: lsp::Position,
468+ work_done_token: Option<lsp::ProgressToken>,
468469 ) -> impl Future<Output = Result<Value>> {
469470 // ) -> Result<Vec<lsp::CompletionItem>> {
470471 let params = lsp::CompletionParams {
@@ -473,9 +474,7 @@ impl Client {
473474 position,
474475 },
475476 // TODO: support these tokens by async receiving and updating the choice list
476− work_done_progress_params: lsp::WorkDoneProgressParams {
477− work_done_token: None,
478− },
477+ work_done_progress_params: lsp::WorkDoneProgressParams { work_done_token },
479478 partial_result_params: lsp::PartialResultParams {
480479 partial_result_token: None,
481480 },
@@ -490,15 +489,14 @@ impl Client {
490489 &self,
491490 text_document: lsp::TextDocumentIdentifier,
492491 position: lsp::Position,
492+ work_done_token: Option<lsp::ProgressToken>,
493493 ) -> impl Future<Output = Result<Value>> {
494494 let params = lsp::SignatureHelpParams {
495495 text_document_position_params: lsp::TextDocumentPositionParams {
496496 text_document,
497497 position,
498498 },
499− work_done_progress_params: lsp::WorkDoneProgressParams {
500− work_done_token: None,
501− },
499+ work_done_progress_params: lsp::WorkDoneProgressParams { work_done_token },
502500 context: None,
503501 // lsp::SignatureHelpContext
504502 };
@@ -510,15 +508,14 @@ impl Client {
510508 &self,
511509 text_document: lsp::TextDocumentIdentifier,
512510 position: lsp::Position,
511+ work_done_token: Option<lsp::ProgressToken>,
513512 ) -> impl Future<Output = Result<Value>> {
514513 let params = lsp::HoverParams {
515514 text_document_position_params: lsp::TextDocumentPositionParams {
516515 text_document,
517516 position,
518517 },
519− work_done_progress_params: lsp::WorkDoneProgressParams {
520− work_done_token: None,
521− },
518+ work_done_progress_params: lsp::WorkDoneProgressParams { work_done_token },
522519 // lsp::SignatureHelpContext
523520 };
524521
@@ -531,6 +528,7 @@ impl Client {
531528 &self,
532529 text_document: lsp::TextDocumentIdentifier,
533530 options: lsp::FormattingOptions,
531+ work_done_token: Option<lsp::ProgressToken>,
534532 ) -> anyhow::Result<Vec<lsp::TextEdit>> {
535533 let capabilities = self.capabilities.as_ref().unwrap();
536534
@@ -545,9 +543,7 @@ impl Client {
545543 let params = lsp::DocumentFormattingParams {
546544 text_document,
547545 options,
548− work_done_progress_params: lsp::WorkDoneProgressParams {
549− work_done_token: None,
550− },
546+ work_done_progress_params: lsp::WorkDoneProgressParams { work_done_token },
551547 };
552548
553549 let response = self.request::<lsp::request::Formatting>(params).await?;
@@ -560,6 +556,7 @@ impl Client {
560556 text_document: lsp::TextDocumentIdentifier,
561557 range: lsp::Range,
562558 options: lsp::FormattingOptions,
559+ work_done_token: Option<lsp::ProgressToken>,
563560 ) -> anyhow::Result<Vec<lsp::TextEdit>> {
564561 let capabilities = self.capabilities.as_ref().unwrap();
565562
@@ -575,9 +572,7 @@ impl Client {
575572 text_document,
576573 range,
577574 options,
578− work_done_progress_params: lsp::WorkDoneProgressParams {
579− work_done_token: None,
580− },
575+ work_done_progress_params: lsp::WorkDoneProgressParams { work_done_token },
581576 };
582577
583578 let response = self
@@ -596,15 +591,14 @@ impl Client {
596591 &self,
597592 text_document: lsp::TextDocumentIdentifier,
598593 position: lsp::Position,
594+ work_done_token: Option<lsp::ProgressToken>,
599595 ) -> impl Future<Output = Result<Value>> {
600596 let params = lsp::GotoDefinitionParams {
601597 text_document_position_params: lsp::TextDocumentPositionParams {
602598 text_document,
603599 position,
604600 },
605− work_done_progress_params: lsp::WorkDoneProgressParams {
606− work_done_token: None,
607− },
601+ work_done_progress_params: lsp::WorkDoneProgressParams { work_done_token },
608602 partial_result_params: lsp::PartialResultParams {
609603 partial_result_token: None,
610604 },
@@ -617,30 +611,42 @@ impl Client {
617611 &self,
618612 text_document: lsp::TextDocumentIdentifier,
619613 position: lsp::Position,
614+ work_done_token: Option<lsp::ProgressToken>,
620615 ) -> impl Future<Output = Result<Value>> {
621− self.goto_request::<lsp::request::GotoDefinition>(text_document, position)
616+ self.goto_request::<lsp::request::GotoDefinition>(text_document, position, work_done_token)
622617 }
623618
624619 pub fn goto_type_definition(
625620 &self,
626621 text_document: lsp::TextDocumentIdentifier,
627622 position: lsp::Position,
623+ work_done_token: Option<lsp::ProgressToken>,
628624 ) -> impl Future<Output = Result<Value>> {
629− self.goto_request::<lsp::request::GotoTypeDefinition>(text_document, position)
625+ self.goto_request::<lsp::request::GotoTypeDefinition>(
626+ text_document,
627+ position,
628+ work_done_token,
629+ )
630630 }
631631
632632 pub fn goto_implementation(
633633 &self,
634634 text_document: lsp::TextDocumentIdentifier,
635635 position: lsp::Position,
636+ work_done_token: Option<lsp::ProgressToken>,
636637 ) -> impl Future<Output = Result<Value>> {
637− self.goto_request::<lsp::request::GotoImplementation>(text_document, position)
638+ self.goto_request::<lsp::request::GotoImplementation>(
639+ text_document,
640+ position,
641+ work_done_token,
642+ )
638643 }
639644
640645 pub fn goto_reference(
641646 &self,
642647 text_document: lsp::TextDocumentIdentifier,
643648 position: lsp::Position,
649+ work_done_token: Option<lsp::ProgressToken>,
644650 ) -> impl Future<Output = Result<Value>> {
645651 let params = lsp::ReferenceParams {
646652 text_document_position: lsp::TextDocumentPositionParams {
@@ -650,9 +656,7 @@ impl Client {
650656 context: lsp::ReferenceContext {
651657 include_declaration: true,
652658 },
653− work_done_progress_params: lsp::WorkDoneProgressParams {
654− work_done_token: None,
655− },
659+ work_done_progress_params: lsp::WorkDoneProgressParams { work_done_token },
656660 partial_result_params: lsp::PartialResultParams {
657661 partial_result_token: None,
658662 },
helix-term/src/commands.rs+7−7
@@ -1852,7 +1852,7 @@ fn goto_definition(cx: &mut Context) {
18521852 let pos = pos_to_lsp_pos(doc.text(), doc.selection(view.id).cursor(), offset_encoding);
18531853
18541854 // TODO: handle fails
1855− let future = language_server.goto_definition(doc.identifier(), pos);
1855+ let future = language_server.goto_definition(doc.identifier(), pos, None);
18561856
18571857 cx.callback(
18581858 future,
@@ -1889,7 +1889,7 @@ fn goto_type_definition(cx: &mut Context) {
18891889 let pos = pos_to_lsp_pos(doc.text(), doc.selection(view.id).cursor(), offset_encoding);
18901890
18911891 // TODO: handle fails
1892− let future = language_server.goto_type_definition(doc.identifier(), pos);
1892+ let future = language_server.goto_type_definition(doc.identifier(), pos, None);
18931893
18941894 cx.callback(
18951895 future,
@@ -1926,7 +1926,7 @@ fn goto_implementation(cx: &mut Context) {
19261926 let pos = pos_to_lsp_pos(doc.text(), doc.selection(view.id).cursor(), offset_encoding);
19271927
19281928 // TODO: handle fails
1929− let future = language_server.goto_implementation(doc.identifier(), pos);
1929+ let future = language_server.goto_implementation(doc.identifier(), pos, None);
19301930
19311931 cx.callback(
19321932 future,
@@ -1963,7 +1963,7 @@ fn goto_reference(cx: &mut Context) {
19631963 let pos = pos_to_lsp_pos(doc.text(), doc.selection(view.id).cursor(), offset_encoding);
19641964
19651965 // TODO: handle fails
1966− let future = language_server.goto_reference(doc.identifier(), pos);
1966+ let future = language_server.goto_reference(doc.identifier(), pos, None);
19671967
19681968 cx.callback(
19691969 future,
@@ -2075,7 +2075,7 @@ fn signature_help(cx: &mut Context) {
20752075 );
20762076
20772077 // TODO: handle fails
2078− let future = language_server.text_document_signature_help(doc.identifier(), pos);
2078+ let future = language_server.text_document_signature_help(doc.identifier(), pos, None);
20792079
20802080 cx.callback(
20812081 future,
@@ -2718,7 +2718,7 @@ fn completion(cx: &mut Context) {
27182718 let pos = pos_to_lsp_pos(doc.text(), doc.selection(view.id).cursor(), offset_encoding);
27192719
27202720 // TODO: handle fails
2721− let future = language_server.completion(doc.identifier(), pos);
2721+ let future = language_server.completion(doc.identifier(), pos, None);
27222722
27232723 let trigger_offset = doc.selection(view.id).cursor();
27242724
@@ -2776,7 +2776,7 @@ fn hover(cx: &mut Context) {
27762776 );
27772777
27782778 // TODO: handle fails
2779− let future = language_server.text_document_hover(doc.identifier(), pos);
2779+ let future = language_server.text_document_hover(doc.identifier(), pos, None);
27802780
27812781 cx.callback(
27822782 future,
helix-view/src/document.rs+5−4
@@ -263,10 +263,11 @@ impl Document {
263263 pub fn format(&mut self, view_id: ViewId) {
264264 if let Some(language_server) = self.language_server() {
265265 // TODO: await, no blocking
266− let transaction = helix_lsp::block_on(
267− language_server
268− .text_document_formatting(self.identifier(), lsp::FormattingOptions::default()),
269− )
266+ let transaction = helix_lsp::block_on(language_server.text_document_formatting(
267+ self.identifier(),
268+ lsp::FormattingOptions::default(),
269+ None,
270+ ))
270271 .map(|edits| {
271272 helix_lsp::util::generate_transaction_from_edits(
272273 self.text(),