diff options
author | Martin Polden <martin.polden@gmail.com> | 2015-04-07 21:27:30 +0200 |
---|---|---|
committer | Martin Polden <martin.polden@gmail.com> | 2015-04-07 21:27:30 +0200 |
commit | c529a35edbcca528eb2edd7321c574004dfac0a3 (patch) | |
tree | e60d647c421415843f11e57adb7882c282a20ae7 /lisp/init-editing.el | |
parent | b22c79fc88e2db47bfb7b4e10048dbbf2e47f72f (diff) |
Improve rename function
Diffstat (limited to 'lisp/init-editing.el')
-rw-r--r-- | lisp/init-editing.el | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/lisp/init-editing.el b/lisp/init-editing.el index e20c33b..567a68f 100644 --- a/lisp/init-editing.el +++ b/lisp/init-editing.el @@ -87,22 +87,26 @@ NOSELECT is non-nil." ;; join line (global-set-key (kbd "M-j") (lambda () (interactive) (join-line -1))) -(defun rename-file-and-buffer (new-name) - "Renames both current buffer and file it's visiting to NEW-NAME." - (interactive "sNew name: ") +;; source: http://rejeep.github.io/emacs/elisp/2010/03/26/rename-file-and-buffer-in-emacs.html +(defun rename-this-buffer-and-file () + "Renames current buffer and file it is visiting." + (interactive) (let ((name (buffer-name)) (filename (buffer-file-name))) - (if (not filename) - (message "Buffer '%s' is not visiting a file!" name) - (if (get-buffer new-name) - (message "A buffer named '%s' already exists!" new-name) - (progn - (rename-file name new-name 1) - (rename-buffer new-name) - (set-visited-file-name new-name) - (set-buffer-modified-p nil)))))) - -(global-set-key (kbd "C-c n") 'rename-file-and-buffer) + (if (not (and filename (file-exists-p filename))) + (error "Buffer '%s' is not visiting a file!" name) + (let ((new-name (read-file-name "New name: " filename))) + (cond ((get-buffer new-name) + (error "A buffer named '%s' already exists!" new-name)) + (t + (rename-file filename new-name 1) + (rename-buffer new-name) + (set-visited-file-name new-name) + (set-buffer-modified-p nil) + (message "File '%s' successfully renamed to '%s'" name + (file-name-nondirectory new-name)))))))) + +(global-set-key (kbd "C-c n") 'rename-this-buffer-and-file) ;; enable subword-mode in prog-mode (add-hook 'prog-mode-hook 'subword-mode) |