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
9
bin/doom
9
bin/doom
|
@ -304,10 +304,11 @@ SEE ALSO:
|
|||
|
||||
(let ((cli-file "cli.el"))
|
||||
(defcli-group! "Module commands"
|
||||
(dolist (key (doom-module-list))
|
||||
(when-let (path (doom-module-locate-path (car key) (cdr key) cli-file))
|
||||
(defcli-group! :prefix (if (cdr key) (format "+%s" (cdr key)))
|
||||
(doom-load (file-name-sans-extension path)))))))
|
||||
(doom-context-with 'modules
|
||||
(dolist (key (doom-module-list))
|
||||
(when-let (path (doom-module-locate-path (car key) (cdr key) cli-file))
|
||||
(defcli-group! :prefix (if (cdr key) (format "+%s" (cdr key)))
|
||||
(doom-load (file-name-sans-extension path))))))))
|
||||
|
||||
;; Allow per-project Doom settings in .doom files.
|
||||
(let (doomrc)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue