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: Sat, 16 Jan 2021 09:08:12 +0200

> From: Stefan Monnier <[email-masked]>
> Cc: [email-masked],  [email-masked],  [email-masked]
> Date: Fri, 15 Jan 2021 17:19:33 -0500
> 
> > In a nutshell: record the startup phase for each variable in a plits
> > of its symbol.
> 
> Ah, so instead of just
> 
>     :initialize #'custom-initialize-delay
> 
> we'd have something like
> 
>     :initialize (custom-initialize-delay 'before-early-init)
> or
>     :initialize (custom-initialize-delay 'after-early-init)
> 
> Where `custom-initialize-delay` becomes something like
> 
>     (defun custom-initialize-delay (phase)
>       (lambda (symbol)
>         (push (cons symbol phase) custom-delayed-init-variables)))
> 
> depending on when we want the initialization to take place?

Yes, something like that.  Also 'after-init-file, 'after-term-setup,
'after-window-setup -- per the startup phases we already have.

> >> Also, would it currently result in a behavior that's different from:
> >>
> >> - initialize all delayed vars before early-init
> >> - re-initialize blink-cursor-mode after early-init
> >>
> >> ?
> >
> > With my proposal, blink-cursor-mode will not be mentioned by name in
> > any of these places.
> 
> Yes, of course, but I'm asking whether the resulting *behavior* you're
> after is this one.

The current result will be the same, yes.  But I think it's more
future-proof, the only thing that needs to be figured out is the
earliest startup phase after which a given variable needs to be
initialized.