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:
parent
80458ffb96
commit
9ef0501853
49 changed files with 207 additions and 157 deletions
|
@ -384,6 +384,7 @@ async fn test_matching_cancellation(cx: &mut TestAppContext) {
|
|||
ProjectPanelOrdMatch(matches[1].clone()),
|
||||
ProjectPanelOrdMatch(matches[3].clone()),
|
||||
],
|
||||
window,
|
||||
cx,
|
||||
);
|
||||
|
||||
|
@ -398,6 +399,7 @@ async fn test_matching_cancellation(cx: &mut TestAppContext) {
|
|||
ProjectPanelOrdMatch(matches[2].clone()),
|
||||
ProjectPanelOrdMatch(matches[3].clone()),
|
||||
],
|
||||
window,
|
||||
cx,
|
||||
);
|
||||
|
||||
|
@ -492,12 +494,11 @@ async fn test_single_file_worktrees(cx: &mut TestAppContext) {
|
|||
let matches = collect_search_matches(picker).search_matches_only();
|
||||
assert_eq!(matches.len(), 1);
|
||||
|
||||
let (file_name, file_name_positions, full_path, full_path_positions) =
|
||||
delegate.labels_for_path_match(&matches[0]);
|
||||
assert_eq!(file_name, "the-file");
|
||||
assert_eq!(file_name_positions, &[0, 1, 4]);
|
||||
assert_eq!(full_path, "");
|
||||
assert_eq!(full_path_positions, &[0; 0]);
|
||||
let labels = delegate.labels_for_path_match(&matches[0]);
|
||||
assert_eq!(labels.file_name, "the-file");
|
||||
assert_eq!(labels.file_name_positions, &[0, 1, 4]);
|
||||
assert_eq!(labels.path, "");
|
||||
assert_eq!(labels.path_positions, &[0; 0]);
|
||||
});
|
||||
|
||||
// Since the worktree root is a file, searching for its name followed by a slash does
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue