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.rs19
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}");
}