summaryrefslogtreecommitdiffstats
path: root/lisp/init-editing.el
diff options
context:
space:
mode:
authorMartin Polden <martin.polden@gmail.com>2015-04-07 21:27:30 +0200
committerMartin Polden <martin.polden@gmail.com>2015-04-07 21:27:30 +0200
commitc529a35edbcca528eb2edd7321c574004dfac0a3 (patch)
treee60d647c421415843f11e57adb7882c282a20ae7 /lisp/init-editing.el
parentb22c79fc88e2db47bfb7b4e10048dbbf2e47f72f (diff)
Improve rename function
Diffstat (limited to 'lisp/init-editing.el')
-rw-r--r--lisp/init-editing.el32
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)