From 7c32ecfa64679ec817e70f01c3cbbfb66231120b Mon Sep 17 00:00:00 2001 From: alice pellerin Date: Tue, 24 Mar 2026 17:48:12 -0500 Subject: [PATCH] handle all available events per frame --- src/app/mod.rs | 12 ++++++++++-- src/main.rs | 1 + 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/app/mod.rs b/src/app/mod.rs index bd4faaf..f1c6abf 100644 --- a/src/app/mod.rs +++ b/src/app/mod.rs @@ -1,4 +1,4 @@ -use std::{env, process::exit}; +use std::{env, process::exit, time::Duration}; use crossterm::{ExecutableCommand, event::{self, DisableMouseCapture, Event, KeyCode, KeyEvent, KeyModifiers, MouseEvent, MouseEventKind}, terminal::window_size}; use ratatui::{DefaultTerminal, style::Stylize, text::Span}; use crate::{BYTES_PER_LINE, action::AppAction, buffer::Buffer, config::Config, cursor::Cursor}; @@ -67,10 +67,18 @@ impl App { } pub fn handle_events(&mut self, terminal: &mut DefaultTerminal) { + self.handle_event(terminal); + + while event::poll(Duration::ZERO).unwrap() { + self.handle_event(terminal); + } + } + + pub fn handle_event(&mut self, terminal: &mut DefaultTerminal) { match event::read().unwrap() { Event::Resize(_, height) => { self.window_size.rows = height as usize; - + self.buffers[self.current_buffer_index] .clamp_screen_to_primary_cursor(self.window_size); } diff --git a/src/main.rs b/src/main.rs index 3d07055..8f6f7b1 100644 --- a/src/main.rs +++ b/src/main.rs @@ -30,6 +30,7 @@ const BYTES_OF_PADDING: usize = LINES_OF_PADDING * BYTES_PER_LINE; // - search // - ascii and bytes (`/` and `A-/`?) // - diffing +// - doesn't have to be anything fancy, just compare each byte 1:1 // - s/A-k/A-K // - sm select marks // - C-a/C-x