emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 4302bc9b0f1: Allow --debug-init to debug all errors in init files


From: Eli Zaretskii
Subject: master 4302bc9b0f1: Allow --debug-init to debug all errors in init files
Date: Wed, 21 Jun 2023 09:28:23 -0400 (EDT)

branch: master
commit 4302bc9b0f120491d1a5d20c3af250d01b40bf47
Author: Eli Zaretskii <eliz@gnu.org>
Commit: Eli Zaretskii <eliz@gnu.org>

    Allow --debug-init to debug all errors in init files
    
    * lisp/startup.el (startup--load-user-init-file): Ignore the value
    of 'debug-ignored-errors' when loading init files if we were
    invoked interactively with --debug-init.  (Bug#64163)
---
 lisp/startup.el | 28 +++++++++++++++++++++-------
 1 file changed, 21 insertions(+), 7 deletions(-)

diff --git a/lisp/startup.el b/lisp/startup.el
index 835ad785af1..484c8f57a9f 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -1041,11 +1041,17 @@ init-file, or to a default value if loading is not 
possible."
               ;; `user-init-file'.
               (setq user-init-file t)
              (when init-file-name
-               (load (if (equal (file-name-extension init-file-name)
-                                "el")
-                         (file-name-sans-extension init-file-name)
-                       init-file-name)
-                     'noerror 'nomessage))
+                ;; 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)))
 
               (when (and (eq user-init-file t) alternate-filename-function)
                 (let ((alt-file (funcall alternate-filename-function)))
@@ -1053,7 +1059,11 @@ 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)))
-                  (load alt-file 'noerror 'nomessage)))
+                  (let ((debug-ignored-errors
+                         (if (and init-file-debug (not noninteractive))
+                             nil
+                           debug-ignored-errors)))
+                    (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
@@ -1092,7 +1102,11 @@ 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))
+              (let ((inhibit-startup-screen nil)
+                    (debug-ignored-errors
+                     (if (and init-file-debug (not noninteractive))
+                         nil
+                       debug-ignored-errors)))
                 (load "default" 'noerror 'nomessage))))
         (error
          (display-warning



reply via email to

[Prev in Thread] Current Thread [Next in Thread]