1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-12-02 08:22:22 +00:00

* 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.

Fixes: debbugs:13930
This commit is contained in:
Glenn Morris 2013-05-14 09:01:16 -07:00
parent eda9c7d707
commit 0114073ac0
2 changed files with 37 additions and 9 deletions

View File

@ -1,3 +1,8 @@
2013-05-14 Glenn Morris <rgm@gnu.org>
* subr.el (user-emacs-directory-warning): New option.
(locate-user-emacs-file): Handle non-accessible .emacs.d. (Bug#13930)
2013-05-14 Leo Liu <sdl.web@gmail.com>
* progmodes/octave.el (octave-font-lock-keywords): Fix error

View File

@ -2643,6 +2643,13 @@ Various programs in Emacs store information in this directory.
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 @@ directory if it does not exist."
(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.