summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Magne Ingebrigtsen <larsi@gnus.org>2011-07-11 22:12:07 +0200
committerLars Magne Ingebrigtsen <larsi@gnus.org>2011-07-11 22:12:07 +0200
commiteab5dc0727f022842e4b4eadd4b0ab0ce4b12939 (patch)
tree10b5da6372e298d284386560e389388e7cca04fb
parent963578d396f018f4cae81bca311882ab4ed15b4f (diff)
downloademacs-eab5dc0727f022842e4b4eadd4b0ab0ce4b12939.tar.gz
Allow using `customize-save-variable' under Emacs -Q: Set the variable, and give a warning
-rw-r--r--lisp/ChangeLog6
-rw-r--r--lisp/cus-edit.el42
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))