Allow using `customize-save-variable' under Emacs -Q: Set the variable, and give...
authorLars Magne Ingebrigtsen <larsi@gnus.org>
Mon, 11 Jul 2011 20:12:07 +0000 (22:12 +0200)
committerLars Magne Ingebrigtsen <larsi@gnus.org>
Mon, 11 Jul 2011 20:12:07 +0000 (22:12 +0200)
lisp/ChangeLog
lisp/cus-edit.el

index e024646..f1c36a9 100644 (file)
@@ -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):
index 22b7cc6..d443d6c 100644 (file)
@@ -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))