emacs

How do I rename an open file in Emacs?


Is there a way to rename an open file in Emacs? While I'm viewing it? Something like save-as, but the original one should go away.


Solution

  • Try this function from Steve Yegge's .emacs:

    ;; source: http://steve.yegge.googlepages.com/my-dot-emacs-file
    (defun rename-file-and-buffer (new-name)
      "Renames both current buffer and file it's visiting to NEW-NAME."
      (interactive "sNew name: ")
      (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 filename new-name 1)
              (rename-buffer new-name)
              (set-visited-file-name new-name)
              (set-buffer-modified-p nil))))))
    

    Take a look at that page, there's another really useful related function there, called "move-buffer-file".