use super::Editor;
impl Editor {
pub fn handle_undo(&mut self) {
if self.is_editing_disabled() {
self.set_status_message("Editing disabled in this buffer".to_string());
return;
}
let event_log = self.active_event_log_mut();
let before_idx = event_log.current_index();
let can_undo = event_log.can_undo();
let events = event_log.undo();
let after_idx = self.active_event_log().current_index();
tracing::debug!(
"Undo: before_idx={}, after_idx={}, can_undo={}, events_count={}",
before_idx,
after_idx,
can_undo,
events.len()
);
for event in &events {
tracing::debug!("Undo applying event: {:?}", event);
self.apply_event_to_active_buffer(event);
}
self.update_modified_from_event_log();
}
pub fn handle_redo(&mut self) {
if self.is_editing_disabled() {
self.set_status_message("Editing disabled in this buffer".to_string());
return;
}
let events = self.active_event_log_mut().redo();
for event in events {
self.apply_event_to_active_buffer(&event);
}
self.update_modified_from_event_log();
}
}