diff options
author | Pascal Kuthe | 2023-03-30 16:22:51 +0000 |
---|---|---|
committer | Blaž Hrastnik | 2023-03-31 06:19:28 +0000 |
commit | 7a69c40524833f93c3df32ba457a1a658472bb4b (patch) | |
tree | 6bfa45e39db0f195abed2e51e4335f8cdc69ecbc /helix-term/src/commands/lsp.rs | |
parent | ab819d80f1391667f8ff6b149fa4fbe977f4607a (diff) |
Hide signature help if it overlays completion menu (#5523)
Diffstat (limited to 'helix-term/src/commands/lsp.rs')
-rw-r--r-- | helix-term/src/commands/lsp.rs | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/helix-term/src/commands/lsp.rs b/helix-term/src/commands/lsp.rs index 0b0d1db4..f8e83a46 100644 --- a/helix-term/src/commands/lsp.rs +++ b/helix-term/src/commands/lsp.rs @@ -1221,10 +1221,25 @@ pub fn signature_help_impl(cx: &mut Context, invoked: SignatureHelpInvoked) { contents.set_active_param_range(active_param_range()); let old_popup = compositor.find_id::<Popup<SignatureHelp>>(SignatureHelp::ID); - let popup = Popup::new(SignatureHelp::ID, contents) + let mut popup = Popup::new(SignatureHelp::ID, contents) .position(old_popup.and_then(|p| p.get_position())) .position_bias(Open::Above) .ignore_escape_key(true); + + // Don't create a popup if it intersects the auto-complete menu. + let size = compositor.size(); + if compositor + .find::<ui::EditorView>() + .unwrap() + .completion + .as_mut() + .map(|completion| completion.area(size, editor)) + .filter(|area| area.intersects(popup.area(size, editor))) + .is_some() + { + return; + } + compositor.replace_or_push(SignatureHelp::ID, popup); }, ); |