diff options
Diffstat (limited to 'helix-term')
-rw-r--r-- | helix-term/src/commands.rs | 2 | ||||
-rw-r--r-- | helix-term/src/commands/lsp.rs | 4 | ||||
-rw-r--r-- | helix-term/src/compositor.rs | 7 |
3 files changed, 6 insertions, 7 deletions
diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs index 74d4c8d7..b7942f8d 100644 --- a/helix-term/src/commands.rs +++ b/helix-term/src/commands.rs @@ -2980,7 +2980,7 @@ pub mod cmd { Box::new(move |editor: &mut Editor, compositor: &mut Compositor| { let contents = ui::Markdown::new(contents, editor.syn_loader.clone()); let popup = Popup::new("hover", contents).auto_close(true); - compositor.replace_or_push("hover", Box::new(popup)); + compositor.replace_or_push("hover", popup); }); Ok(call) }; diff --git a/helix-term/src/commands/lsp.rs b/helix-term/src/commands/lsp.rs index df1bfb64..aa7fa1c8 100644 --- a/helix-term/src/commands/lsp.rs +++ b/helix-term/src/commands/lsp.rs @@ -254,7 +254,7 @@ pub fn code_action(cx: &mut Context) { vertical: 1, horizontal: 1, }); - compositor.replace_or_push("code-action", Box::new(popup)); + compositor.replace_or_push("code-action", popup); }, ) } @@ -637,7 +637,7 @@ pub fn hover(cx: &mut Context) { let contents = ui::Markdown::new(contents, editor.syn_loader.clone()); let popup = Popup::new("hover", contents).auto_close(true); - compositor.replace_or_push("hover", Box::new(popup)); + compositor.replace_or_push("hover", popup); } }, ); diff --git a/helix-term/src/compositor.rs b/helix-term/src/compositor.rs index 2f80de00..4f988ace 100644 --- a/helix-term/src/compositor.rs +++ b/helix-term/src/compositor.rs @@ -128,11 +128,11 @@ impl Compositor { /// Replace a component that has the given `id` with the new layer and if /// no component is found, push the layer normally. - pub fn replace_or_push(&mut self, id: &'static str, layer: Box<dyn Component>) { + pub fn replace_or_push<T: Component>(&mut self, id: &'static str, layer: T) { if let Some(component) = self.find_id(id) { *component = layer; } else { - self.push(layer) + self.push(Box::new(layer)) } } @@ -221,10 +221,9 @@ impl Compositor { } pub fn find_id<T: 'static>(&mut self, id: &'static str) -> Option<&mut T> { - let type_name = std::any::type_name::<T>(); self.layers .iter_mut() - .find(|component| component.type_name() == type_name && component.id() == Some(id)) + .find(|component| component.id() == Some(id)) .and_then(|component| component.as_any_mut().downcast_mut()) } } |