Load customizations directy during initialization time

Loading customizations in `db/run-init' may cause accidental overwrites of
custom settings when loading variables changes and saves values of other
customizable variables.  For example, loading `custom-enabled-themes' may update
`custom-safe-themes', and if this loading happens after initialization time,
this update is directly written to custom.el via a call to
`customize-push-and-save', overwriting all remaining, i.e. not loaded, custom
settings.  Loading custom settings during initialzation time prevents this
behavior.

Note that this change causes some packages to load during initialization time
that previously had been loaded only afterwards.
This commit is contained in:
Daniel - 2019-12-20 17:05:20 +01:00
parent fb5b2224fe
commit 96fd57bb90
No known key found for this signature in database
GPG Key ID: 1C7071A75BB72D64
2 changed files with 14 additions and 13 deletions

View File

@ -77,14 +77,14 @@ data (like customization) is outsourced into a separate directory named
work nevertheless, even without these private files. work nevertheless, even without these private files.
The main =init.el= file consists mostly of variable assignments, =use-package= The main =init.el= file consists mostly of variable assignments, =use-package=
declarations, and initializing the =package= subsystem. The main lifting is declarations, initializing the =package= subsystem, and loading customizations.
done by the =db/run-init= function, which is attached to the =after-init-hook= The main lifting is done by the =db/run-init= function, which is attached to the
in =init.el=. This way, all necessary local hooks and autoloads are set up by =after-init-hook= in =init.el=. This way, all necessary local hooks and
=init.el=, and the =db/run-init= functions only activates a (minimal?) autoloads are set up by =init.el=, and the =db/run-init= functions only
configurations needed for every session, including modes, keybindings, hydras, activates a (minimal?) configurations needed for every session, including
and global hooks. It also imports some environment variables and starts the modes, keybindings, hydras, and global hooks. It also imports some environment
server when running under windows. Any additional packages are only loaded when variables and starts the server when running under windows. Any additional
required. packages are only loaded when required.
Lastly, ~db/run-init~ loads all files contained in ~db/after-init-load-files~, Lastly, ~db/run-init~ loads all files contained in ~db/after-init-load-files~,
in that order. in that order.

11
init.el
View File

@ -66,11 +66,6 @@
(message "Running main initialization ...") (message "Running main initialization ...")
;; Load customizations
(when (file-exists-p custom-file)
(load-file custom-file))
;; Activate modes (builtin) ;; Activate modes (builtin)
(show-paren-mode 1) (show-paren-mode 1)
@ -2818,4 +2813,10 @@ With given ARG, display files in `db/important-document-path."
:diminish yas-minor-mode :diminish yas-minor-mode
:config (yas-reload-all)) :config (yas-reload-all))
;; * Load customizations
(when (file-exists-p custom-file)
(load-file custom-file))
;;; init.el ends here ;;; init.el ends here