diff options
author | Richard M. Stallman <rms@gnu.org> | 1993-12-31 03:45:38 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 1993-12-31 03:45:38 +0000 |
commit | f0a40c2c493ea6ba08cec85fcf491ebdc3d36ddc (patch) | |
tree | 4edbd2f39e9d99cbddc88b45ac72bc8483978b84 /lisp/startup.el | |
parent | 682a3ce37320879f6a0365ce293c3438588ae324 (diff) | |
download | emacs-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.el | 69 |
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) |