Add `reveal in finder` to additional locations

Joseph Lyons and Julia created

Co-Authored-By: Julia <30666851+ForLoveOfCats@users.noreply.github.com>

Change summary

crates/editor/src/editor.rs             | 12 +++++++++++-
crates/editor/src/mouse_context_menu.rs |  4 +++-
2 files changed, 14 insertions(+), 2 deletions(-)

Detailed changes

crates/editor/src/editor.rs 🔗

@@ -241,7 +241,8 @@ actions!(
         RestartLanguageServer,
         Hover,
         Format,
-        ToggleSoftWrap
+        ToggleSoftWrap,
+        RevealInFinder
     ]
 );
 
@@ -354,6 +355,7 @@ pub fn init(cx: &mut MutableAppContext) {
     cx.add_action(Editor::open_excerpts);
     cx.add_action(Editor::jump);
     cx.add_action(Editor::toggle_soft_wrap);
+    cx.add_action(Editor::reveal_in_finder);
     cx.add_async_action(Editor::format);
     cx.add_action(Editor::restart_language_server);
     cx.add_action(Editor::show_character_palette);
@@ -5889,6 +5891,14 @@ impl Editor {
         cx.notify();
     }
 
+    pub fn reveal_in_finder(&mut self, _: &RevealInFinder, cx: &mut ViewContext<Self>) {
+        if let Some(buffer) = self.buffer().read(cx).as_singleton() {
+            if let Some(file) = buffer.read(cx).file().and_then(|f| f.as_local()) {
+                cx.reveal_path(&file.abs_path(cx));
+            }
+        }
+    }
+
     pub fn highlight_rows(&mut self, rows: Option<Range<u32>>) {
         self.highlighted_rows = rows;
     }

crates/editor/src/mouse_context_menu.rs 🔗

@@ -6,7 +6,7 @@ use gpui::{
 
 use crate::{
     DisplayPoint, Editor, EditorMode, FindAllReferences, GoToDefinition, GoToTypeDefinition,
-    Rename, SelectMode, ToggleCodeActions,
+    Rename, RevealInFinder, SelectMode, ToggleCodeActions,
 };
 
 #[derive(Clone, PartialEq)]
@@ -61,6 +61,8 @@ pub fn deploy_context_menu(
                         deployed_from_indicator: false,
                     },
                 ),
+                ContextMenuItem::Separator,
+                ContextMenuItem::item("Reveal in Finder", RevealInFinder),
             ],
             cx,
         );