mirror of
https://github.com/zed-industries/zed.git
synced 2025-01-11 21:13:02 +00:00
Fix bug in selection position maintenance while renaming symbol
We were resolving the selection with the wrong buffer, which now causes a panic because we don't check the anchor's `buffer_id` anymore.
This commit is contained in:
parent
71aa5e5360
commit
cd4a9f3178
1 changed files with 13 additions and 6 deletions
|
@ -4517,25 +4517,32 @@ impl Editor {
|
|||
self.remove_blocks([rename.block_id].into_iter().collect(), cx);
|
||||
self.clear_highlighted_ranges::<Rename>(cx);
|
||||
|
||||
let editor = rename.editor.read(cx);
|
||||
let snapshot = self.buffer.read(cx).snapshot(cx);
|
||||
let selection = editor.newest_selection_with_snapshot::<usize>(&snapshot);
|
||||
let selection_in_rename_editor = rename.editor.read(cx).newest_selection::<usize>(cx);
|
||||
|
||||
// Update the selection to match the position of the selection inside
|
||||
// the rename editor.
|
||||
let snapshot = self.buffer.read(cx).read(cx);
|
||||
let rename_range = rename.range.to_offset(&snapshot);
|
||||
let start = snapshot
|
||||
.clip_offset(rename_range.start + selection.start, Bias::Left)
|
||||
.clip_offset(
|
||||
rename_range.start + selection_in_rename_editor.start,
|
||||
Bias::Left,
|
||||
)
|
||||
.min(rename_range.end);
|
||||
let end = snapshot
|
||||
.clip_offset(rename_range.start + selection.end, Bias::Left)
|
||||
.clip_offset(
|
||||
rename_range.start + selection_in_rename_editor.end,
|
||||
Bias::Left,
|
||||
)
|
||||
.min(rename_range.end);
|
||||
drop(snapshot);
|
||||
|
||||
self.update_selections(
|
||||
vec![Selection {
|
||||
id: self.newest_anchor_selection().id,
|
||||
start,
|
||||
end,
|
||||
reversed: selection.reversed,
|
||||
reversed: selection_in_rename_editor.reversed,
|
||||
goal: SelectionGoal::None,
|
||||
}],
|
||||
None,
|
||||
|
|
Loading…
Reference in a new issue