diff --git a/modules/config/default/+evil-bindings.el b/modules/config/default/+evil-bindings.el index e500ba4a7..65be6cce7 100644 --- a/modules/config/default/+evil-bindings.el +++ b/modules/config/default/+evil-bindings.el @@ -403,7 +403,8 @@ :desc "Save file as..." "S" #'write-file :desc "Sudo find file" "u" #'doom/sudo-find-file :desc "Sudo this file" "U" #'doom/sudo-this-file - :desc "Yank filename" "y" #'+default/yank-buffer-filename) + :desc "Yank file path" "y" #'+default/yank-buffer-path + :desc "Yank file path from project" "Y" #'+default/yank-buffer-path-relative-to-project) ;;; g --- git/version control (:prefix-map ("g" . "git") diff --git a/modules/config/default/autoload/text.el b/modules/config/default/autoload/text.el index 521e4c637..43d14b667 100644 --- a/modules/config/default/autoload/text.el +++ b/modules/config/default/autoload/text.el @@ -32,13 +32,24 @@ ((error "No kill-ring search backend available. Enable ivy or helm!"))))) ;;;###autoload -(defun +default/yank-buffer-filename () +(defun +default/yank-buffer-path (&optional root) "Copy the current buffer's path to the kill ring." (interactive) - (if-let (filename (or buffer-file-name (bound-and-true-p list-buffers-directory))) - (message (kill-new (abbreviate-file-name filename))) + (if-let (filename (or (buffer-file-name (buffer-base-buffer)) + (bound-and-true-p list-buffers-directory))) + (message "Copied path to clipboard: %s" + (kill-new (abbreviate-file-name + (if root + (file-relative-name filename root) + filename)))) (error "Couldn't find filename in current buffer"))) +;;;###autoload +(defun +default/yank-buffer-path-relative-to-project () + "Copy the current buffer's path to the kill ring." + (interactive) + (+default/yank-buffer-path (doom-project-root))) + ;;;###autoload (defun +default/insert-file-path (arg) "Insert the file name (absolute path if prefix ARG).