diff options
| author | Richard M. Stallman | 2002-07-14 15:30:54 +0000 |
|---|---|---|
| committer | Richard M. Stallman | 2002-07-14 15:30:54 +0000 |
| commit | 63fabbb4feb9f253ba5c241810d2c0e085f929db (patch) | |
| tree | 9dfb562f663442830df25c9642bba735fa843108 | |
| parent | 682b60ae440a9ce8597bfc96304b2deb259ff01f (diff) | |
| download | emacs-63fabbb4feb9f253ba5c241810d2c0e085f929db.tar.gz emacs-63fabbb4feb9f253ba5c241810d2c0e085f929db.zip | |
(find-alternate-file): Offer to save a modified buffer.
Handle kill-buffer-query-functions better.
| -rw-r--r-- | lisp/files.el | 35 |
1 files changed, 22 insertions, 13 deletions
diff --git a/lisp/files.el b/lisp/files.el index ab21424c2b3..1471270d541 100644 --- a/lisp/files.el +++ b/lisp/files.el | |||
| @@ -929,11 +929,14 @@ If the current buffer now contains an empty file that you just visited | |||
| 929 | file-dir (file-name-directory file))) | 929 | file-dir (file-name-directory file))) |
| 930 | (list (read-file-name | 930 | (list (read-file-name |
| 931 | "Find alternate file: " file-dir nil nil file-name)))) | 931 | "Find alternate file: " file-dir nil nil file-name)))) |
| 932 | (and (buffer-modified-p) (buffer-file-name) | 932 | (unless (run-hook-with-args-until-failure 'kill-buffer-query-functions) |
| 933 | ;; (not buffer-read-only) | 933 | (error "Aborted")) |
| 934 | (not (yes-or-no-p (format "Buffer %s is modified; kill anyway? " | 934 | (when (and (buffer-modified-p) (buffer-file-name)) |
| 935 | (buffer-name)))) | 935 | (if (yes-or-no-p (format "Buffer %s is modified; save it first? " |
| 936 | (error "Aborted")) | 936 | (buffer-name))) |
| 937 | (save-buffer) | ||
| 938 | (unless (yes-or-no-p "Kill and replace the buffer without saving it? ") | ||
| 939 | (error "Aborted")))) | ||
| 937 | (let ((obuf (current-buffer)) | 940 | (let ((obuf (current-buffer)) |
| 938 | (ofile buffer-file-name) | 941 | (ofile buffer-file-name) |
| 939 | (onum buffer-file-number) | 942 | (onum buffer-file-number) |
| @@ -949,14 +952,20 @@ If the current buffer now contains an empty file that you just visited | |||
| 949 | (setq buffer-file-number nil) | 952 | (setq buffer-file-number nil) |
| 950 | (setq buffer-file-truename nil) | 953 | (setq buffer-file-truename nil) |
| 951 | (find-file filename)) | 954 | (find-file filename)) |
| 952 | (cond ((eq obuf (current-buffer)) | 955 | (when (eq obuf (current-buffer)) |
| 953 | (setq buffer-file-name ofile) | 956 | ;; This executes if find-file gets an error |
| 954 | (setq buffer-file-number onum) | 957 | ;; and does not really find anything. |
| 955 | (setq buffer-file-truename otrue) | 958 | ;; We put things back as they were. |
| 956 | (lock-buffer) | 959 | ;; If find-file actually finds something, we kill obuf below. |
| 957 | (rename-buffer oname)))) | 960 | (setq buffer-file-name ofile) |
| 958 | (or (eq (current-buffer) obuf) | 961 | (setq buffer-file-number onum) |
| 959 | (kill-buffer obuf)))) | 962 | (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)))) | ||
| 960 | 969 | ||
| 961 | (defun create-file-buffer (filename) | 970 | (defun create-file-buffer (filename) |
| 962 | "Create a suitably named buffer for visiting FILENAME, and return it. | 971 | "Create a suitably named buffer for visiting FILENAME, and return it. |