aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Davis2022-05-11 00:53:54 +0000
committerGitHub2022-05-11 00:53:54 +0000
commit247ab25bc04b75fede667bc2736c8449e8608714 (patch)
treefddee157ac1b02389194a1cad6ecc45a4a11ac50
parente0b5cdfb477108a5cbd40afd9384a96b50d46fbb (diff)
prefer Document::set_selection to inserting selections directly (#2411)
Inserting these with the `HashMap::insert` method evades the call to `Selection::ensure_invariants`. The effect is that the scratch buffer (or other buffers opened through these code-paths) can start with a selection at (0, 0), when a file with equivalent contents ("\n") would start with (0, 1). I.e.: hx and touch f hx f start with different selections even though they have an equivalent Rope. With this change they both start with (0, 1).
-rw-r--r--helix-view/src/editor.rs6
1 files changed, 3 insertions, 3 deletions
diff --git a/helix-view/src/editor.rs b/helix-view/src/editor.rs
index 29aea74b..f4a48ba6 100644
--- a/helix-view/src/editor.rs
+++ b/helix-view/src/editor.rs
@@ -700,7 +700,7 @@ impl Editor {
let view_id = view!(self).id;
let doc = self.documents.get_mut(&id).unwrap();
if doc.selections().is_empty() {
- doc.selections.insert(view_id, Selection::point(0));
+ doc.set_selection(view_id, Selection::point(0));
}
return;
}
@@ -716,7 +716,7 @@ impl Editor {
);
// initialize selection for view
let doc = self.documents.get_mut(&id).unwrap();
- doc.selections.insert(view_id, Selection::point(0));
+ doc.set_selection(view_id, Selection::point(0));
}
}
@@ -851,7 +851,7 @@ impl Editor {
let view = View::new(doc_id, self.config().gutters.clone());
let view_id = self.tree.insert(view);
let doc = self.documents.get_mut(&doc_id).unwrap();
- doc.selections.insert(view_id, Selection::point(0));
+ doc.set_selection(view_id, Selection::point(0));
}
self._refresh();