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

From: Phillip Lord <[email-masked]>
Date: Fri, 22 Jan 2021 16:08:27 +0000

I am still getting start up package.el oddities. While I can reset
package-user-dir in early-init.el now and it is correct when init.el
starts up, my package-initialize is raising an error from auctex in my
case.

    Warning (initialization): An error occurred while loading ‘/home/phillord/.emacs.d/init.el’:

    File is missing: Cannot open load file, No such file or directory, tex-site

package-user-dir looks right

    package-user-dir is a variable defined in ‘package.el’.
    Its value is "~/.emacs.d/elpa/28.0"
    Original value was "~/.emacs.d/elpa"

but load-path is not correct, having been set up for the default
location of package-user-dir

load-path is a variable defined in ‘C source code’.
Its value is
("/home/phillord/.emacs.d/elpa/auctex-13.0.3" "/home/phillord/.emacs.d/elpa/cider-1.0.0" "/home/phillord/.emacs.d/elpa/clojure-mode-5.12.0"

.....

Phil

Stefan Monnier <[email-masked]> writes:

>> Maybe some time in the future this need will re-appear at which point we
>> may want to introduce some fancier system to control which var is
>> initialized when, but I think for now the patch below is
>> a better solution.
>
> Pushed,
>
>
>         Stefan
>
>>
>>         Stefan
>>
>>
>> 2021-01-15  Stefan Monnier  <[email-masked]>
>>
>>     * lisp/startup.el: Fix bug#45857, bug#30994, and bug#45913.
>>
>>     (command-line): Don't re-evaluate the `custom-delayed-init-variables`
>>     a second time after reading the `early-init.el` file.
>>     (x-apply-session-resources): Set `blink-cursor-mode` rather than
>>     `no-blinking-cursor`.
>>
>>     * lisp/frame.el (blink-cursor-start): Turn `blink-cursor-mode` off
>>     if `blink-cursor-mode` was set to nil.
>>     (blink-cursor-mode): Default to it being enabled regardless of
>>     `window-system`.
>>
>>
>> diff --git a/lisp/frame.el b/lisp/frame.el
>> index e2d7f21a49..06aab269dd 100644
>> --- a/lisp/frame.el
>> +++ b/lisp/frame.el
>> @@ -2552,13 +2552,15 @@ blink-cursor-start
>>  This starts the timer `blink-cursor-timer', which makes the cursor blink
>>  if appropriate.  It also arranges to cancel that timer when the next
>>  command starts, by installing a pre-command hook."
>> -  (when (null blink-cursor-timer)
>> +  (cond
>> +   ((null blink-cursor-mode) (blink-cursor-mode -1))
>> +   ((null blink-cursor-timer)
>>      ;; Set up the timer first, so that if this signals an error,
>>      ;; blink-cursor-end is not added to pre-command-hook.
>>      (setq blink-cursor-blinks-done 1)
>>      (blink-cursor--start-timer)
>>      (add-hook 'pre-command-hook #'blink-cursor-end)
>> -    (internal-show-cursor nil nil)))
>> +    (internal-show-cursor nil nil))))
>>  
>>  (defun blink-cursor-timer-function ()
>>    "Timer function of timer `blink-cursor-timer'."
>> @@ -2637,9 +2639,8 @@ blink-cursor-mode
>>  terminals, cursor blinking is controlled by the terminal."
>>    :init-value (not (or noninteractive
>>  		       no-blinking-cursor
>> -		       (eq system-type 'ms-dos)
>> -		       (not (display-blink-cursor-p))))
>> -  :initialize 'custom-initialize-delay
>> +		       (eq system-type 'ms-dos)))
>> +  :initialize #'custom-initialize-delay
>>    :group 'cursor
>>    :global t
>>    (blink-cursor-suspend)
>> diff --git a/lisp/startup.el b/lisp/startup.el
>> index 552802a38d..7011fbf458 100644
>> --- a/lisp/startup.el
>> +++ b/lisp/startup.el
>> @@ -1172,6 +1172,7 @@ command-line
>>          ;; are dependencies between them.
>>          (nreverse custom-delayed-init-variables))
>>    (mapc #'custom-reevaluate-setting custom-delayed-init-variables)
>> +  (setq custom-delayed-init-variables nil)
>>  
>>    ;; Warn for invalid user name.
>>    (when init-file-user
>> @@ -1301,12 +1302,6 @@ command-line
>>      (startup--setup-quote-display)
>>      (setq internal--text-quoting-flag t))
>>  
>> -  ;; Re-evaluate again the predefined variables whose initial value
>> -  ;; depends on the runtime context, in case some of them depend on
>> -  ;; the window-system features.  Example: blink-cursor-mode.
>> -  (mapc #'custom-reevaluate-setting custom-delayed-init-variables)
>> -  (setq custom-delayed-init-variables nil)
>> -
>>    (normal-erase-is-backspace-setup-frame)
>>  
>>    ;; Register default TTY colors for the case the terminal hasn't a
>> @@ -1487,13 +1482,13 @@ x-apply-session-resources
>>  opens a graphical frame.
>>  
>>  This can set the values of `menu-bar-mode', `tool-bar-mode',
>> -`tab-bar-mode', and `no-blinking-cursor', as well as the `cursor' face.
>> +`tab-bar-mode', and `blink-cursor-mode', as well as the `cursor' face.
>>  Changed settings will be marked as \"CHANGED outside of Customize\"."
>>    (let ((no-vals  '("no" "off" "false" "0"))
>>  	(settings '(("menuBar" "MenuBar" menu-bar-mode nil)
>>  		    ("toolBar" "ToolBar" tool-bar-mode nil)
>>  		    ("scrollBar" "ScrollBar" scroll-bar-mode nil)
>> -		    ("cursorBlink" "CursorBlink" no-blinking-cursor t))))
>> +		    ("cursorBlink" "CursorBlink" blink-cursor-mode nil))))
>>      (dolist (x settings)
>>        (if (member (x-get-resource (nth 0 x) (nth 1 x)) no-vals)
>>  	  (set (nth 2 x) (nth 3 x)))))