diff --git a/crates/editor/src/actions.rs b/crates/editor/src/actions.rs index 27266f3dd6..61481e3f92 100644 --- a/crates/editor/src/actions.rs +++ b/crates/editor/src/actions.rs @@ -265,6 +265,8 @@ gpui::actions!( Copy, CopyFileLocation, CopyHighlightJson, + CopyFileName, + CopyFileNameWithoutExtension, CopyPath, CopyPermalinkToLine, CopyRelativePath, diff --git a/crates/editor/src/editor.rs b/crates/editor/src/editor.rs index 957648f4b8..a95d276113 100644 --- a/crates/editor/src/editor.rs +++ b/crates/editor/src/editor.rs @@ -13116,6 +13116,31 @@ impl Editor { } } + pub fn copy_file_name_without_extension( + &mut self, + _: &CopyFileNameWithoutExtension, + _: &mut Window, + cx: &mut Context, + ) { + if let Some(file) = self.target_file(cx) { + if let Some(file_stem) = file.path().file_stem() { + if let Some(name) = file_stem.to_str() { + cx.write_to_clipboard(ClipboardItem::new_string(name.to_string())); + } + } + } + } + + pub fn copy_file_name(&mut self, _: &CopyFileName, _: &mut Window, cx: &mut Context) { + if let Some(file) = self.target_file(cx) { + if let Some(file_name) = file.path().file_name() { + if let Some(name) = file_name.to_str() { + cx.write_to_clipboard(ClipboardItem::new_string(name.to_string())); + } + } + } + } + pub fn toggle_git_blame( &mut self, _: &ToggleGitBlame, diff --git a/crates/editor/src/element.rs b/crates/editor/src/element.rs index 377a620594..6d7a6d274e 100644 --- a/crates/editor/src/element.rs +++ b/crates/editor/src/element.rs @@ -408,6 +408,8 @@ impl EditorElement { register_action(editor, window, Editor::reveal_in_finder); register_action(editor, window, Editor::copy_path); register_action(editor, window, Editor::copy_relative_path); + register_action(editor, window, Editor::copy_file_name); + register_action(editor, window, Editor::copy_file_name_without_extension); register_action(editor, window, Editor::copy_highlight_json); register_action(editor, window, Editor::copy_permalink_to_line); register_action(editor, window, Editor::open_permalink_to_line);