@@ -583,10 +583,26 @@ impl Client {
583 Ok(response.unwrap_or_default())
583 Ok(response.unwrap_or_default())
586− pub async fn goto_generic(
586+ pub async fn goto_request<T: lsp::request::Request>(
588− response: Option<lsp::GotoDefinitionResponse>,
588+ text_document: lsp::TextDocumentIdentifier,
589+ position: lsp::Position,
589 ) -> anyhow::Result<Vec<lsp::Location>> {
590 ) -> anyhow::Result<Vec<lsp::Location>> {
591+ let params = lsp::GotoDefinitionParams {
592+ text_document_position_params: lsp::TextDocumentPositionParams {
596+ work_done_progress_params: lsp::WorkDoneProgressParams {
597+ work_done_token: None,
599+ partial_result_params: lsp::PartialResultParams {
600+ partial_result_token: None,
604+ let response = self.request::<T>(params).await?;
590 let items = match response {
606 let items = match response {
591 Some(lsp::GotoDefinitionResponse::Scalar(location)) => vec![location],
607 Some(lsp::GotoDefinitionResponse::Scalar(location)) => vec![location],
592 Some(lsp::GotoDefinitionResponse::Array(location_vec)) => location_vec,
608 Some(lsp::GotoDefinitionResponse::Array(location_vec)) => location_vec,
@@ -612,22 +628,7 @@ impl Client {
612 text_document: lsp::TextDocumentIdentifier,
628 text_document: lsp::TextDocumentIdentifier,
613 position: lsp::Position,
629 position: lsp::Position,
614 ) -> anyhow::Result<Vec<lsp::Location>> {
630 ) -> anyhow::Result<Vec<lsp::Location>> {
615− let params = lsp::GotoDefinitionParams {
616− text_document_position_params: lsp::TextDocumentPositionParams {
620− work_done_progress_params: lsp::WorkDoneProgressParams {
621− work_done_token: None,
623− partial_result_params: lsp::PartialResultParams {
624− partial_result_token: None,
628− let response = self.request::<lsp::request::GotoDefinition>(params).await?;
630− self.goto_generic(response).await
631+ self.goto_request(response).await
633 pub async fn goto_type_definition(
634 pub async fn goto_type_definition(
@@ -652,7 +653,7 @@ impl Client {
652 .request::<lsp::request::GotoTypeDefinition>(params)
653 .request::<lsp::request::GotoTypeDefinition>(params)
655− self.goto_generic(response).await
656+ self.goto_request(response).await
658 pub async fn goto_implementation(
659 pub async fn goto_implementation(
@@ -677,7 +678,7 @@ impl Client {
677 .request::<lsp::request::GotoImplementation>(params)
678 .request::<lsp::request::GotoImplementation>(params)
680− self.goto_generic(response).await
681+ self.goto_request(response).await
683 pub async fn goto_reference(
684 pub async fn goto_reference(
@@ -703,7 +704,7 @@ impl Client {
704 let response = self.request::<lsp::request::References>(params).await?;
705 let response = self.request::<lsp::request::References>(params).await?;
706− self.goto_generic(response.map(lsp::GotoDefinitionResponse::Array))
707+ self.goto_request(response.map(lsp::GotoDefinitionResponse::Array))