mirror of
https://github.com/zed-industries/zed.git
synced 2025-01-29 21:49:33 +00:00
Add ability to bind to pane::RevealInProjectPanel (#7487)
Previously it wasn't possible to create a keybinding for this action because it required an argument. Now the action takes the active item of the pane and if it's a multi-buffer the first one. This also adds a default keybinding for Vim mode: `-` will reveal the file in the project panel. Fixes #7485. Release Notes: - Added `pane::RevealInProjectPanel` as an action in the command palette. ([#7485](https://github.com/zed-industries/zed/issues/7485)). Co-authored-by: Antonio <antonio@zed.dev>
This commit is contained in:
parent
2aa8ccd6b1
commit
db39b9dadc
3 changed files with 17 additions and 10 deletions
|
@ -284,7 +284,8 @@
|
|||
"ctrl-w o": "workspace::CloseInactiveTabsAndPanes",
|
||||
"ctrl-w ctrl-o": "workspace::CloseInactiveTabsAndPanes",
|
||||
"ctrl-w n": ["workspace::NewFileInDirection", "Up"],
|
||||
"ctrl-w ctrl-n": ["workspace::NewFileInDirection", "Up"]
|
||||
"ctrl-w ctrl-n": ["workspace::NewFileInDirection", "Up"],
|
||||
"-": "pane::RevealInProjectPanel"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
|
@ -112,7 +112,7 @@ impl_actions!(
|
|||
MoveUpByLines,
|
||||
MoveDownByLines,
|
||||
SelectUpByLines,
|
||||
SelectDownByLines,
|
||||
SelectDownByLines
|
||||
]
|
||||
);
|
||||
|
||||
|
|
|
@ -72,10 +72,10 @@ pub struct CloseAllItems {
|
|||
pub save_intent: Option<SaveIntent>,
|
||||
}
|
||||
|
||||
#[derive(Clone, PartialEq, Debug, Deserialize)]
|
||||
#[derive(Clone, PartialEq, Debug, Deserialize, Default)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct RevealInProjectPanel {
|
||||
pub entry_id: u64,
|
||||
pub entry_id: Option<u64>,
|
||||
}
|
||||
|
||||
impl_actions!(
|
||||
|
@ -1442,7 +1442,9 @@ impl Pane {
|
|||
let entry_id = entry.to_proto();
|
||||
menu = menu.separator().entry(
|
||||
"Reveal In Project Panel",
|
||||
Some(Box::new(RevealInProjectPanel { entry_id })),
|
||||
Some(Box::new(RevealInProjectPanel {
|
||||
entry_id: Some(entry_id),
|
||||
})),
|
||||
cx.handler_for(&pane, move |pane, cx| {
|
||||
pane.project.update(cx, |_, cx| {
|
||||
cx.emit(project::Event::RevealInProjectPanel(
|
||||
|
@ -1807,11 +1809,15 @@ impl Render for Pane {
|
|||
)
|
||||
.on_action(
|
||||
cx.listener(|pane: &mut Self, action: &RevealInProjectPanel, cx| {
|
||||
pane.project.update(cx, |_, cx| {
|
||||
cx.emit(project::Event::RevealInProjectPanel(
|
||||
ProjectEntryId::from_proto(action.entry_id),
|
||||
))
|
||||
})
|
||||
let entry_id = action
|
||||
.entry_id
|
||||
.map(ProjectEntryId::from_proto)
|
||||
.or_else(|| pane.active_item()?.project_entry_ids(cx).first().copied());
|
||||
if let Some(entry_id) = entry_id {
|
||||
pane.project.update(cx, |_, cx| {
|
||||
cx.emit(project::Event::RevealInProjectPanel(entry_id))
|
||||
});
|
||||
}
|
||||
}),
|
||||
)
|
||||
.when(self.active_item().is_some(), |pane| {
|
||||
|
|
Loading…
Reference in a new issue