aboutsummaryrefslogtreecommitdiff
path: root/helix-view
diff options
context:
space:
mode:
authorMichael Davis2022-10-12 15:57:40 +0000
committerGitHub2022-10-12 15:57:40 +0000
commite16c63276082f1cf79c57ff2ed2d301fe3333a0e (patch)
tree1b10135a4fe022c93e4c6c3d1438a94f6688c750 /helix-view
parent7f75458e6f29f2dc0717557a1072b70deee27acb (diff)
Apply transactions to the jumplist for undo/redo (#4227)
Undo/redo/earlier/later call `Document::apply_impl` which applies transactions to the document. These transactions also need to be applied to the view as in 0aedef0.
Diffstat (limited to 'helix-view')
-rw-r--r--helix-view/src/document.rs24
1 files changed, 12 insertions, 12 deletions
diff --git a/helix-view/src/document.rs b/helix-view/src/document.rs
index 93708339..0daa983f 100644
--- a/helix-view/src/document.rs
+++ b/helix-view/src/document.rs
@@ -834,11 +834,11 @@ impl Document {
success
}
- fn undo_redo_impl(&mut self, view_id: ViewId, undo: bool) -> bool {
+ fn undo_redo_impl(&mut self, view: &mut View, undo: bool) -> bool {
let mut history = self.history.take();
let txn = if undo { history.undo() } else { history.redo() };
let success = if let Some(txn) = txn {
- self.apply_impl(txn, view_id)
+ self.apply_impl(txn, view.id) && view.apply(txn, self)
} else {
false
};
@@ -852,13 +852,13 @@ impl Document {
}
/// Undo the last modification to the [`Document`]. Returns whether the undo was successful.
- pub fn undo(&mut self, view_id: ViewId) -> bool {
- self.undo_redo_impl(view_id, true)
+ pub fn undo(&mut self, view: &mut View) -> bool {
+ self.undo_redo_impl(view, true)
}
/// Redo the last modification to the [`Document`]. Returns whether the redo was successful.
- pub fn redo(&mut self, view_id: ViewId) -> bool {
- self.undo_redo_impl(view_id, false)
+ pub fn redo(&mut self, view: &mut View) -> bool {
+ self.undo_redo_impl(view, false)
}
pub fn savepoint(&mut self) {
@@ -871,7 +871,7 @@ impl Document {
}
}
- fn earlier_later_impl(&mut self, view_id: ViewId, uk: UndoKind, earlier: bool) -> bool {
+ fn earlier_later_impl(&mut self, view: &mut View, uk: UndoKind, earlier: bool) -> bool {
let txns = if earlier {
self.history.get_mut().earlier(uk)
} else {
@@ -879,7 +879,7 @@ impl Document {
};
let mut success = false;
for txn in txns {
- if self.apply_impl(&txn, view_id) {
+ if self.apply_impl(&txn, view.id) && view.apply(&txn, self) {
success = true;
}
}
@@ -891,13 +891,13 @@ impl Document {
}
/// Undo modifications to the [`Document`] according to `uk`.
- pub fn earlier(&mut self, view_id: ViewId, uk: UndoKind) -> bool {
- self.earlier_later_impl(view_id, uk, true)
+ pub fn earlier(&mut self, view: &mut View, uk: UndoKind) -> bool {
+ self.earlier_later_impl(view, uk, true)
}
/// Redo modifications to the [`Document`] according to `uk`.
- pub fn later(&mut self, view_id: ViewId, uk: UndoKind) -> bool {
- self.earlier_later_impl(view_id, uk, false)
+ pub fn later(&mut self, view: &mut View, uk: UndoKind) -> bool {
+ self.earlier_later_impl(view, uk, false)
}
/// Commit pending changes to history