Skip to content

Commit

Permalink
prefer Document::set_selection to inserting selections directly (#2411)
Browse files Browse the repository at this point in the history
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).
  • Loading branch information
the-mikedavis authored May 11, 2022
1 parent e0b5cdf commit 247ab25
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions helix-view/src/editor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand All @@ -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));
}
}

Expand Down Expand Up @@ -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();
Expand Down

0 comments on commit 247ab25

Please sign in to comment.