From: Stefan Monnier Date: Mon, 26 Jun 2023 15:25:14 +0000 (-0400) Subject: startup.el: Don't override init.el custom of `debug-ignored-errors` X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=3a50773ab0071addba98249d26c309f5fb78bd74;p=emacs.git startup.el: Don't override init.el custom of `debug-ignored-errors` * lisp/startup.el (startup--load-user-init-file): Undo commit 4302bc9b0f12. Mimic the code we use for `debug-on-error` instead. --- diff --git a/lisp/startup.el b/lisp/startup.el index 484c8f57a9f..5a389294e78 100644 --- a/lisp/startup.el +++ b/lisp/startup.el @@ -1025,13 +1025,21 @@ init-file, or to a default value if loading is not possible." (debug-on-error-should-be-set nil) (debug-on-error-initial (if (eq init-file-debug t) - 'startup + 'startup--witness ;Dummy but recognizable non-nil value. init-file-debug)) + (d-i-e-from-init-file nil) + (d-i-e-initial + ;; Use (startup--witness) instead of nil, so we can detect when the + ;; init files set `debug-ignored-errors' to nil. + (if init-file-debug '(startup--witness) debug-ignored-errors)) ;; The init file might contain byte-code with embedded NULs, ;; which can cause problems when read back, so disable nul ;; byte detection. (Bug#52554) (inhibit-null-byte-detection t)) - (let ((debug-on-error debug-on-error-initial)) + (let ((debug-on-error debug-on-error-initial) + ;; If they specified --debug-init, enter the debugger + ;; on any error whatsoever. + (debug-ignored-errors d-i-e-initial)) (condition-case-unless-debug error (when init-file-user (let ((init-file-name (funcall filename-function))) @@ -1041,17 +1049,11 @@ init-file, or to a default value if loading is not possible." ;; `user-init-file'. (setq user-init-file t) (when init-file-name - ;; If they specified --debug-init, enter the debugger - ;; on any error whatsoever. - (let ((debug-ignored-errors - (if (and init-file-debug (not noninteractive)) - nil - debug-ignored-errors))) - (load (if (equal (file-name-extension init-file-name) - "el") - (file-name-sans-extension init-file-name) - init-file-name) - 'noerror 'nomessage))) + (load (if (equal (file-name-extension init-file-name) + "el") + (file-name-sans-extension init-file-name) + init-file-name) + 'noerror 'nomessage)) (when (and (eq user-init-file t) alternate-filename-function) (let ((alt-file (funcall alternate-filename-function))) @@ -1059,11 +1061,7 @@ init-file, or to a default value if loading is not possible." (setq init-file-name alt-file)) (and (equal (file-name-extension alt-file) "el") (setq alt-file (file-name-sans-extension alt-file))) - (let ((debug-ignored-errors - (if (and init-file-debug (not noninteractive)) - nil - debug-ignored-errors))) - (load alt-file 'noerror 'nomessage)))) + (load alt-file 'noerror 'nomessage))) ;; If we did not find the user's init file, set ;; user-init-file conclusively. Don't let it be @@ -1102,11 +1100,7 @@ init-file, or to a default value if loading is not possible." (not inhibit-default-init)) ;; Prevent default.el from changing the value of ;; `inhibit-startup-screen'. - (let ((inhibit-startup-screen nil) - (debug-ignored-errors - (if (and init-file-debug (not noninteractive)) - nil - debug-ignored-errors))) + (let ((inhibit-startup-screen nil)) (load "default" 'noerror 'nomessage)))) (error (display-warning @@ -1126,10 +1120,14 @@ the `--debug-init' option to view a complete error backtrace." ;; If we can tell that the init file altered debug-on-error, ;; arrange to preserve the value that it set up. + (or (eq debug-ignored-errors d-i-e-initial) + (setq d-i-e-from-init-file (list debug-ignored-errors))) (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))) + (when d-i-e-from-init-file + (setq debug-ignored-errors (car d-i-e-from-init-file))) (when debug-on-error-should-be-set (setq debug-on-error debug-on-error-from-init-file))))