diff --git a/crates/editor/src/hover_links.rs b/crates/editor/src/hover_links.rs index 057e8e3bdfbc25d8c33705974f965fc8c1477f15..9f212adbd2059dc516b726cdf3574232ddcbe1a9 100644 --- a/crates/editor/src/hover_links.rs +++ b/crates/editor/src/hover_links.rs @@ -1,6 +1,7 @@ use crate::{ Anchor, Editor, EditorSettings, EditorSnapshot, FindAllReferences, GoToDefinition, - GoToTypeDefinition, GotoDefinitionKind, InlayId, Navigated, PointForPosition, SelectPhase, + GoToDefinitionSplit, GoToTypeDefinition, GoToTypeDefinitionSplit, GotoDefinitionKind, InlayId, + Navigated, PointForPosition, SelectPhase, editor_settings::GoToDefinitionFallback, hover_popover::{self, InlayHover}, scroll::ScrollAmount, @@ -266,10 +267,13 @@ impl Editor { ); let navigate_task = if point.as_valid().is_some() { - if modifiers.shift { - self.go_to_type_definition(&GoToTypeDefinition, window, cx) - } else { - self.go_to_definition(&GoToDefinition, window, cx) + match (modifiers.shift, modifiers.alt) { + (true, true) => { + self.go_to_type_definition_split(&GoToTypeDefinitionSplit, window, cx) + } + (true, false) => self.go_to_type_definition(&GoToTypeDefinition, window, cx), + (false, true) => self.go_to_definition_split(&GoToDefinitionSplit, window, cx), + (false, false) => self.go_to_definition(&GoToDefinition, window, cx), } } else { Task::ready(Ok(Navigated::No))