summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGlenn Morris <rgm@gnu.org>2013-02-20 21:44:06 -0500
committerGlenn Morris <rgm@gnu.org>2013-02-20 21:44:06 -0500
commitb367ec7bc10f625cb9769bfca0b8f502cd475e22 (patch)
tree31b64df85a01fe8e00a87853aa7b99f2b7d771bb
parent2fce4cd861e5575fafb10525540cdc8580e134f1 (diff)
downloademacs-b367ec7bc10f625cb9769bfca0b8f502cd475e22.tar.gz
emacs-b367ec7bc10f625cb9769bfca0b8f502cd475e22.tar.bz2
emacs-b367ec7bc10f625cb9769bfca0b8f502cd475e22.zip
* lisp/files.el (basic-save-buffer): Move check for existing parent directory
after hooks. (Bug#13773)
-rw-r--r--lisp/ChangeLog5
-rw-r--r--lisp/files.el18
2 files changed, 14 insertions, 9 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index abcf6578060..7581b2a376c 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,8 @@
+2013-02-21 Glenn Morris <rgm@gnu.org>
+
+ * files.el (basic-save-buffer): Move check for existing parent
+ directory after hooks. (Bug#13773)
+
2013-02-20 Stefan Monnier <monnier@iro.umontreal.ca>
* simple.el (command-execute): Move from C. Add obsolete check.
diff --git a/lisp/files.el b/lisp/files.el
index f9ed65b8ac0..f9d02511839 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -4563,15 +4563,8 @@ Before and after saving the buffer, this function runs
(not (file-exists-p buffer-file-name))))
(let ((recent-save (recent-auto-save-p))
setmodes)
- (if buffer-file-name
- (let ((dir (file-name-directory
- (expand-file-name buffer-file-name))))
- (unless (file-exists-p dir)
- (if (y-or-n-p
- (format "Directory `%s' does not exist; create? " dir))
- (make-directory dir t)
- (error "Canceled"))))
;; If buffer has no file name, ask user for one.
+ (or buffer-file-name
(let ((filename
(expand-file-name
(read-file-name "File to save in: "
@@ -4628,7 +4621,14 @@ Before and after saving the buffer, this function runs
(run-hook-with-args-until-success 'write-file-functions)
;; If a hook returned t, file is already "written".
;; Otherwise, write it the usual way now.
- (setq setmodes (basic-save-buffer-1)))
+ (let ((dir (file-name-directory
+ (expand-file-name buffer-file-name))))
+ (unless (file-exists-p dir)
+ (if (y-or-n-p
+ (format "Directory `%s' does not exist; create? " dir))
+ (make-directory dir t)
+ (error "Canceled")))
+ (setq setmodes (basic-save-buffer-1))))
;; Now we have saved the current buffer. Let's make sure
;; that buffer-file-coding-system is fixed to what
;; actually used for saving by binding it locally.