summaryrefslogtreecommitdiff
path: root/helix-view/src
diff options
context:
space:
mode:
authorMichael Davis2022-11-27 18:47:26 +0000
committerBlaž Hrastnik2022-11-29 16:15:20 +0000
commit9a9e462183cb60bff6450f17173e6b18eadbbfb2 (patch)
tree888a8211b6c13ba38e32d00a334eedb7d2a826f1 /helix-view/src
parent2709ce33324cf6d4612c61609f336cf5937b6cac (diff)
Call View::apply within Document::append_changes_to_history
Diffstat (limited to 'helix-view/src')
-rw-r--r--helix-view/src/document.rs9
1 files changed, 6 insertions, 3 deletions
diff --git a/helix-view/src/document.rs b/helix-view/src/document.rs
index 17503553..ad47f838 100644
--- a/helix-view/src/document.rs
+++ b/helix-view/src/document.rs
@@ -641,7 +641,7 @@ impl Document {
// of the encoding.
let transaction = helix_core::diff::compare_ropes(self.text(), &rope);
apply_transaction(&transaction, self, view);
- self.append_changes_to_history(view.id);
+ self.append_changes_to_history(view);
self.reset_modified();
self.detect_indent_and_line_ending();
@@ -928,7 +928,7 @@ impl Document {
}
/// Commit pending changes to history
- pub fn append_changes_to_history(&mut self, view_id: ViewId) {
+ pub fn append_changes_to_history(&mut self, view: &mut View) {
if self.changes.is_empty() {
return;
}
@@ -938,7 +938,7 @@ impl Document {
// Instead of doing this messy merge we could always commit, and based on transaction
// annotations either add a new layer or compose into the previous one.
let transaction =
- Transaction::from(changes).with_selection(self.selection(view_id).clone());
+ Transaction::from(changes).with_selection(self.selection(view.id).clone());
// HAXX: we need to reconstruct the state as it was before the changes..
let old_state = self.old_state.take().expect("no old_state available");
@@ -946,6 +946,9 @@ impl Document {
let mut history = self.history.take();
history.commit_revision(&transaction, &old_state);
self.history.set(history);
+
+ // Update jumplist entries in the view.
+ view.apply(&transaction, self);
}
pub fn id(&self) -> DocumentId {