Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'src/edi/input_handlers/click.rs')
| -rw-r--r-- | src/edi/input_handlers/click.rs | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/src/edi/input_handlers/click.rs b/src/edi/input_handlers/click.rs index 2fc4db3..82ddd2b 100644 --- a/src/edi/input_handlers/click.rs +++ b/src/edi/input_handlers/click.rs @@ -60,21 +60,26 @@ impl Editor { } Do::GoToDefinition(tdpp) => { dbg!(&tdpp); - if let Some(x) = self.requests.def.result.clone().or_else(|| { - tdpp.zip(lsp!(self)).and_then(|(tdpp, lsp)| { - lsp.request_immediate::<lsp_request!("textDocument/definition")>( - &GotoDefinitionParams { + if let Some(x) = self.requests.def.result.clone() + && let Err(e) = self.go(&x, w.clone(), lsp_mn) + { + log::error!("gtd: {e}"); + } else if let Some(x) = { + tdpp.zip(lsp!(self)).and_then(|(tdpp, lsp)| { + lsp.request_immediate::< lsp_request!("textDocument/definition")>( + &DefinitionParams { text_document_position_params: tdpp, work_done_progress_params: default(), partial_result_params: default(), }, ).ok() }).flatten().and_then(|x| match &x { - GotoDefinitionResponse::Link([x, ..]) => Some(x.clone()), + DefinitionResponse::Definition(Definition::Location(x)) => Some(x.clone()), + DefinitionResponse::Definition(Definition::LocationList([x])) => Some(x.clone()), + // DefinitionResponse::DefinitionLinkList([x, ..]) => Some(x.clone()), _ => None, }) - }) - && let Err(e) = self.go(&x, w.clone(),lsp_mn) + } && let Err(e) = self.go(&x, w.clone(), lsp_mn) { log::error!("gtd: {e}"); } |