aboutsummaryrefslogtreecommitdiff
path: root/helix-view
diff options
context:
space:
mode:
authorPascal Kuthe2023-08-21 21:24:30 +0000
committerGitHub2023-08-21 21:24:30 +0000
commite5f8d8ef049b43d20eaf27b4f143bcf808f6cb24 (patch)
treef57974910bc039bb23be842699654c62e375a782 /helix-view
parent454b61cb21de818b83f89de9e31f62fad70bb1b2 (diff)
create separate timer for redraw requests (#8023)
* create separate timer for redraw requests * Update helix-view/src/editor.rs Co-authored-by: Michael Davis <mcarsondavis@gmail.com> --------- Co-authored-by: Michael Davis <mcarsondavis@gmail.com>
Diffstat (limited to 'helix-view')
-rw-r--r--helix-view/src/editor.rs11
1 files changed, 9 insertions, 2 deletions
diff --git a/helix-view/src/editor.rs b/helix-view/src/editor.rs
index 1735b060..94d0a852 100644
--- a/helix-view/src/editor.rs
+++ b/helix-view/src/editor.rs
@@ -918,6 +918,7 @@ pub struct Editor {
pub auto_pairs: Option<AutoPairs>,
pub idle_timer: Pin<Box<Sleep>>,
+ redraw_timer: Pin<Box<Sleep>>,
last_motion: Option<Motion>,
pub last_completion: Option<CompleteAction>,
@@ -963,6 +964,7 @@ pub enum EditorEvent {
LanguageServerMessage((usize, Call)),
DebuggerEvent(dap::Payload),
IdleTimer,
+ Redraw,
}
#[derive(Debug, Clone)]
@@ -1053,6 +1055,7 @@ impl Editor {
status_msg: None,
autoinfo: None,
idle_timer: Box::pin(sleep(conf.idle_timeout)),
+ redraw_timer: Box::pin(sleep(Duration::MAX)),
last_motion: None,
last_completion: None,
config,
@@ -1753,12 +1756,16 @@ impl Editor {
if !self.needs_redraw{
self.needs_redraw = true;
let timeout = Instant::now() + Duration::from_millis(33);
- if timeout < self.idle_timer.deadline(){
- self.idle_timer.as_mut().reset(timeout)
+ if timeout < self.idle_timer.deadline() && timeout < self.redraw_timer.deadline(){
+ self.redraw_timer.as_mut().reset(timeout)
}
}
}
+ _ = &mut self.redraw_timer => {
+ self.redraw_timer.as_mut().reset(Instant::now() + Duration::from_secs(86400 * 365 * 30));
+ return EditorEvent::Redraw
+ }
_ = &mut self.idle_timer => {
return EditorEvent::IdleTimer
}