Subject: bug#30994: bug#45857: 28.0.50; Not possible to set package-user-dir in early-init.el

From: Eli Zaretskii <[email-masked]>
Date: Thu, 14 Jan 2021 20:40:45 +0200

> From: Stefan Monnier <[email-masked]>
> Date: Thu, 14 Jan 2021 13:20:53 -0500
> Cc: [email-masked], [email-masked]
> 
> >> the package-user-dir defcustom gets the custom-initialize-delay
> >> intializer.  At least for me, this overrides any setting of
> >> package-user-dir that is done in early-init.el.
> > Oh, I see you're right, and I think this issue is wider than
> > `package-user-dir` since it affects all the other vars that use
> > `custom-initialize-delay`.
> 
> Back in June 2018, Eli wrote:
> > I can see several ways out of this:
> > 
> >   . Move the call to custom-reevaluate-setting back where it was, and
> >     instead call custom-reevaluate-setting in that earlier place only
> >     for Info-default-directory-list, which was the original reason why
> >     the call was moved;
> >   . Add a call to custom-reevaluate-setting for blink-cursor-mode
> >     where the window-system is already set up;
> >   . Call custom-reevaluate-setting for all the delayed-init variables
> >     twice: once where we do that now, and again where we did that
> >     before the above commit;
> >   . Introduce yet another variable similar to
> >     custom-delayed-init-variables, but separate from it, and put on
> >     it all the delayed-init variables that need the window-system to
> >     be set up, leaving all the rest in custom-delayed-init-variables.
> 
> We ended up going with the 3rd option, but this is the source of the
> problem here.  I think we should change to option 2 for now and plan on
> fixing it for good by removing this exception, i.e. by making
> the default value of `blink-cursor-mode` be t.
> 
> More concretely, I suggest the patch below,

Is there any place where all these complications are described, so
that people (and we ourselves) could have a complete, comprehensive
overview of this stuff and the various problems it needs to solve?  If
not, how about taking this opportunity to describe that?  Because
otherwise these incidents will keep happening.

FWIW, I'm not sure I have a good understand how is this old issue
related to the new one.