aboutsummaryrefslogtreecommitdiff
path: root/helix-core/src
diff options
context:
space:
mode:
authorCorey Powell2021-06-02 18:27:35 +0000
committerGitHub2021-06-02 18:27:35 +0000
commit7761c88d6130364915daa23115d2ee1234b2bab5 (patch)
tree23d96dcd421a094d28bb7edf9f6d2c6797fbd25d /helix-core/src
parent68f5031dcc25cef64f9f4539f4ef9f31230182be (diff)
parentf5f46b1fed242f0b5a206753f7f977299fb2ff65 (diff)
Merge pull request #62 from pickfire/cell
Separate document history into Cell
Diffstat (limited to 'helix-core/src')
-rw-r--r--helix-core/src/history.rs10
-rw-r--r--helix-core/src/transaction.rs2
2 files changed, 5 insertions, 7 deletions
diff --git a/helix-core/src/history.rs b/helix-core/src/history.rs
index 5a9ec8de..4348ee32 100644
--- a/helix-core/src/history.rs
+++ b/helix-core/src/history.rs
@@ -65,9 +65,7 @@ impl History {
self.cursor == 0
}
- // TODO: I'd like to pass Transaction by reference but it fights with the borrowck
-
- pub fn undo(&mut self) -> Option<Transaction> {
+ pub fn undo(&mut self) -> Option<&Transaction> {
if self.at_root() {
// We're at the root of undo, nothing to do.
return None;
@@ -77,17 +75,17 @@ impl History {
self.cursor = current_revision.parent;
- Some(current_revision.revert.clone())
+ Some(&current_revision.revert)
}
- pub fn redo(&mut self) -> Option<Transaction> {
+ pub fn redo(&mut self) -> Option<&Transaction> {
let current_revision = &self.revisions[self.cursor];
// for now, simply pick the latest child (linear undo / redo)
if let Some((index, transaction)) = current_revision.children.last() {
self.cursor = *index;
- return Some(transaction.clone());
+ return Some(&transaction);
}
None
}
diff --git a/helix-core/src/transaction.rs b/helix-core/src/transaction.rs
index 77cb358f..e61063f0 100644
--- a/helix-core/src/transaction.rs
+++ b/helix-core/src/transaction.rs
@@ -415,7 +415,7 @@ impl ChangeSet {
/// Transaction represents a single undoable unit of changes. Several changes can be grouped into
/// a single transaction.
-#[derive(Debug, Clone)]
+#[derive(Debug, Default, Clone)]
pub struct Transaction {
changes: ChangeSet,
selection: Option<Selection>,