X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=ian-dotfiles.git;a=blobdiff_plain;f=from-cvs%2Ffiles%2Femacs_find-alternate-18style.el;fp=from-cvs%2Ffiles%2Femacs_find-alternate-18style.el;h=beaa39df565a13bf698b556788bf403df66857d4;hp=0000000000000000000000000000000000000000;hb=4ed6df107b1db703ad86565447aa20b6385d3116;hpb=5f7cd9911c34368127da9819a3afc878976c02e5 diff --git a/from-cvs/files/emacs_find-alternate-18style.el b/from-cvs/files/emacs_find-alternate-18style.el new file mode 100644 index 0000000..beaa39d --- /dev/null +++ b/from-cvs/files/emacs_find-alternate-18style.el @@ -0,0 +1,43 @@ +(defun find-alternate-file (filename) + "Find file FILENAME, select its buffer, kill previous buffer. +If the current buffer now contains an empty file that you just visited +\(presumably by mistake), use this command to visit the file you really want. + +This function has been modified by Ian Jackson so as to revert to the +old (Emacs 18) behaviour of not requiring you to cut out the current +buffer's filename." + (interactive + (let ((file buffer-file-name) + (file-dir nil)) + (and file + (setq file-dir (file-name-directory file))) + (list (read-file-name + "Find alternate file: " file-dir nil nil nil)))) + (and (buffer-modified-p) + ;; (not buffer-read-only) + (not (yes-or-no-p (format "Buffer %s is modified; kill anyway? " + (buffer-name)))) + (error "Aborted")) + (let ((obuf (current-buffer)) + (ofile buffer-file-name) + (onum buffer-file-number) + (otrue buffer-file-truename) + (oname (buffer-name))) + (rename-buffer " **lose**") + (setq buffer-file-name nil) + (setq buffer-file-number nil) + (setq buffer-file-truename nil) + (unwind-protect + (progn + (unlock-buffer) + (find-file filename)) + (cond ((eq obuf (current-buffer)) + (setq buffer-file-name ofile) + (setq buffer-file-number onum) + (setq buffer-file-truename otrue) + (lock-buffer) + (rename-buffer oname)))) + (or (eq (current-buffer) obuf) + (kill-buffer obuf)))) + +(provide 'find-alternate-18style)