on master help sign in
goto_request wip
commita5f9080a9cbc765758ce8af0c19a970a05745c60 authorJan Hrastnik <jan.hrastnik2@gmail.com> dateWed 10 Mar 2021, 23:35 (6 years ago) parent3869d77
2 files changed+22−22
Cargo.lock−1 helix-lsp/src/client.rs+22−21
Cargo.lock−1
@@ -550,7 +550,6 @@ dependencies = [
550550 "helix-view",
551551 "ignore",
552552 "log",
553− "lsp-types",
554553 "num_cpus",
555554 "once_cell",
556555 "pulldown-cmark",
helix-lsp/src/client.rs+22−21
@@ -583,10 +583,26 @@ impl Client {
583583 Ok(response.unwrap_or_default())
584584 }
585585
586− pub async fn goto_generic(
586+ pub async fn goto_request<T: lsp::request::Request>(
587587 &self,
588− response: Option<lsp::GotoDefinitionResponse>,
588+ text_document: lsp::TextDocumentIdentifier,
589+ position: lsp::Position,
589590 ) -> anyhow::Result<Vec<lsp::Location>> {
591+ let params = lsp::GotoDefinitionParams {
592+ text_document_position_params: lsp::TextDocumentPositionParams {
593+ text_document,
594+ position,
595+ },
596+ work_done_progress_params: lsp::WorkDoneProgressParams {
597+ work_done_token: None,
598+ },
599+ partial_result_params: lsp::PartialResultParams {
600+ partial_result_token: None,
601+ },
602+ };
603+
604+ let response = self.request::<T>(params).await?;
605+
590606 let items = match response {
591607 Some(lsp::GotoDefinitionResponse::Scalar(location)) => vec![location],
592608 Some(lsp::GotoDefinitionResponse::Array(location_vec)) => location_vec,
@@ -612,22 +628,7 @@ impl Client {
612628 text_document: lsp::TextDocumentIdentifier,
613629 position: lsp::Position,
614630 ) -> anyhow::Result<Vec<lsp::Location>> {
615− let params = lsp::GotoDefinitionParams {
616− text_document_position_params: lsp::TextDocumentPositionParams {
617− text_document,
618− position,
619− },
620− work_done_progress_params: lsp::WorkDoneProgressParams {
621− work_done_token: None,
622− },
623− partial_result_params: lsp::PartialResultParams {
624− partial_result_token: None,
625− },
626− };
627−
628− let response = self.request::<lsp::request::GotoDefinition>(params).await?;
629−
630− self.goto_generic(response).await
631+ self.goto_request(response).await
631632 }
632633
633634 pub async fn goto_type_definition(
@@ -652,7 +653,7 @@ impl Client {
652653 .request::<lsp::request::GotoTypeDefinition>(params)
653654 .await?;
654655
655− self.goto_generic(response).await
656+ self.goto_request(response).await
656657 }
657658
658659 pub async fn goto_implementation(
@@ -677,7 +678,7 @@ impl Client {
677678 .request::<lsp::request::GotoImplementation>(params)
678679 .await?;
679680
680− self.goto_generic(response).await
681+ self.goto_request(response).await
681682 }
682683
683684 pub async fn goto_reference(
@@ -703,7 +704,7 @@ impl Client {
703704
704705 let response = self.request::<lsp::request::References>(params).await?;
705706
706− self.goto_generic(response.map(lsp::GotoDefinitionResponse::Array))
707+ self.goto_request(response.map(lsp::GotoDefinitionResponse::Array))
707708 .await
708709 }
709710}