diff options
author | Martin Polden <martin.polden@gmail.com> | 2016-02-27 16:39:44 +0100 |
---|---|---|
committer | Martin Polden <martin.polden@gmail.com> | 2016-02-27 16:39:44 +0100 |
commit | ef27fd63dfb5c79c81c426a7041d02ffa94ee471 (patch) | |
tree | 5a1518c6852d972348e7482d97fa52a5e4f836f5 /lisp/init-editing.el | |
parent | 1f58bb36eecab343460b4394738f9e10cc30f0f1 (diff) |
Try vc-rename-file when renaming buffer and file
Diffstat (limited to 'lisp/init-editing.el')
-rw-r--r-- | lisp/init-editing.el | 29 |
1 files changed, 13 insertions, 16 deletions
diff --git a/lisp/init-editing.el b/lisp/init-editing.el index 587eb7c..65c02f3 100644 --- a/lisp/init-editing.el +++ b/lisp/init-editing.el @@ -39,24 +39,21 @@ (interactive) (message buffer-file-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." +;; source: +;; http://emacsredux.com/blog/2013/05/04/rename-file-and-buffer/ +;; https://github.com/bbatsov/prelude/blob/master/core/prelude-core.el +(defun rename-buffer-and-file () + "Rename current buffer and if the buffer is visiting a file, rename it too." (interactive) - (let ((name (buffer-name)) - (filename (buffer-file-name))) + (let ((filename (buffer-file-name))) (if (not (and filename (file-exists-p filename))) - (error "Buffer '%s' is not visiting a file!" name) + (rename-buffer (read-from-minibuffer "New name: " (buffer-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)))))))) + (cond + ((vc-backend filename) (vc-rename-file filename new-name)) + (t + (rename-file filename new-name t) + (set-visited-file-name new-name t t))))))) ;; swap RET and C-j (global-set-key (kbd "RET") 'newline-and-indent) @@ -75,6 +72,6 @@ (global-set-key (kbd "M-j") (lambda () (interactive) (join-line -1))) ;; C-c n renames the current buffer and file -(global-set-key (kbd "C-c n") 'rename-this-buffer-and-file) +(global-set-key (kbd "C-c n") 'rename-buffer-and-file) (provide 'init-editing) |