mirror of https://github.com/helix-editor/helix
Extract idle timeout code into ui/editor.rs
parent
78fba8683b
commit
68bad148a5
|
@ -187,17 +187,13 @@ impl Application {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn render(&mut self) {
|
fn render(&mut self) {
|
||||||
let editor = &mut self.editor;
|
|
||||||
let compositor = &mut self.compositor;
|
|
||||||
let jobs = &mut self.jobs;
|
|
||||||
|
|
||||||
let mut cx = crate::compositor::Context {
|
let mut cx = crate::compositor::Context {
|
||||||
editor,
|
editor: &mut self.editor,
|
||||||
jobs,
|
jobs: &mut self.jobs,
|
||||||
scroll: None,
|
scroll: None,
|
||||||
};
|
};
|
||||||
|
|
||||||
compositor.render(&mut cx);
|
self.compositor.render(&mut cx);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn event_loop(&mut self) {
|
pub async fn event_loop(&mut self) {
|
||||||
|
@ -278,31 +274,20 @@ impl Application {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn handle_idle_timeout(&mut self) {
|
pub fn handle_idle_timeout(&mut self) {
|
||||||
use crate::commands::{insert::idle_completion, Context};
|
use crate::compositor::EventResult;
|
||||||
use helix_view::document::Mode;
|
|
||||||
|
|
||||||
if doc!(self.editor).mode != Mode::Insert || !self.config.editor.auto_completion {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
let editor_view = self
|
let editor_view = self
|
||||||
.compositor
|
.compositor
|
||||||
.find::<ui::EditorView>()
|
.find::<ui::EditorView>()
|
||||||
.expect("expected at least one EditorView");
|
.expect("expected at least one EditorView");
|
||||||
|
|
||||||
if editor_view.completion.is_some() {
|
let mut cx = crate::compositor::Context {
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let mut cx = Context {
|
|
||||||
register: None,
|
|
||||||
editor: &mut self.editor,
|
editor: &mut self.editor,
|
||||||
jobs: &mut self.jobs,
|
jobs: &mut self.jobs,
|
||||||
count: None,
|
scroll: None,
|
||||||
callback: None,
|
|
||||||
on_next_key_callback: None,
|
|
||||||
};
|
};
|
||||||
idle_completion(&mut cx);
|
if let EventResult::Consumed(_) = editor_view.handle_idle_timeout(&mut cx) {
|
||||||
self.render();
|
self.render();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn handle_terminal_events(&mut self, event: Option<Result<Event, crossterm::ErrorKind>>) {
|
pub fn handle_terminal_events(&mut self, event: Option<Result<Event, crossterm::ErrorKind>>) {
|
||||||
|
|
|
@ -856,6 +856,27 @@ impl EditorView {
|
||||||
doc.savepoint = None;
|
doc.savepoint = None;
|
||||||
editor.clear_idle_timer(); // don't retrigger
|
editor.clear_idle_timer(); // don't retrigger
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn handle_idle_timeout(&mut self, cx: &mut crate::compositor::Context) -> EventResult {
|
||||||
|
if self.completion.is_some()
|
||||||
|
|| !cx.editor.config.auto_completion
|
||||||
|
|| doc!(cx.editor).mode != Mode::Insert
|
||||||
|
{
|
||||||
|
return EventResult::Ignored(None);
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut cx = commands::Context {
|
||||||
|
register: None,
|
||||||
|
editor: cx.editor,
|
||||||
|
jobs: cx.jobs,
|
||||||
|
count: None,
|
||||||
|
callback: None,
|
||||||
|
on_next_key_callback: None,
|
||||||
|
};
|
||||||
|
crate::commands::insert::idle_completion(&mut cx);
|
||||||
|
|
||||||
|
EventResult::Consumed(None)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl EditorView {
|
impl EditorView {
|
||||||
|
|
Loading…
Reference in New Issue