929 |
file-dir (file-name-directory file))) |
file-dir (file-name-directory file))) |
930 |
(list (read-file-name |
(list (read-file-name |
931 |
"Find alternate file: " file-dir nil nil file-name)))) |
"Find alternate file: " file-dir nil nil file-name)))) |
932 |
(and (buffer-modified-p) (buffer-file-name) |
(unless (run-hook-with-args-until-failure 'kill-buffer-query-functions) |
933 |
;; (not buffer-read-only) |
(error "Aborted")) |
934 |
(not (yes-or-no-p (format "Buffer %s is modified; kill anyway? " |
(when (and (buffer-modified-p) (buffer-file-name)) |
935 |
(buffer-name)))) |
(if (yes-or-no-p (format "Buffer %s is modified; save it first? " |
936 |
(error "Aborted")) |
(buffer-name))) |
937 |
|
(save-buffer) |
938 |
|
(unless (yes-or-no-p "Kill and replace the buffer without saving it? ") |
939 |
|
(error "Aborted")))) |
940 |
(let ((obuf (current-buffer)) |
(let ((obuf (current-buffer)) |
941 |
(ofile buffer-file-name) |
(ofile buffer-file-name) |
942 |
(onum buffer-file-number) |
(onum buffer-file-number) |
952 |
(setq buffer-file-number nil) |
(setq buffer-file-number nil) |
953 |
(setq buffer-file-truename nil) |
(setq buffer-file-truename nil) |
954 |
(find-file filename)) |
(find-file filename)) |
955 |
(cond ((eq obuf (current-buffer)) |
(when (eq obuf (current-buffer)) |
956 |
(setq buffer-file-name ofile) |
;; This executes if find-file gets an error |
957 |
(setq buffer-file-number onum) |
;; and does not really find anything. |
958 |
(setq buffer-file-truename otrue) |
;; We put things back as they were. |
959 |
(lock-buffer) |
;; If find-file actually finds something, we kill obuf below. |
960 |
(rename-buffer oname)))) |
(setq buffer-file-name ofile) |
961 |
(or (eq (current-buffer) obuf) |
(setq buffer-file-number onum) |
962 |
(kill-buffer obuf)))) |
(setq buffer-file-truename otrue) |
963 |
|
(lock-buffer) |
964 |
|
(rename-buffer oname))) |
965 |
|
(unless (eq (current-buffer) obuf) |
966 |
|
;; We already asked; don't ask again. |
967 |
|
(setq kill-buffer-query-functions nil) |
968 |
|
(kill-buffer obuf)))) |
969 |
|
|
970 |
(defun create-file-buffer (filename) |
(defun create-file-buffer (filename) |
971 |
"Create a suitably named buffer for visiting FILENAME, and return it. |
"Create a suitably named buffer for visiting FILENAME, and return it. |