diff options
author | Michael Davis | 2022-11-23 03:28:49 +0000 |
---|---|---|
committer | GitHub | 2022-11-23 03:28:49 +0000 |
commit | 42e37a571e75aaf4feb1717dfebe8cf215e535dd (patch) | |
tree | 385e494b1d10ce6d40b59162dae0b059d4eeb583 /helix-view | |
parent | 642a961c032b2a7e7fa67bfc3da54588d0ae8c5b (diff) |
Apply transactions to all views (#4733)
* Add a test case for updating jumplists across windows
* Apply transactions to all views on history changes
This ensures that jumplist selections follow changes in documents, even
when there are multiple views (for example a split where both windows
edit the same document).
* Leave TODOs for cleaning up View::apply
* Use Iterator::reduce to compose history transactions
Co-authored-by: Blaž Hrastnik <blaz@mxxn.io>
Co-authored-by: Blaž Hrastnik <blaz@mxxn.io>
Diffstat (limited to 'helix-view')
-rw-r--r-- | helix-view/src/lib.rs | 8 | ||||
-rw-r--r-- | helix-view/src/macros.rs | 2 | ||||
-rw-r--r-- | helix-view/src/view.rs | 1 |
3 files changed, 5 insertions, 6 deletions
diff --git a/helix-view/src/lib.rs b/helix-view/src/lib.rs index 4c32b356..9cf36ae0 100644 --- a/helix-view/src/lib.rs +++ b/helix-view/src/lib.rs @@ -71,12 +71,10 @@ pub fn align_view(doc: &Document, view: &mut View, align: Align) { pub fn apply_transaction( transaction: &helix_core::Transaction, doc: &mut Document, - view: &mut View, + view: &View, ) -> bool { - // This is a short function but it's easy to call `Document::apply` - // without calling `View::apply` or in the wrong order. The transaction - // must be applied to the document before the view. - doc.apply(transaction, view.id) && view.apply(transaction, doc) + // TODO remove this helper function. Just call Document::apply everywhere directly. + doc.apply(transaction, view.id) } pub use document::Document; diff --git a/helix-view/src/macros.rs b/helix-view/src/macros.rs index 53ab4346..ee9cd411 100644 --- a/helix-view/src/macros.rs +++ b/helix-view/src/macros.rs @@ -67,7 +67,7 @@ macro_rules! view { #[macro_export] macro_rules! doc { ($editor:expr, $id:expr) => {{ - $editor.documents[$id] + &$editor.documents[$id] }}; ($editor:expr) => {{ $crate::current_ref!($editor).1 diff --git a/helix-view/src/view.rs b/helix-view/src/view.rs index 8aa4760d..c917a1ab 100644 --- a/helix-view/src/view.rs +++ b/helix-view/src/view.rs @@ -351,6 +351,7 @@ impl View { /// which applies a transaction to the [`Document`] and view together. pub fn apply(&mut self, transaction: &Transaction, doc: &Document) -> bool { self.jumps.apply(transaction, doc); + // TODO: remove the boolean return. This is unused. true } } |