diff options
author | rekado <rekado@elephly.net> | 2015-09-16 22:12:14 +0200 |
---|---|---|
committer | rekado <rekado@elephly.net> | 2015-09-16 22:12:14 +0200 |
commit | 0c927816b3fc7264b29a7dfd40cfaa80f4528aa3 (patch) | |
tree | cd65403eeb2e8fdcebbd93bf2688b61435c4aa80 | |
parent | 3b0d067a02d14f258968700930578740fcd107b2 (diff) |
Add my/copy-buffer-file-name.
-rw-r--r-- | lisp/init-my-stuff.el | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/lisp/init-my-stuff.el b/lisp/init-my-stuff.el index 3e670b9..b7bf92a 100644 --- a/lisp/init-my-stuff.el +++ b/lisp/init-my-stuff.el @@ -112,3 +112,24 @@ When repeated, a negative prefix arg switches direction." (unless (natnump n) (setq this-command 'comment-line-backward))) (global-set-key (kbd "C-;") 'my/endless/comment-line) + + +;; http://stackoverflow.com/a/18814469/519736 +(defun my/copy-buffer-file-name (choice) + "Copy the buffer-file-name to the kill-ring" + (interactive "cCopy Buffer Name (F) Full, (D) Directory, (N) Name") + (let ((new-kill-string) + (name (if (eq major-mode 'dired-mode) + (dired-get-filename) + (or (buffer-file-name) "")))) + (cond ((eq choice ?f) + (setq new-kill-string name)) + ((eq choice ?d) + (setq new-kill-string (file-name-directory name))) + ((eq choice ?n) + (setq new-kill-string (file-name-nondirectory name))) + (t (message "Quit"))) + (when new-kill-string + (message "%s copied" new-kill-string) + (kill-new new-kill-string)))) + |