refactor: introduce doom-context
Introduces a system to announce what execution contexts are active, so I can react appropriately, emit more helpful logs/warnings in the case of issues, and throw more meaningful errors. * bin/doom: load module CLIs in the 'modules' context. * lisp/cli/doctor.el: load package files in 'packages' context. * lisp/doom-cli.el: - (doom-before-init-hook, doom-after-init-hook): trigger hooks at the correct time. This may increase startup load time, as the benchmark now times more of the startup process. - (doom-cli-execute, doom-cli-context-execute, doom-cli-context-restore, doom-cli-context-parse, doom-cli--output-benchmark-h, doom-cli-call, doom-cli--restart, doom-cli-load, run!): remove redundant context prefix in debug logs, it's now redundant with doom-context, which doom-log now prefixes them with. * lisp/doom-lib.el (doom-log): prefix doom-context to doom-log output, unless it starts with :. * lisp/doom-packages.el (package!, doom-packages--read): throw error if not used in a packages.el file or in the context of our package manager. * lisp/doom-profiles.el (doom-profile--generate-init-vars, doom-profile--generate-load-modules): use modules doom-context instead of doom-init-time to detect startup. * lisp/doom-start.el (doom-load-packages-incrementally-h): move function closer to end of doom-after-init-hook. * lisp/doom.el: - (doom-before-init-hook, doom--set-initial-values-h, doom--begin-init-h): rename doom--set-initial-values-h to doom--begin-init-h and ensure it runs as late in doom-before-init-hook as possible, as that is the point where Doom's "initialization" formally begins. - (doom-after-init-hook): don't trigger at the end of command-line-1 in non-interactive sessions. This will be triggered manually in doom-cli.el's run!. * lisp/lib/config.el (doom/reload, doom/reload-autoloads, doom/reload-env): use 'reload' context for reload commands. * modules/lang/emacs-lisp/autoload.el (+emacs-lisp-eval): use 'eval' context. * modules/lang/org/config.el: remove doom-reloading-p; check for 'reload' doom context instead.
This commit is contained in:
parent
1c4217aa27
commit
f9201eb218
12 changed files with 290 additions and 210 deletions
|
@ -17,6 +17,10 @@
|
|||
;;
|
||||
;;; Logging
|
||||
|
||||
(defun doom--log (text)
|
||||
(let ((inhibit-message (not init-file-debug)))
|
||||
(message "%s" (propertize text 'face 'font-lock-doc-face))))
|
||||
|
||||
(defmacro doom-log (output &rest args)
|
||||
"Log a message in *Messages*.
|
||||
|
||||
|
@ -25,15 +29,17 @@ function to prevent the potentially expensive evaluation of its arguments when
|
|||
debug mode is off."
|
||||
(declare (debug t))
|
||||
`(when (or init-file-debug noninteractive)
|
||||
(let ((inhibit-message (not init-file-debug)))
|
||||
(message
|
||||
"%s" (propertize
|
||||
;; Byte compiler: don't complain about more args than %-sequences.
|
||||
(with-no-warnings
|
||||
(format (concat "* %.06f: " ,output)
|
||||
(float-time (time-subtract (current-time) before-init-time))
|
||||
,@args))
|
||||
'face 'font-lock-doc-face)))))
|
||||
(doom--log
|
||||
(with-no-warnings ; suppress 'more args than %-sequences' warning
|
||||
(let* ((output ,output)
|
||||
(absolute? (string-prefix-p ":" output)))
|
||||
(format (concat "* %.06f%s" (if absolute? output (concat ":" output)))
|
||||
(float-time (time-subtract (current-time) before-init-time))
|
||||
(let ((context (remq t (reverse doom-context))))
|
||||
(if (and context (not absolute?))
|
||||
(concat "::" (mapconcat #'symbol-name context ":"))
|
||||
""))
|
||||
,@args))))))
|
||||
|
||||
|
||||
;;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue