Add open file in project finder via space (#2785)

@mikayla-maki for 👀 

[This PR added in the ability to rename a file via
`enter`](https://github.com/zed-industries/zed/pull/2784). Previously,
`enter` was used to both open a file and confirm a rename, so this PR
changes the opening of a file to use `space`, which is what VS Code
uses. It also makes a bit more sense because now `enter` is just used to
start a rename and confirm the rename, vs being used for 2 different
actions.

N/A on the release notes, as I adjusted the release note in the
previously-tagged PR.

Release Notes:

- N/A
This commit is contained in:
Joseph T. Lyons 2023-07-24 16:35:01 -04:00 committed by GitHub
parent a01d973477
commit bdd0b9f387
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 7 deletions

View File

@ -529,6 +529,7 @@
"alt-cmd-shift-c": "project_panel::CopyRelativePath", "alt-cmd-shift-c": "project_panel::CopyRelativePath",
"f2": "project_panel::Rename", "f2": "project_panel::Rename",
"enter": "project_panel::Rename", "enter": "project_panel::Rename",
"space": "project_panel::Open",
"backspace": "project_panel::Delete", "backspace": "project_panel::Delete",
"alt-cmd-r": "project_panel::RevealInFinder", "alt-cmd-r": "project_panel::RevealInFinder",
"alt-shift-f": "project_panel::NewSearchInDirectory" "alt-shift-f": "project_panel::NewSearchInDirectory"

View File

@ -125,6 +125,7 @@ actions!(
Paste, Paste,
Delete, Delete,
Rename, Rename,
Open,
ToggleFocus, ToggleFocus,
NewSearchInDirectory, NewSearchInDirectory,
] ]
@ -146,6 +147,7 @@ pub fn init(assets: impl AssetSource, cx: &mut AppContext) {
cx.add_action(ProjectPanel::rename); cx.add_action(ProjectPanel::rename);
cx.add_async_action(ProjectPanel::delete); cx.add_async_action(ProjectPanel::delete);
cx.add_async_action(ProjectPanel::confirm); cx.add_async_action(ProjectPanel::confirm);
cx.add_async_action(ProjectPanel::open_file);
cx.add_action(ProjectPanel::cancel); cx.add_action(ProjectPanel::cancel);
cx.add_action(ProjectPanel::cut); cx.add_action(ProjectPanel::cut);
cx.add_action(ProjectPanel::copy); cx.add_action(ProjectPanel::copy);
@ -560,15 +562,20 @@ impl ProjectPanel {
fn confirm(&mut self, _: &Confirm, cx: &mut ViewContext<Self>) -> Option<Task<Result<()>>> { fn confirm(&mut self, _: &Confirm, cx: &mut ViewContext<Self>) -> Option<Task<Result<()>>> {
if let Some(task) = self.confirm_edit(cx) { if let Some(task) = self.confirm_edit(cx) {
Some(task) return Some(task);
} else if let Some((_, entry)) = self.selected_entry(cx) { }
None
}
fn open_file(&mut self, _: &Open, cx: &mut ViewContext<Self>) -> Option<Task<Result<()>>> {
if let Some((_, entry)) = self.selected_entry(cx) {
if entry.is_file() { if entry.is_file() {
self.open_entry(entry.id, true, cx); self.open_entry(entry.id, true, cx);
} }
None
} else {
None
} }
None
} }
fn confirm_edit(&mut self, cx: &mut ViewContext<Self>) -> Option<Task<Result<()>>> { fn confirm_edit(&mut self, cx: &mut ViewContext<Self>) -> Option<Task<Result<()>>> {
@ -2382,7 +2389,7 @@ mod tests {
toggle_expand_dir(&panel, "src/test", cx); toggle_expand_dir(&panel, "src/test", cx);
select_path(&panel, "src/test/first.rs", cx); select_path(&panel, "src/test/first.rs", cx);
panel.update(cx, |panel, cx| panel.confirm(&Confirm, cx)); panel.update(cx, |panel, cx| panel.open_file(&Open, cx));
cx.foreground().run_until_parked(); cx.foreground().run_until_parked();
assert_eq!( assert_eq!(
visible_entries_as_strings(&panel, 0..10, cx), visible_entries_as_strings(&panel, 0..10, cx),
@ -2410,7 +2417,7 @@ mod tests {
ensure_no_open_items_and_panes(window_id, &workspace, cx); ensure_no_open_items_and_panes(window_id, &workspace, cx);
select_path(&panel, "src/test/second.rs", cx); select_path(&panel, "src/test/second.rs", cx);
panel.update(cx, |panel, cx| panel.confirm(&Confirm, cx)); panel.update(cx, |panel, cx| panel.open_file(&Open, cx));
cx.foreground().run_until_parked(); cx.foreground().run_until_parked();
assert_eq!( assert_eq!(
visible_entries_as_strings(&panel, 0..10, cx), visible_entries_as_strings(&panel, 0..10, cx),