aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--helix-view/src/document.rs28
1 files 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
}