summaryrefslogtreecommitdiff
path: root/helix-term
diff options
context:
space:
mode:
Diffstat (limited to 'helix-term')
-rw-r--r--helix-term/src/commands.rs2
-rw-r--r--helix-term/src/commands/lsp.rs4
-rw-r--r--helix-term/src/compositor.rs7
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())
}
}