feat(cli): introduce DOOMPROFILELOAD{FILE,PATH} envvars
- Adds $DOOMPROFILELOADFILE: Controls where to read and write the profile loader. Changing this may be helpful for users on nix/guix, who have deployed Doom to a read-only location. This sets `doom-profile-load-file`. - Changed profile load file's default location (used to be $EMACSDIR/profiles/init.el, is now $EMACSDIR/profiles/load.el). The gitignore was updated to reflect this. - Adds $DOOMPROFILELOADPATH: A colon-delimited list of profile config files and directories (semi-colon on Windows) which dictate what Doom reads in order to discover your profiles. Config files are required to have an *.el extension. This sets `doom-profile-load-path`. - Changes the nomenclature around this loader script. I used to refer to it as the profile bootstrapper. I'll now refer to it as the profile load file, and I've renamed `doom-profiles-bootstrap-file` to `doom-profile-load-file` to reflect this. - The variables `doom-profile-dirs` and `doom-profile-config-files` were merged into doom-profile-load-path. - Both envvars have also been documented in `doom help` (and $DOOMPROFILE's has been updated). Ref: #6794
This commit is contained in:
parent
7fc0cbff5e
commit
f99cf0ccc8
5 changed files with 76 additions and 51 deletions
|
@ -74,14 +74,19 @@
|
|||
(setq user-emacs-directory (expand-file-name init-dir))))
|
||||
;; FIX: Discard the switch to prevent "invalid option" errors later.
|
||||
(push (cons "--profile" (lambda (_) (pop argv))) command-switch-alist)
|
||||
;; Running 'doom sync' will (re)generate a lightweight profile
|
||||
;; bootstrapper in $EMACSDIR/profiles/init.el, after reading
|
||||
;; $EMACSDIR/profiles.el, $DOOMDIR/profiles,
|
||||
;; $XDG_CONFIG_HOME/doom-profiles.el, and ~/.doom-profiles.el. All it
|
||||
;; needs is for `$DOOMPROFILE' to be set.
|
||||
;; Running 'doom sync' or 'doom profile sync' (re)generates a light
|
||||
;; profile loader in $EMACSDIR/profiles/load.el (or
|
||||
;; $DOOMPROFILELOADFILE), after reading `doom-profile-load-path'. This
|
||||
;; loader requires `$DOOMPROFILE' be set to function.
|
||||
(setenv "DOOMPROFILE" profile)
|
||||
(or (load (expand-file-name (format "profiles/init.%d.elc" emacs-major-version)
|
||||
user-emacs-directory)
|
||||
(or (load (expand-file-name
|
||||
(format (let ((lfile (getenv-internal "DOOMPROFILELOADFILE")))
|
||||
(if lfile
|
||||
(concat (string-remove-suffix ".el" lfile)
|
||||
".%d.elc")
|
||||
"profiles/load.%d.elc"))
|
||||
emacs-major-version)
|
||||
user-emacs-directory)
|
||||
'noerror (not init-file-debug) 'nosuffix)
|
||||
(user-error "Profiles not initialized yet; run 'doom sync' first"))))
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue