diff options
author | Lars Magne Ingebrigtsen <larsi@gnus.org> | 2011-07-11 22:12:07 +0200 |
---|---|---|
committer | Lars Magne Ingebrigtsen <larsi@gnus.org> | 2011-07-11 22:12:07 +0200 |
commit | eab5dc0727f022842e4b4eadd4b0ab0ce4b12939 (patch) | |
tree | 10b5da6372e298d284386560e389388e7cca04fb | |
parent | 963578d396f018f4cae81bca311882ab4ed15b4f (diff) | |
download | emacs-eab5dc0727f022842e4b4eadd4b0ab0ce4b12939.tar.gz |
Allow using `customize-save-variable' under Emacs -Q: Set the variable, and give a warning
-rw-r--r-- | lisp/ChangeLog | 6 | ||||
-rw-r--r-- | lisp/cus-edit.el | 42 |
2 files changed, 31 insertions, 17 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index e024646cd26..f1c36a9feea 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2011-07-11 Lars Magne Ingebrigtsen <larsi@gnus.org> + + * cus-edit.el (custom-file): Take an optional no-error variable. + (customize-save-variable): Set the variable, and give a warning if + running under "emacs -q". + 2011-07-11 Juanma Barranquero <lekktu@gmail.com> * loadhist.el (unload-feature-special-hooks): diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el index 22b7cc6b3fe..d443d6c160c 100644 --- a/lisp/cus-edit.el +++ b/lisp/cus-edit.el @@ -1033,7 +1033,11 @@ If given a prefix (or a COMMENT argument), also prompt for a comment." (put variable 'saved-variable-comment comment))) (put variable 'customized-value nil) (put variable 'customized-variable-comment nil) - (custom-save-all) + (if (custom-file t) + (custom-save-all) + (message "Setting `%s' temporarily since \"emacs -q\" would overwrite customizations" + variable) + (set variable value)) value) ;; Some parts of Emacs might prompt the user to save customizations, @@ -4403,23 +4407,27 @@ Click on \"More\" \(or position point there and press RETURN) if only the first line of the docstring is shown.")) :group 'customize) -(defun custom-file () +(defun custom-file (&optional no-error) "Return the file name for saving customizations." - (file-chase-links - (or custom-file - (let ((user-init-file user-init-file) - (default-init-file - (if (eq system-type 'ms-dos) "~/_emacs" "~/.emacs"))) - (when (null user-init-file) - (if (or (file-exists-p default-init-file) - (and (eq system-type 'windows-nt) - (file-exists-p "~/_emacs"))) - ;; Started with -q, i.e. the file containing - ;; Custom settings hasn't been read. Saving - ;; settings there would overwrite other settings. - (error "Saving settings from \"emacs -q\" would overwrite existing customizations")) - (setq user-init-file default-init-file)) - user-init-file)))) + (let ((file + (or custom-file + (let ((user-init-file user-init-file) + (default-init-file + (if (eq system-type 'ms-dos) "~/_emacs" "~/.emacs"))) + (when (null user-init-file) + (if (or (file-exists-p default-init-file) + (and (eq system-type 'windows-nt) + (file-exists-p "~/_emacs"))) + ;; Started with -q, i.e. the file containing + ;; Custom settings hasn't been read. Saving + ;; settings there would overwrite other settings. + (if no-error + nil + (error "Saving settings from \"emacs -q\" would overwrite existing customizations")) + (setq user-init-file default-init-file))) + user-init-file)))) + (and file + (file-chase-links file)))) ;; If recentf-mode is non-nil, this is defined. (declare-function recentf-expand-file-name "recentf" (name)) |