editor: Fix panic when editor::SelectLargerSyntaxNode
overflows excerpt in multi buffer (#25585)
Closes #25513 This PR handles case when `editor::SelectLargerSyntaxNode` expands across excerpt boundaries and eventually crashes in multi buffer. Release Notes: - Fixed panic caused when `editor::SelectLargerSyntaxNode` is called repetedly in multi buffer. Co-authored-by: Ben Kunkle <ben.kunkle@gmail.com>
This commit is contained in:
parent
014d9dfce1
commit
0559e1f348
3 changed files with 35 additions and 10 deletions
|
@ -132,7 +132,7 @@ pub use multi_buffer::{
|
|||
};
|
||||
use multi_buffer::{
|
||||
ExcerptInfo, ExpandExcerptDirection, MultiBufferDiffHunk, MultiBufferPoint, MultiBufferRow,
|
||||
ToOffsetUtf16,
|
||||
MultiOrSingleBufferOffsetRange, ToOffsetUtf16,
|
||||
};
|
||||
use project::{
|
||||
lsp_store::{CompletionDocumentation, FormatTrigger, LspFormatTarget, OpenLspBufferHandle},
|
||||
|
@ -10738,7 +10738,10 @@ impl Editor {
|
|||
while let Some((node, containing_range)) = buffer.syntax_ancestor(new_range.clone())
|
||||
{
|
||||
new_node = Some(node);
|
||||
new_range = containing_range;
|
||||
new_range = match containing_range {
|
||||
MultiOrSingleBufferOffsetRange::Single(_) => break,
|
||||
MultiOrSingleBufferOffsetRange::Multi(range) => range,
|
||||
};
|
||||
if !display_map.intersects_fold(new_range.start)
|
||||
&& !display_map.intersects_fold(new_range.end)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue