mirror of
https://github.com/l0ng-ai/openidea.git
synced 2026-11-11 02:31:38 -10:00
Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
29f473f004 |
No files matched your search
@@ -218,9 +218,11 @@ impl ProjectIndex {
|
||||
self.shared.enqueue(Job::SaveRecent);
|
||||
}
|
||||
|
||||
/// Recently opened files, most recent first.
|
||||
/// Recently opened files, most recent first; files deleted since (also while
|
||||
/// the IDE was closed) are left out. Virtual documents are always listed.
|
||||
pub fn recent_files(&self) -> Vec<PathBuf> {
|
||||
self.shared.recent.lock().clone()
|
||||
let recent = self.shared.recent.lock().clone();
|
||||
recent.into_iter().filter(|p| p.to_str().is_some_and(ide_core::text::is_virtual_uri) || p.exists()).collect()
|
||||
}
|
||||
|
||||
/// Blocks until the initial scan and every queued update has been applied
|
||||
|
||||
@@ -178,6 +178,19 @@ fn symbol_ranking_is_idea_like() {
|
||||
assert!(idx.find_symbols("", SymbolFilter::All, 5).is_empty());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn recent_files_skip_deleted_files_but_keep_virtual_documents() {
|
||||
let fx = sample();
|
||||
let idx = fx.open();
|
||||
let app = fx.root.join("web/app.py");
|
||||
let virt = PathBuf::from("jdt://contents/rt.jar/java.lang/String.class");
|
||||
idx.mark_recent(&app);
|
||||
idx.mark_recent(&virt);
|
||||
assert_eq!(idx.recent_files(), vec![virt.clone(), app.clone()]);
|
||||
std::fs::remove_file(&app).unwrap();
|
||||
assert_eq!(idx.recent_files(), vec![virt]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn persistence_skips_unchanged_files_on_reopen() {
|
||||
let fx = sample();
|
||||
|
||||
@@ -84,6 +84,7 @@ describe("project view context menu", () => {
|
||||
"Copy Path/Reference…",
|
||||
"Paste",
|
||||
"-",
|
||||
"Jump to Source",
|
||||
"Find Usages",
|
||||
"Find in Files…",
|
||||
"Replace in Files…",
|
||||
|
||||
@@ -20,6 +20,7 @@ import {
|
||||
findFileUsages,
|
||||
folderOf,
|
||||
openCopyDialog,
|
||||
openFile,
|
||||
openMoveDialog,
|
||||
openRenameDialog,
|
||||
paste,
|
||||
@@ -196,8 +197,15 @@ export function contextMenuItems(nodes: ProjectNode[]): MenuItem[] {
|
||||
{ kind: "separator" },
|
||||
);
|
||||
|
||||
// Find Usages / Find in Files… / Replace in Files…
|
||||
// Jump to Source / Find Usages / Find in Files… / Replace in Files…
|
||||
push(
|
||||
files.length > 0 && {
|
||||
id: "jumpToSource",
|
||||
label: "Jump to Source",
|
||||
icon: "edit",
|
||||
shortcut: keyLabel("project.open"),
|
||||
run: () => files.forEach((f) => void openFile(f.path)),
|
||||
},
|
||||
inProject &&
|
||||
singleFile && {
|
||||
id: "findUsages",
|
||||
|
||||
Reference in new issue
Block a user