From 8400146f67755c225187e3b0d599f7fc3aed26fd Mon Sep 17 00:00:00 2001 From: Martin Rudalics Date: Tue, 20 Mar 2007 09:37:57 +0000 Subject: [PATCH] (basic-save-buffer): Do not set visited filename when the corresponding directory does not exist or the specified filename is that of an existing directory. --- lisp/ChangeLog | 8 +++++++- lisp/files.el | 19 +++++++++++++++---- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index f84f0b0dabd..4d07ceffd42 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2007-03-20 Martin Rudalics + + * files.el (basic-save-buffer): Do not set visited filename when + the corresponding directory does not exist or the specified + filename is that of an existing directory. + 2007-03-20 Glenn Morris * calendar/diary-lib.el (diary-live-p): New function. @@ -189,7 +195,7 @@ (rcirc-nick-prefix-chars): Add variable. (rcirc-user-nick): Use above variable. -2007-03-10 Johan Bockg,be(Brd +2007-03-10 Johan Bockg,Ae(Brd * icomplete.el (icomplete-tidy, icomplete-exhibit): Bind deactivate-mark to nil. diff --git a/lisp/files.el b/lisp/files.el index 50180dc6ebf..d0a89ec65b5 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -3595,10 +3595,21 @@ Before and after saving the buffer, this function runs (let ((filename (expand-file-name (read-file-name "File to save in: ") nil))) - (and (file-exists-p filename) - (or (y-or-n-p (format "File `%s' exists; overwrite? " - filename)) - (error "Canceled"))) + (if (file-exists-p filename) + (if (file-directory-p filename) + ;; Signal an error if the user specified the name of an + ;; existing directory. + (error "%s is a directory" filename) + (unless (y-or-n-p (format "File `%s' exists; overwrite? " + filename)) + (error "Canceled"))) + ;; Signal an error if the specified name refers to a + ;; non-existing directory. + (let ((dir (file-name-directory filename))) + (unless (file-directory-p dir) + (if (file-exists-p dir) + (error "%s is not a directory" dir) + (error "%s: no such directory" dir))))) (set-visited-file-name filename))) (or (verify-visited-file-modtime (current-buffer)) (not (file-exists-p buffer-file-name)) -- 2.39.5