# HG changeset patch # User Richard M. Stallman # Date 1021354581 0 # Node ID dcc56f49b7394daf52ad633c68b973eb8142d4bf # Parent 501be79c92f16a9e93d727b9704eb0215c36d2ad (make-auto-save-file-name): Delete the auto-save file after make-temp-file creates it. diff -r 501be79c92f1 -r dcc56f49b739 lisp/files.el --- a/lisp/files.el Tue May 14 03:04:31 2002 +0000 +++ b/lisp/files.el Tue May 14 05:36:21 2002 +0000 @@ -3439,7 +3439,8 @@ ;; mode tends to create a good number of these.) (let ((buffer-name (buffer-name)) - (limit 0)) + (limit 0) + filename) ;; Eliminate all slashes and backslashes by ;; replacing them with sequences that start with %. ;; Quote % also, to keep distinct names distinct. @@ -3452,27 +3453,34 @@ (setq buffer-name (replace-match replacement t t buffer-name)) (setq limit (1+ (match-end 0))))) ;; Generate the file name. - (make-temp-file - (let ((fname - (expand-file-name - (format "#%s#" buffer-name) - ;; Try a few alternative directories, to get one we can - ;; write it. - (cond - ((file-writable-p default-directory) default-directory) - ((file-writable-p "/var/tmp/") "/var/tmp/") - ("~/"))))) - (if (and (memq system-type '(ms-dos windows-nt)) - ;; Don't modify remote (ange-ftp) filenames - (not (string-match "^/\\w+@[-A-Za-z0-9._]+:" fname))) - ;; The call to convert-standard-filename is in case - ;; buffer-name includes characters not allowed by the - ;; DOS/Windows filesystems. make-temp-file writes to the - ;; file it creates, so we must fix the file name _before_ - ;; make-temp-file is called. - (convert-standard-filename fname) - fname)) - nil "#")))) + (setq file-name + (make-temp-file + (let ((fname + (expand-file-name + (format "#%s#" buffer-name) + ;; Try a few alternative directories, to get one we can + ;; write it. + (cond + ((file-writable-p default-directory) default-directory) + ((file-writable-p "/var/tmp/") "/var/tmp/") + ("~/"))))) + (if (and (memq system-type '(ms-dos windows-nt)) + ;; Don't modify remote (ange-ftp) filenames + (not (string-match "^/\\w+@[-A-Za-z0-9._]+:" fname))) + ;; The call to convert-standard-filename is in case + ;; buffer-name includes characters not allowed by the + ;; DOS/Windows filesystems. make-temp-file writes to the + ;; file it creates, so we must fix the file name _before_ + ;; make-temp-file is called. + (convert-standard-filename fname) + fname)) + nil "#")) + ;; make-temp-file creates the file, + ;; but we don't want it to exist until we do an auto-save. + (condition-case () + (delete-file file-name) + (file-error nil)) + file-name))) (defun auto-save-file-name-p (filename) "Return non-nil if FILENAME can be yielded by `make-auto-save-file-name'.