summaryrefslogtreecommitdiff
path: root/lisp/startup.el
diff options
context:
space:
mode:
authorRichard M. Stallman <rms@gnu.org>1993-12-31 03:45:38 +0000
committerRichard M. Stallman <rms@gnu.org>1993-12-31 03:45:38 +0000
commitf0a40c2c493ea6ba08cec85fcf491ebdc3d36ddc (patch)
tree4edbd2f39e9d99cbddc88b45ac72bc8483978b84 /lisp/startup.el
parent682a3ce37320879f6a0365ce293c3438588ae324 (diff)
downloademacs-f0a40c2c493ea6ba08cec85fcf491ebdc3d36ddc.tar.gz
(command-line): In most cases, if init file sets
debug-on-error, leave it set that way.
Diffstat (limited to 'lisp/startup.el')
-rw-r--r--lisp/startup.el69
1 files changed, 40 insertions, 29 deletions
diff --git a/lisp/startup.el b/lisp/startup.el
index 7ba3a017b73..ea5a1651d51 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -252,35 +252,46 @@ this variable, if non-nil; 2. `~/.emacs'; 3. `default.el'.")
(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)