emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] /srv/bzr/emacs/trunk r112581: * subr.el (user-emacs-direct


From: Glenn Morris
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r112581: * subr.el (user-emacs-directory-warning): New option.
Date: Tue, 14 May 2013 09:01:16 -0700
User-agent: Bazaar (2.6b2)

------------------------------------------------------------
revno: 112581
fixes bug: http://debbugs.gnu.org/13930
committer: Glenn Morris <address@hidden>
branch nick: trunk
timestamp: Tue 2013-05-14 09:01:16 -0700
message:
  * subr.el (user-emacs-directory-warning): New option.
  (locate-user-emacs-file): Handle non-accessible .emacs.d. 
  
  Not in NEWS, because you only need to know about this if you encounter
  it in the wild.
modified:
  lisp/ChangeLog
  lisp/subr.el
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog    2013-05-14 10:11:56 +0000
+++ b/lisp/ChangeLog    2013-05-14 16:01:16 +0000
@@ -1,3 +1,8 @@
+2013-05-14  Glenn Morris  <address@hidden>
+
+       * subr.el (user-emacs-directory-warning): New option.
+       (locate-user-emacs-file): Handle non-accessible .emacs.d.  (Bug#13930)
+
 2013-05-14  Leo Liu  <address@hidden>
 
        * progmodes/octave.el (octave-font-lock-keywords): Fix error

=== modified file 'lisp/subr.el'
--- a/lisp/subr.el      2013-04-27 21:12:17 +0000
+++ b/lisp/subr.el      2013-05-14 16:01:16 +0000
@@ -2643,6 +2643,13 @@
 Note that this should end with a directory separator.
 See also `locate-user-emacs-file'.")
 
+(custom-declare-variable-early 'user-emacs-directory-warning t
+  "Non-nil means warn if cannot access `user-emacs-directory'.
+Set this to nil at your own risk..."
+  :type 'boolean
+  :group 'initialization
+  :version "24.4")
+
 (defun locate-user-emacs-file (new-name &optional old-name)
   "Return an absolute per-user Emacs-specific file name.
 If NEW-NAME exists in `user-emacs-directory', return it.
@@ -2658,17 +2665,33 @@
               (file-readable-p at-home))
         at-home
        ;; Make sure `user-emacs-directory' exists,
-       ;; unless we're in batch mode or dumping Emacs
+       ;; unless we're in batch mode or dumping Emacs.
        (or noninteractive
           purify-flag
-          (file-accessible-directory-p
-           (directory-file-name user-emacs-directory))
-          (let ((umask (default-file-modes)))
-            (unwind-protect
-                (progn
-                  (set-default-file-modes ?\700)
-                  (make-directory user-emacs-directory))
-              (set-default-file-modes umask))))
+          (let (errtype)
+            (if (file-directory-p user-emacs-directory)
+                (or (file-accessible-directory-p user-emacs-directory)
+                    (setq errtype "access"))
+              (let ((umask (default-file-modes)))
+                (unwind-protect
+                    (progn
+                      (set-default-file-modes ?\700)
+                      (condition-case nil
+                          (make-directory user-emacs-directory)
+                        (error (setq errtype "create"))))
+                  (set-default-file-modes umask))))
+            (when (and errtype
+                       user-emacs-directory-warning
+                       (not (get 'user-emacs-directory-warning 'this-session)))
+              ;; Only warn once per Emacs session.
+              (put 'user-emacs-directory-warning 'this-session t)
+              (display-warning 'initialization
+                               (format "\
+Unable to %s `user-emacs-directory' (%s).
+Any data that would normally be written there may be lost!
+If you never want to see this message again,
+customize the variable `user-emacs-directory-warning'."
+                                       errtype user-emacs-directory)))))
        bestname))))
 
 ;;;; Misc. useful functions.


reply via email to

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