]> git.eshelyaron.com Git - emacs.git/commitdiff
(enable-command): If Emacs was invoked as "emacs -q",
authorEli Zaretskii <eliz@gnu.org>
Sat, 2 Feb 2002 12:49:58 +0000 (12:49 +0000)
committerEli Zaretskii <eliz@gnu.org>
Sat, 2 Feb 2002 12:49:58 +0000 (12:49 +0000)
don't alter the user's ~/.emacs.
(disable-command): If user-init-file is nil or does not exist,
default to "~/.emacs" (~/_emacs on DOS and, maybe, Windows).  But
don't alter the init file if Emacs was invoked as "emacs -q"

lisp/ChangeLog
lisp/novice.el

index 42562bb143db9e1ccd16ad86f49dac209f5629da..6ae25cf0190e72bf9550535e2ebe6969f117b1b1 100644 (file)
@@ -1,3 +1,11 @@
+2002-02-02  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * novice.el (enable-command): If Emacs was invoked as "emacs -q",
+       don't alter the user's ~/.emacs.
+       (disable-command): If user-init-file is nil or does not exist,
+       default to "~/.emacs" (~/_emacs on DOS and, maybe, Windows).  But
+       don't alter the init file if Emacs was invoked as "emacs -q"
+
 2002-02-01  Stefan Monnier  <monnier@cs.yale.edu>
 
        * mail/sendmail.el (mail-mode): Undo half of last change.
index c22e685aef3bd9e7c4378317ba8ca88fcd17e9ef..2d1481fb56afa62e0798f3aa2863ed6f65296b43 100644 (file)
@@ -107,10 +107,18 @@ The user's .emacs file is altered so that this will apply
 to future sessions."
   (interactive "CEnable command: ")
   (put command 'disabled nil)
-  (let ((init-file user-init-file))
-    (when (or (not (stringp init-file))
-             (not (file-exists-p init-file)))
-      (setq init-file (if (eq system-type 'ms-dos) "~/_emacs" "~/.emacs"))
+  (let ((init-file user-init-file)
+       (default-init-file
+         (if (eq system-type 'ms-dos) "~/_emacs" "~/.emacs")))
+    (when (null 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
+         ;; enabled/disabled commands hasn't been read.  Saving
+         ;; settings there would overwrite other settings.
+         (error "Saving settings from \"emacs -q\" would overwrite existing customizations"))
+      (setq init-file default-init-file)
       (if (and (not (file-exists-p init-file))
               (eq system-type 'windows-nt)
               (file-exists-p "~/_emacs"))
@@ -138,17 +146,33 @@ to future sessions."
   (if (not (commandp command))
       (error "Invalid command name `%s'" command))
   (put command 'disabled t)
-  (save-excursion
-   (set-buffer (find-file-noselect
-               (substitute-in-file-name user-init-file)))
-   (goto-char (point-min))
-   (if (search-forward (concat "(put '" (symbol-name command) " ") nil t)
-       (delete-region
-       (progn (beginning-of-line) (point))
-       (progn (forward-line 1) (point))))
-   (goto-char (point-max))
-   (insert "\n(put '" (symbol-name command) " 'disabled t)\n")
-   (save-buffer)))
+  (let ((init-file user-init-file)
+       (default-init-file
+         (if (eq system-type 'ms-dos) "~/_emacs" "~/.emacs")))
+    (when (null 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
+         ;; enabled/disabled commands hasn't been read.  Saving
+         ;; settings there would overwrite other settings.
+         (error "Saving settings from \"emacs -q\" would overwrite existing customizations"))
+      (setq init-file default-init-file)
+      (if (and (not (file-exists-p init-file))
+              (eq system-type 'windows-nt)
+              (file-exists-p "~/_emacs"))
+         (setq init-file "~/_emacs")))
+    (save-excursion
+      (set-buffer (find-file-noselect
+                  (substitute-in-file-name init-file)))
+      (goto-char (point-min))
+      (if (search-forward (concat "(put '" (symbol-name command) " ") nil t)
+         (delete-region
+          (progn (beginning-of-line) (point))
+          (progn (forward-line 1) (point))))
+      (goto-char (point-max))
+      (insert "\n(put '" (symbol-name command) " 'disabled t)\n")
+      (save-buffer))))
 
 (provide 'novice)