Don't try to make project search and outline order match project panel (#20513)
A straight alphabetical order is arguably clearer, and avoids a large initial delay when searching large repos. Release Notes: - Fixed a long initial delay when performing a project search in a large repository.
This commit is contained in:
parent
97b542b22a
commit
149e5fde36
3 changed files with 3 additions and 63 deletions
|
@ -2280,7 +2280,6 @@ impl OutlinePanel {
|
|||
// For a proper git status propagation, we have to keep the entries sorted lexicographically.
|
||||
entries.sort_by(|a, b| a.path.as_ref().cmp(b.path.as_ref()));
|
||||
worktree_snapshot.propagate_git_statuses(&mut entries);
|
||||
project::sort_worktree_entries(&mut entries);
|
||||
(worktree_id, entries)
|
||||
})
|
||||
.flat_map(|(worktree_id, entries)| {
|
||||
|
|
|
@ -4654,61 +4654,6 @@ async fn test_search_in_gitignored_dirs(cx: &mut gpui::TestAppContext) {
|
|||
);
|
||||
}
|
||||
|
||||
#[gpui::test]
|
||||
async fn test_search_ordering(cx: &mut gpui::TestAppContext) {
|
||||
init_test(cx);
|
||||
|
||||
let fs = FakeFs::new(cx.background_executor.clone());
|
||||
fs.insert_tree(
|
||||
"/dir",
|
||||
json!({
|
||||
".git": {},
|
||||
".gitignore": "**/target\n/node_modules\n",
|
||||
"aaa.txt": "key:value",
|
||||
"bbb": {
|
||||
"index.txt": "index_key:index_value"
|
||||
},
|
||||
"node_modules": {
|
||||
"10 eleven": "key",
|
||||
"1 two": "key"
|
||||
},
|
||||
}),
|
||||
)
|
||||
.await;
|
||||
let project = Project::test(fs.clone(), ["/dir".as_ref()], cx).await;
|
||||
|
||||
let mut search = project.update(cx, |project, cx| {
|
||||
project.search(
|
||||
SearchQuery::text(
|
||||
"key",
|
||||
false,
|
||||
false,
|
||||
true,
|
||||
Default::default(),
|
||||
Default::default(),
|
||||
None,
|
||||
)
|
||||
.unwrap(),
|
||||
cx,
|
||||
)
|
||||
});
|
||||
|
||||
fn file_name(search_result: Option<SearchResult>, cx: &mut gpui::TestAppContext) -> String {
|
||||
match search_result.unwrap() {
|
||||
SearchResult::Buffer { buffer, .. } => buffer.read_with(cx, |buffer, _| {
|
||||
buffer.file().unwrap().path().to_string_lossy().to_string()
|
||||
}),
|
||||
_ => panic!("Expected buffer"),
|
||||
}
|
||||
}
|
||||
|
||||
assert_eq!(file_name(search.next().await, cx), "bbb/index.txt");
|
||||
assert_eq!(file_name(search.next().await, cx), "node_modules/1 two");
|
||||
assert_eq!(file_name(search.next().await, cx), "node_modules/10 eleven");
|
||||
assert_eq!(file_name(search.next().await, cx), "aaa.txt");
|
||||
assert!(search.next().await.is_none())
|
||||
}
|
||||
|
||||
#[gpui::test]
|
||||
async fn test_create_entry(cx: &mut gpui::TestAppContext) {
|
||||
init_test(cx);
|
||||
|
|
|
@ -23,7 +23,7 @@ use smol::{
|
|||
stream::StreamExt,
|
||||
};
|
||||
use text::ReplicaId;
|
||||
use util::{paths::compare_paths, ResultExt};
|
||||
use util::ResultExt;
|
||||
use worktree::{Entry, ProjectEntryId, Worktree, WorktreeId, WorktreeSettings};
|
||||
|
||||
use crate::{search::SearchQuery, ProjectPath};
|
||||
|
@ -725,9 +725,7 @@ impl WorktreeStore {
|
|||
!metadata.is_dir,
|
||||
))
|
||||
}
|
||||
results.sort_by(|(a_path, a_is_file), (b_path, b_is_file)| {
|
||||
compare_paths((a_path, *a_is_file), (b_path, *b_is_file))
|
||||
});
|
||||
results.sort_by(|(a_path, _), (b_path, _)| a_path.cmp(b_path));
|
||||
for (path, is_file) in results {
|
||||
if is_file {
|
||||
if query.filters_path() {
|
||||
|
@ -782,9 +780,7 @@ impl WorktreeStore {
|
|||
) -> Result<()> {
|
||||
let include_root = snapshots.len() > 1;
|
||||
for (snapshot, settings) in snapshots {
|
||||
let mut entries: Vec<_> = snapshot.entries(query.include_ignored(), 0).collect();
|
||||
entries.sort_by(|a, b| compare_paths((&a.path, a.is_file()), (&b.path, b.is_file())));
|
||||
for entry in entries {
|
||||
for entry in snapshot.entries(query.include_ignored(), 0) {
|
||||
if entry.is_dir() && entry.is_ignored {
|
||||
if !settings.is_path_excluded(&entry.path) {
|
||||
Self::scan_ignored_dir(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue