Subject: bug#78304: 31.0.50; Support --early-eval on the command line

From: Eli Zaretskii <[email-masked]>
Date: Thu, 08 May 2025 22:01:00 +0300

> From: Spencer Baugh <[email-masked]>
> Cc: [email-masked]
> Date: Thu, 08 May 2025 12:26:24 -0400
> 
> The general use case is configuring things which need to be set in
> early-init.el while running "emacs -q".
> 
> Two concrete use cases I have that are prompting this idea:
> 
> - Working with the new load-path-filter-function variable discussed on
>   emacs-devel.  Since it speeds up all subsequent loads, it needs to be
>   set at early-init.el time to have maximum effect, but I want to also
>   be able to use it with emacs -q.
> 
> - Context: I'm developing some scripts to run Emacs in a simple
>   reduced-functionality mode, which provide access to just one buffer
>   running in a specific major mode, with the goal of making Emacs
>   features accessible to users who don't currently use Emacs.  For
>   example, vc-dir is generally useful, so a script to open Emacs running
>   vc-dir on its own.  (These scripts are similar to things like
>   https://github.com/maio/smagit and
>   https://github.com/alphapapa/magit.sh )
> 
>   These scripts run with -q, but I need to be able to configure things
>   about the initial frame, which can only be done with early-init.el.
> 
> The workaround that occurs to me is to run emacs without -q, but instead
> with an --init-directory that contains an early-init.el which does
> whatever configurations I want, and then at the end does
> 
> (setq init-file-user nil
>       user-emacs-directory (startup--xdg-or-homedot startup--xdg-config-home-emacs nil))
> 
> to obtain the same behavior as -q, and also reset user-emacs-directory
> back to its normal value.  Of course, this is hacky and quite fragile...

Why cannot you do whatever you need in the site-init file?