on master help sign in
consolidate idle timer logic, make conditional
commit526c9be8cadf99519e8f6a9911b3784ab7f2e142 authorSkyler Hawthorne <skyler@dead10ck.com> dateMon 16 May 2022, 22:28 (4 years ago) parent374724f
1 file changed+18−8
helix-term/src/application.rs+18−8
helix-term/src/application.rs+18−8
@@ -251,6 +251,9 @@ impl Application {
251251 where
252252 S: Stream<Item = crossterm::Result<crossterm::event::Event>> + Unpin,
253253 {
254+ #[cfg(feature = "integration")]
255+ let mut idle_handled = false;
256+
254257 loop {
255258 if self.editor.should_close() {
256259 return false;
@@ -263,11 +266,9 @@ impl Application {
263266
264267 Some(event) = input_stream.next() => {
265268 self.handle_terminal_events(event);
266− self.editor.reset_idle_timer();
267269 }
268270 Some(signal) = self.signals.next() => {
269271 self.handle_signals(signal).await;
270− self.editor.reset_idle_timer();
271272 }
272273 Some((id, call)) = self.editor.language_servers.incoming.next() => {
273274 self.handle_language_server_message(call, id).await;
@@ -278,37 +279,46 @@ impl Application {
278279 self.render();
279280 self.last_render = Instant::now();
280281 }
281−
282− self.editor.reset_idle_timer();
283282 }
284283 Some(payload) = self.editor.debugger_events.next() => {
285284 let needs_render = self.editor.handle_debugger_message(payload).await;
286285 if needs_render {
287286 self.render();
288287 }
289− self.editor.reset_idle_timer();
290288 }
291289 Some(config_event) = self.editor.config_events.1.recv() => {
292290 self.handle_config_events(config_event);
293291 self.render();
294− self.editor.reset_idle_timer();
295292 }
296293 Some(callback) = self.jobs.futures.next() => {
297294 self.jobs.handle_callback(&mut self.editor, &mut self.compositor, callback);
298295 self.render();
299− self.editor.reset_idle_timer();
300296 }
301297 Some(callback) = self.jobs.wait_futures.next() => {
302298 self.jobs.handle_callback(&mut self.editor, &mut self.compositor, callback);
303299 self.render();
304− self.editor.reset_idle_timer();
305300 }
306301 _ = &mut self.editor.idle_timer => {
307302 // idle timeout
308303 self.editor.clear_idle_timer();
309304 self.handle_idle_timeout();
305+
306+ #[cfg(feature = "integration")]
307+ {
308+ idle_handled = true;
309+ }
310+ }
311+ }
312+
313+ // for integration tests only, reset the idle timer after every
314+ // event to make a signal when test events are done processing
315+ #[cfg(feature = "integration")]
316+ {
317+ if idle_handled {
310318 return true;
311319 }
320+
321+ self.editor.reset_idle_timer();
312322 }
313323 }
314324 }