mirror of https://github.com/helix-editor/helix
Simplify compositor.find
parent
90fd09f2cc
commit
fa4c59df46
|
@ -270,12 +270,8 @@ impl Application {
|
||||||
}
|
}
|
||||||
let editor_view = self
|
let editor_view = self
|
||||||
.compositor
|
.compositor
|
||||||
.find(std::any::type_name::<ui::EditorView>())
|
.find::<ui::EditorView>()
|
||||||
.expect("expected at least one 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() {
|
if editor_view.completion.is_some() {
|
||||||
return;
|
return;
|
||||||
|
@ -440,12 +436,8 @@ impl Application {
|
||||||
{
|
{
|
||||||
let editor_view = self
|
let editor_view = self
|
||||||
.compositor
|
.compositor
|
||||||
.find(std::any::type_name::<ui::EditorView>())
|
.find::<ui::EditorView>()
|
||||||
.expect("expected at least one 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::ProgressParams { token, value } = params;
|
||||||
|
|
||||||
let lsp::ProgressParamsValue::WorkDone(work) = value;
|
let lsp::ProgressParamsValue::WorkDone(work) = value;
|
||||||
|
@ -559,12 +551,8 @@ impl Application {
|
||||||
|
|
||||||
let editor_view = self
|
let editor_view = self
|
||||||
.compositor
|
.compositor
|
||||||
.find(std::any::type_name::<ui::EditorView>())
|
.find::<ui::EditorView>()
|
||||||
.expect("expected at least one 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);
|
let spinner = editor_view.spinners_mut().get_or_create(server_id);
|
||||||
if spinner.is_stopped() {
|
if spinner.is_stopped() {
|
||||||
spinner.start();
|
spinner.start();
|
||||||
|
|
|
@ -4735,19 +4735,15 @@ pub fn completion(cx: &mut Context) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let size = compositor.size();
|
let size = compositor.size();
|
||||||
let ui = compositor
|
let ui = compositor.find::<ui::EditorView>().unwrap();
|
||||||
.find(std::any::type_name::<ui::EditorView>())
|
ui.set_completion(
|
||||||
.unwrap();
|
editor,
|
||||||
if let Some(ui) = ui.as_any_mut().downcast_mut::<ui::EditorView>() {
|
items,
|
||||||
ui.set_completion(
|
offset_encoding,
|
||||||
editor,
|
start_offset,
|
||||||
items,
|
trigger_offset,
|
||||||
offset_encoding,
|
size,
|
||||||
start_offset,
|
);
|
||||||
trigger_offset,
|
|
||||||
size,
|
|
||||||
);
|
|
||||||
};
|
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -177,11 +177,12 @@ impl Compositor {
|
||||||
.any(|component| component.type_name() == type_name)
|
.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
|
self.layers
|
||||||
.iter_mut()
|
.iter_mut()
|
||||||
.find(|component| component.type_name() == type_name)
|
.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