emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r111746: * files.el (basic-save-buffe


From: Glenn Morris
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r111746: * files.el (basic-save-buffer): Offer to create a non-existing directory.
Date: Tue, 12 Feb 2013 00:36:09 -0800
User-agent: Bazaar (2.5.0)

------------------------------------------------------------
revno: 111746
fixes bug: http://debbugs.gnu.org/3016
committer: Glenn Morris <address@hidden>
branch nick: trunk
timestamp: Tue 2013-02-12 00:36:09 -0800
message:
  * files.el (basic-save-buffer): Offer to create a non-existing directory.
modified:
  lisp/ChangeLog
  lisp/files.el
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog    2013-02-12 07:38:54 +0000
+++ b/lisp/ChangeLog    2013-02-12 08:36:09 +0000
@@ -1,5 +1,8 @@
 2013-02-12  Glenn Morris  <address@hidden>
 
+       * files.el (basic-save-buffer):
+       Offer to create a non-existing directory.  (Bug#3016)
+
        * calc/calc-graph.el (calc-graph-show-dumb):
        * calendar/calendar.el (calendar-mode-map):
        * cus-edit.el (custom-mode-map):

=== modified file 'lisp/files.el'
--- a/lisp/files.el     2013-02-11 01:50:45 +0000
+++ b/lisp/files.el     2013-02-12 08:36:09 +0000
@@ -4563,28 +4563,39 @@
                 (not (file-exists-p buffer-file-name))))
        (let ((recent-save (recent-auto-save-p))
              setmodes)
-         ;; 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: "
-                                     nil (expand-file-name (buffer-name))))))
-               (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)))
+         (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.
+           (let ((filename
+                  (expand-file-name
+                   (read-file-name "File to save in: "
+                                   nil (expand-file-name (buffer-name))))))
+             (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)
+                     (if (y-or-n-p
+                          (format "Directory `%s' does not exist; create? "
+                                  dir))
+                         (make-directory dir t)
+                       (error "Canceled"))))))
+             (set-visited-file-name filename)))
          (or (verify-visited-file-modtime (current-buffer))
              (not (file-exists-p buffer-file-name))
              (yes-or-no-p


reply via email to

[Prev in Thread] Current Thread [Next in Thread]