file_finder: Remove common segments of long paths in search results (#25049)

This PR makes progress on #7711 by identifying any common prefix of the
paths in the file finder's search results, and replacing the "interior"
of that prefix---every path segment but the first and last---with `...`,
when a heuristic indicates that the longest path would otherwise
overflow the modal.

The elision is not applied to any segment that contains a match for the
search query.

There may be more work to do on #7711 in the case of long result paths
that do not share a significant common prefix.

Release Notes:

- Improved display of long paths in the file finder modal

Co-authored-by: Max <max@zed.dev>
This commit is contained in:
Cole Miller 2025-02-18 10:09:15 -05:00 committed by GitHub
parent 80458ffb96
commit 9ef0501853
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
49 changed files with 207 additions and 157 deletions

View file

@ -2361,7 +2361,6 @@ impl OutlinePanel {
)
}
#[allow(clippy::too_many_arguments)]
fn render_search_match(
&mut self,
multi_buffer_snapshot: Option<&MultiBufferSnapshot>,
@ -2453,7 +2452,6 @@ impl OutlinePanel {
))
}
#[allow(clippy::too_many_arguments)]
fn entry_element(
&self,
rendered_entry: PanelEntry,
@ -3839,7 +3837,6 @@ impl OutlinePanel {
})
}
#[allow(clippy::too_many_arguments)]
fn push_entry(
&self,
state: &mut GenerationState,
@ -4057,7 +4054,6 @@ impl OutlinePanel {
update_cached_entries
}
#[allow(clippy::too_many_arguments)]
fn add_excerpt_entries(
&self,
state: &mut GenerationState,
@ -4116,7 +4112,6 @@ impl OutlinePanel {
}
}
#[allow(clippy::too_many_arguments)]
fn add_search_entries(
&mut self,
state: &mut GenerationState,