summaryrefslogtreecommitdiff
path: root/helix-view/src/document.rs
diff options
context:
space:
mode:
Diffstat (limited to 'helix-view/src/document.rs')
-rw-r--r--helix-view/src/document.rs23
1 files changed, 17 insertions, 6 deletions
diff --git a/helix-view/src/document.rs b/helix-view/src/document.rs
index 6a687955..75a0e9fa 100644
--- a/helix-view/src/document.rs
+++ b/helix-view/src/document.rs
@@ -5,8 +5,9 @@ use std::path::{Component, Path, PathBuf};
use std::sync::Arc;
use helix_core::{
+ history::History,
syntax::{LanguageConfiguration, LOADER},
- ChangeSet, Diagnostic, History, Rope, Selection, State, Syntax, Transaction,
+ ChangeSet, Diagnostic, Rope, Selection, State, Syntax, Transaction,
};
use crate::{DocumentId, ViewId};
@@ -387,7 +388,7 @@ impl Document {
success
}
- pub fn undo(&mut self, view_id: ViewId) -> bool {
+ pub fn undo(&mut self, view_id: ViewId) {
let mut history = self.history.take();
let success = if let Some(transaction) = history.undo() {
self._apply(&transaction, view_id)
@@ -400,11 +401,9 @@ impl Document {
// reset changeset to fix len
self.changes = ChangeSet::new(self.text());
}
-
- success
}
- pub fn redo(&mut self, view_id: ViewId) -> bool {
+ pub fn redo(&mut self, view_id: ViewId) {
let mut history = self.history.take();
let success = if let Some(transaction) = history.redo() {
self._apply(&transaction, view_id)
@@ -417,8 +416,20 @@ impl Document {
// reset changeset to fix len
self.changes = ChangeSet::new(self.text());
}
+ }
- false
+ pub fn earlier(&mut self, view_id: ViewId, uk: helix_core::history::UndoKind) {
+ let txns = self.history.get_mut().earlier(uk);
+ for txn in txns {
+ self._apply(&txn, view_id);
+ }
+ }
+
+ pub fn later(&mut self, view_id: ViewId, uk: helix_core::history::UndoKind) {
+ let txns = self.history.get_mut().later(uk);
+ for txn in txns {
+ self._apply(&txn, view_id);
+ }
}
pub fn append_changes_to_history(&mut self, view_id: ViewId) {