changeset 5379:1d1d65ab7835

(command-line): In most cases, if init file sets debug-on-error, leave it set that way.
author Richard M. Stallman <rms@gnu.org>
date Fri, 31 Dec 1993 03:45:38 +0000
parents 32a291ab0c5f
children 801232ccc5e5
files lisp/startup.el
diffstat 1 files changed, 40 insertions(+), 29 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/startup.el	Fri Dec 31 03:45:08 1993 +0000
+++ b/lisp/startup.el	Fri Dec 31 03:45:38 1993 +0000
@@ -252,35 +252,46 @@
   (setq inhibit-startup-message nil)
 
   ;; Load that user's init file, or the default one, or none.
-  (let ((debug-on-error init-file-debug)
-	;; This function actually reads the init files.
-	(inner
-	 (function
-	  (lambda ()
-	    (if init-file-user
-		(progn (load (if (eq system-type 'vax-vms)
-				 "sys$login:.emacs"
-			       (concat "~" init-file-user "/.emacs"))
-			     t t t)
-		       (or inhibit-default-init
-			   (let ((inhibit-startup-message nil))
-			     ;; Users are supposed to be told their rights.
-			     ;; (Plus how to get help and how to undo.)
-			     ;; Don't you dare turn this off for anyone
-			     ;; except yourself.
-			     (load "default" t t)))))))))
-    (if init-file-debug
-	;; Do this without a condition-case if the user wants to debug.
-	(funcall inner)
-      (condition-case error
-	  (progn
-	    (funcall inner)
-	    (setq init-file-had-error nil))
-	(error (message "Error in init file: %s%s%s"
-			(get (car error) 'error-message)
-			(if (cdr error) ": ")
-			(mapconcat 'prin1-to-string (cdr error) ", "))
-	       (setq init-file-had-error t)))))
+  (let (debug-on-error-from-init-file
+	debug-on-error-should-be-set
+	(debug-on-error-initial
+	 (if (eq init-file-debug t) 'startup init-file-debug)))
+    (let ((debug-on-error debug-on-error-initial)
+	  ;; This function actually reads the init files.
+	  (inner
+	   (function
+	    (lambda ()
+	      (if init-file-user
+		  (progn (load (if (eq system-type 'vax-vms)
+				   "sys$login:.emacs"
+				 (concat "~" init-file-user "/.emacs"))
+			       t t t)
+			 (or inhibit-default-init
+			     (let ((inhibit-startup-message nil))
+			       ;; Users are supposed to be told their rights.
+			       ;; (Plus how to get help and how to undo.)
+			       ;; Don't you dare turn this off for anyone
+			       ;; except yourself.
+			       (load "default" t t)))))))))
+      (if init-file-debug
+	  ;; Do this without a condition-case if the user wants to debug.
+	  (funcall inner)
+	(condition-case error
+	    (progn
+	      (funcall inner)
+	      (setq init-file-had-error nil))
+	  (error (message "Error in init file: %s%s%s"
+			  (get (car error) 'error-message)
+			  (if (cdr error) ": ")
+			  (mapconcat 'prin1-to-string (cdr error) ", "))
+		 (setq init-file-had-error t))))
+      ;; If we can tell that the init file altered debug-on-error.,
+      ;; arrange to preserve the value that it set up.
+      (or (eq debug-on-error debug-on-error-initial)
+	  (setq debug-on-error-should-be-set t
+		debug-on-error-from-init-file debug-on-error)))
+    (if debug-on-error-should-be-set
+	(setq debug-on-error debug-on-error-from-init-file)))
 
   (run-hooks 'after-init-hook)