diff options
author | Michael Davis | 2022-10-10 20:15:37 +0000 |
---|---|---|
committer | Blaž Hrastnik | 2022-10-11 03:17:32 +0000 |
commit | c388e16e09b36c665c4f92db4f7a071e7c1d9761 (patch) | |
tree | 40bf9fe3dbacaac21a131bb67c896d9395930d64 /helix-view/src/document.rs | |
parent | 0aedef03334dfc0cb2a723cce23abc5b4ca55a22 (diff) |
Add a helper function for applying transactions
It is easy to forget to call `Document::apply` and/or `View::apply` in
the correct order. This commit introduces a helper function which
closes over both calls.
Diffstat (limited to 'helix-view/src/document.rs')
-rw-r--r-- | helix-view/src/document.rs | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/helix-view/src/document.rs b/helix-view/src/document.rs index 631c540b..93708339 100644 --- a/helix-view/src/document.rs +++ b/helix-view/src/document.rs @@ -24,7 +24,7 @@ use helix_core::{ DEFAULT_LINE_ENDING, }; -use crate::{DocumentId, Editor, View, ViewId}; +use crate::{apply_transaction, DocumentId, Editor, View, ViewId}; /// 8kB of buffer space for encoding and decoding `Rope`s. const BUF_SIZE: usize = 8192; @@ -617,8 +617,7 @@ impl Document { // This is not considered a modification of the contents of the file regardless // of the encoding. let transaction = helix_core::diff::compare_ropes(self.text(), &rope); - self.apply(&transaction, view.id); - view.apply(&transaction, self); + apply_transaction(&transaction, self, view); self.append_changes_to_history(view.id); self.reset_modified(); @@ -811,6 +810,9 @@ impl Document { } /// Apply a [`Transaction`] to the [`Document`] to change its text. + /// Instead of calling this function directly, use [crate::apply_transaction] + /// to ensure that the transaction is applied to the appropriate [`View`] as + /// well. pub fn apply(&mut self, transaction: &Transaction, view_id: ViewId) -> bool { // store the state just before any changes are made. This allows us to undo to the // state just before a transaction was applied. @@ -865,8 +867,7 @@ impl Document { pub fn restore(&mut self, view: &mut View) { if let Some(revert) = self.savepoint.take() { - self.apply(&revert, view.id); - view.apply(&revert, self); + apply_transaction(&revert, self, view); } } |