aboutsummaryrefslogtreecommitdiff
path: root/helix-view/src/document.rs
diff options
context:
space:
mode:
authorPascal Kuthe2023-03-02 18:10:47 +0000
committerBlaž Hrastnik2023-03-09 04:01:02 +0000
commit2588fa3710921683c16a84ffd91103a0823a033b (patch)
tree6ff584e2e3a440a5ec18ab8be491f95b7a85a158 /helix-view/src/document.rs
parent4300a3ad058ea383a59a0a90f31a597eb264a7d4 (diff)
save selection before completion savepoint
Currently, the selection is not saved/restored when completion checkpoints are applied. This is usually fine because undoing changes usually restores maps selections back in insert mode. But this is not always the case and especially problematic in the presence of multi-cursor completions (since completions are applied relative to the selection/cursor) and snippets (which can change the selection)
Diffstat (limited to 'helix-view/src/document.rs')
-rw-r--r--helix-view/src/document.rs3
1 files changed, 2 insertions, 1 deletions
diff --git a/helix-view/src/document.rs b/helix-view/src/document.rs
index 4d3586f1..13ffe794 100644
--- a/helix-view/src/document.rs
+++ b/helix-view/src/document.rs
@@ -941,7 +941,8 @@ impl Document {
}
pub fn savepoint(&mut self) {
- self.savepoint = Some(Transaction::new(self.text()));
+ self.savepoint =
+ Some(Transaction::new(self.text()).with_selection(self.selection(view.id).clone()));
}
pub fn restore(&mut self, view: &mut View) {