diff options
author | Ivan Tham | 2021-11-11 13:32:44 +0000 |
---|---|---|
committer | GitHub | 2021-11-11 13:32:44 +0000 |
commit | 9d591427be900b7a43fc7e13dd86f31199e8c00e (patch) | |
tree | 2348bfed1cf794d35bed04fa3156557d5838f021 /helix-view | |
parent | d131a9dd0efc5ff271f8b78cd65a8dc30c193af4 (diff) |
Fix earlier/later missing changeset update (#1069)
Fix #1059
Diffstat (limited to 'helix-view')
-rw-r--r-- | helix-view/src/document.rs | 24 |
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 |