refactor: only process --init-directory w/o --profile

Using them both makes no sense, so don't process --init-directory if
--profile is given.
This commit is contained in:
Henrik Lissner 2022-09-17 20:54:28 +02:00
parent 21f2ad58b5
commit b8cca048c4
No known key found for this signature in database
GPG key ID: B60957CA074D39A3

View file

@ -51,28 +51,27 @@
;; notable saving in startup time. This let-binding is just a stopgap though,
;; a more complete version of this optimization can be found in lisp/doom.el.
(let (file-name-handler-alist)
;; FEAT: First, we process --init-directory and --profile to detect what
;; `user-emacs-directory' to load from. I avoid using
;; `command-switch-alist' to process --profile and --init-directory because
;; it is processed too late to change `user-emacs-directory' in time.
;; REVIEW: Backported from Emacs 29. Remove when 28 support is dropped.
(let ((initdir (or (cadr (member "--init-directory" command-line-args))
(getenv-internal "EMACSDIR"))))
(if (null initdir)
;; FIX: If we've been loaded directly (via 'emacs -batch -l
;; early-init.el') or by a doomscript (like bin/doom), and Doom is
;; in a non-standard location (and/or Chemacs is used), then
;; `user-emacs-directory' will be wrong.
(when noninteractive
(setq user-emacs-directory
(file-name-directory (file-truename load-file-name))))
;; FIX: Discard the switch to prevent "invalid option" errors later.
(push (cons "--init-directory" (lambda (_) (pop argv))) command-switch-alist)
(setq user-emacs-directory (expand-file-name initdir))))
;; Initialize a known profile, if requested.
;; First, we process --init-directory and --profile to detect what
;; `user-emacs-directory' to load from. I avoid using `command-switch-alist'
;; to process --profile and --init-directory because it is processed too late
;; to change `user-emacs-directory' in time.
(let ((profile (or (cadr (member "--profile" command-line-args))
(getenv-internal "DOOMPROFILE"))))
(when profile
(if (null profile)
;; REVIEW: Backported from Emacs 29. Remove when 28 support is dropped.
(let ((init-dir (or (cadr (member "--init-directory" command-line-args))
(getenv-internal "EMACSDIR"))))
(if (null init-dir)
;; FIX: If we've been loaded directly (via 'emacs -batch -l
;; early-init.el') or by a doomscript (like bin/doom), and Doom
;; is in a non-standard location (and/or Chemacs is used), then
;; `user-emacs-directory' will be wrong.
(when noninteractive
(setq user-emacs-directory
(file-name-directory (file-truename load-file-name))))
;; FIX: To prevent "invalid option" errors later.
(push (cons "--init-directory" (lambda (_) (pop argv))) command-switch-alist)
(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