summaryrefslogtreecommitdiff
path: root/helix-view/src
diff options
context:
space:
mode:
authorMichael Davis2022-11-23 03:28:49 +0000
committerGitHub2022-11-23 03:28:49 +0000
commit42e37a571e75aaf4feb1717dfebe8cf215e535dd (patch)
tree385e494b1d10ce6d40b59162dae0b059d4eeb583 /helix-view/src
parent642a961c032b2a7e7fa67bfc3da54588d0ae8c5b (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/src')
-rw-r--r--helix-view/src/lib.rs8
-rw-r--r--helix-view/src/macros.rs2
-rw-r--r--helix-view/src/view.rs1
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
}
}