1 (defun find-alternate-file (filename)
2 "Find file FILENAME, select its buffer, kill previous buffer.
3 If the current buffer now contains an empty file that you just visited
4 \(presumably by mistake), use this command to visit the file you really want.
6 This function has been modified by Ian Jackson so as to revert to the
7 old (Emacs 18) behaviour of not requiring you to cut out the current
10 (let ((file buffer-file-name)
13 (setq file-dir (file-name-directory file)))
15 "Find alternate file: " file-dir nil nil nil))))
16 (and (buffer-modified-p)
17 ;; (not buffer-read-only)
18 (not (yes-or-no-p (format "Buffer %s is modified; kill anyway? "
21 (let ((obuf (current-buffer))
22 (ofile buffer-file-name)
23 (onum buffer-file-number)
24 (otrue buffer-file-truename)
25 (oname (buffer-name)))
26 (rename-buffer " **lose**")
27 (setq buffer-file-name nil)
28 (setq buffer-file-number nil)
29 (setq buffer-file-truename nil)
34 (cond ((eq obuf (current-buffer))
35 (setq buffer-file-name ofile)
36 (setq buffer-file-number onum)
37 (setq buffer-file-truename otrue)
39 (rename-buffer oname))))
40 (or (eq (current-buffer) obuf)
43 (provide 'find-alternate-18style)