From 7fe6943d89c7b15ac6e464b79b0ce91622473031 Mon Sep 17 00:00:00 2001 From: ANKDDEV Date: Tue, 11 Feb 2025 18:42:23 +0300 Subject: [PATCH] Add command to copy current file name (#22174) Closes #21967 Add actions `CopyFileName` and `CopyFileNameWithoutExtension` to be used in the command palette. Release Notes: - Added commands `editor: copy file name` and `editor: copy file name without extensions`. --- crates/editor/src/actions.rs | 2 ++ crates/editor/src/editor.rs | 25 +++++++++++++++++++++++++ crates/editor/src/element.rs | 2 ++ 3 files changed, 29 insertions(+) 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);