From e6132f0acdee8bfa542cd7f7571aeae702ac21a8 Mon Sep 17 00:00:00 2001 From: Ivan Tham Date: Thu, 3 Jun 2021 23:10:31 +0800 Subject: [PATCH] Fix undo redo I missed the fast return. Fix #89 --- helix-view/src/document.rs | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/helix-view/src/document.rs b/helix-view/src/document.rs index 3a3b9390..cf4a6faa 100644 --- a/helix-view/src/document.rs +++ b/helix-view/src/document.rs @@ -342,29 +342,35 @@ impl Document { pub fn undo(&mut self, view_id: ViewId) -> bool { let mut history = self.history.take(); - if let Some(transaction) = history.undo() { - let success = self._apply(&transaction, view_id); + let success = if let Some(transaction) = history.undo() { + self._apply(&transaction, view_id) + } else { + false + }; + self.history.set(history); + if success { // reset changeset to fix len self.changes = ChangeSet::new(self.text()); - - return success; } - self.history.set(history); - false + + success } pub fn redo(&mut self, view_id: ViewId) -> bool { let mut history = self.history.take(); - if let Some(transaction) = history.redo() { - let success = self._apply(&transaction, view_id); + let success = if let Some(transaction) = history.redo() { + self._apply(&transaction, view_id) + } else { + false + }; + self.history.set(history); + if success { // reset changeset to fix len self.changes = ChangeSet::new(self.text()); - - return success; } - self.history.set(history); + false }