mirror of
https://github.com/helix-editor/helix.git
synced 2025-01-19 13:37:06 +04:00
Simplify compositor.find
This commit is contained in:
parent
90fd09f2cc
commit
fa4c59df46
@ -270,12 +270,8 @@ pub fn handle_idle_timeout(&mut self) {
|
||||
}
|
||||
let editor_view = self
|
||||
.compositor
|
||||
.find(std::any::type_name::<ui::EditorView>())
|
||||
.find::<ui::EditorView>()
|
||||
.expect("expected at least one EditorView");
|
||||
let editor_view = editor_view
|
||||
.as_any_mut()
|
||||
.downcast_mut::<ui::EditorView>()
|
||||
.unwrap();
|
||||
|
||||
if editor_view.completion.is_some() {
|
||||
return;
|
||||
@ -440,12 +436,8 @@ pub async fn handle_language_server_message(
|
||||
{
|
||||
let editor_view = self
|
||||
.compositor
|
||||
.find(std::any::type_name::<ui::EditorView>())
|
||||
.find::<ui::EditorView>()
|
||||
.expect("expected at least one EditorView");
|
||||
let editor_view = editor_view
|
||||
.as_any_mut()
|
||||
.downcast_mut::<ui::EditorView>()
|
||||
.unwrap();
|
||||
let lsp::ProgressParams { token, value } = params;
|
||||
|
||||
let lsp::ProgressParamsValue::WorkDone(work) = value;
|
||||
@ -559,12 +551,8 @@ pub async fn handle_language_server_message(
|
||||
|
||||
let editor_view = self
|
||||
.compositor
|
||||
.find(std::any::type_name::<ui::EditorView>())
|
||||
.find::<ui::EditorView>()
|
||||
.expect("expected at least one EditorView");
|
||||
let editor_view = editor_view
|
||||
.as_any_mut()
|
||||
.downcast_mut::<ui::EditorView>()
|
||||
.unwrap();
|
||||
let spinner = editor_view.spinners_mut().get_or_create(server_id);
|
||||
if spinner.is_stopped() {
|
||||
spinner.start();
|
||||
|
@ -4735,19 +4735,15 @@ pub fn completion(cx: &mut Context) {
|
||||
return;
|
||||
}
|
||||
let size = compositor.size();
|
||||
let ui = compositor
|
||||
.find(std::any::type_name::<ui::EditorView>())
|
||||
.unwrap();
|
||||
if let Some(ui) = ui.as_any_mut().downcast_mut::<ui::EditorView>() {
|
||||
ui.set_completion(
|
||||
editor,
|
||||
items,
|
||||
offset_encoding,
|
||||
start_offset,
|
||||
trigger_offset,
|
||||
size,
|
||||
);
|
||||
};
|
||||
let ui = compositor.find::<ui::EditorView>().unwrap();
|
||||
ui.set_completion(
|
||||
editor,
|
||||
items,
|
||||
offset_encoding,
|
||||
start_offset,
|
||||
trigger_offset,
|
||||
size,
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
|
@ -177,11 +177,12 @@ pub fn has_component(&self, type_name: &str) -> bool {
|
||||
.any(|component| component.type_name() == type_name)
|
||||
}
|
||||
|
||||
pub fn find(&mut self, type_name: &str) -> Option<&mut dyn Component> {
|
||||
pub fn find<T: 'static>(&mut self) -> Option<&mut T> {
|
||||
let type_name = std::any::type_name::<T>();
|
||||
self.layers
|
||||
.iter_mut()
|
||||
.find(|component| component.type_name() == type_name)
|
||||
.map(|component| component.as_mut())
|
||||
.and_then(|component| component.as_any_mut().downcast_mut())
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user