aboutsummaryrefslogtreecommitdiff
path: root/helix-view
diff options
context:
space:
mode:
authorIvan Tham2021-11-11 13:32:44 +0000
committerGitHub2021-11-11 13:32:44 +0000
commit9d591427be900b7a43fc7e13dd86f31199e8c00e (patch)
tree2348bfed1cf794d35bed04fa3156557d5838f021 /helix-view
parentd131a9dd0efc5ff271f8b78cd65a8dc30c193af4 (diff)
Fix earlier/later missing changeset update (#1069)
Fix #1059
Diffstat (limited to 'helix-view')
-rw-r--r--helix-view/src/document.rs24
1 files changed, 20 insertions, 4 deletions
diff --git a/helix-view/src/document.rs b/helix-view/src/document.rs
index 351ad05a..80f6a740 100644
--- a/helix-view/src/document.rs
+++ b/helix-view/src/document.rs
@@ -751,19 +751,35 @@ impl Document {
}
/// Undo modifications to the [`Document`] according to `uk`.
- pub fn earlier(&mut self, view_id: ViewId, uk: helix_core::history::UndoKind) {
+ pub fn earlier(&mut self, view_id: ViewId, uk: helix_core::history::UndoKind) -> bool {
let txns = self.history.get_mut().earlier(uk);
+ let mut success = false;
for txn in txns {
- self.apply_impl(&txn, view_id);
+ if self.apply_impl(&txn, view_id) {
+ success = true;
+ }
+ }
+ if success {
+ // reset changeset to fix len
+ self.changes = ChangeSet::new(self.text());
}
+ success
}
/// Redo modifications to the [`Document`] according to `uk`.
- pub fn later(&mut self, view_id: ViewId, uk: helix_core::history::UndoKind) {
+ pub fn later(&mut self, view_id: ViewId, uk: helix_core::history::UndoKind) -> bool {
let txns = self.history.get_mut().later(uk);
+ let mut success = false;
for txn in txns {
- self.apply_impl(&txn, view_id);
+ if self.apply_impl(&txn, view_id) {
+ success = true;
+ }
+ }
+ if success {
+ // reset changeset to fix len
+ self.changes = ChangeSet::new(self.text());
}
+ success
}
/// Commit pending changes to history