Skip to content

Commit

Permalink
custom setting: don't write to dotfile before loading all of them
Browse files Browse the repository at this point in the history
Fixes a bug where saving a custom variable (e.g. package-selected-packages)
before reading the custom settings from dotspacemacs/emacs-custom-settings could
overwrite the stored settings.
  • Loading branch information
bmag authored and syl20bnr committed Feb 18, 2019
1 parent f6a42ef commit 5eff620
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 4 deletions.
14 changes: 10 additions & 4 deletions core/core-custom-settings.el
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,13 @@
".custom-settings"))

(defun spacemacs/initialize-custom-file ()
"Initialize the custom file."
"Initialize the custom file.
Does not initialize writing the custom file into the dotfile. To
complete that part see `spacemacs/initialize-custom-file-sync'."
;; setup auto-rewrite of custom settings only if custom-file
;; has not been set by the user
(when (null custom-file)
(setq custom-file spacemacs--custom-file)
(advice-add 'custom-save-all :after
#'spacemacs/write-custom-settings-to-dotfile))
(setq custom-file spacemacs--custom-file))
;; initialize the cache file contents
(unless (or (not (string-equal custom-file spacemacs--custom-file))
(file-exists-p spacemacs--custom-file))
Expand All @@ -32,6 +32,12 @@
;; function `dotspacemacs/emacs-custom-settings'.
;; Do not alter this file, use Emacs customize interface instead.\n\n")))))

(defun spacemacs/initialize-custom-file-sync ()
"Initialize syncing of the custom file to the dotfile."
(when (string-equal custom-file spacemacs--custom-file)
(advice-add 'custom-save-all :after
#'spacemacs/write-custom-settings-to-dotfile)))

(defun spacemacs//delete-emacs-custom-settings ()
"Delete function `dotspacemacs/emacs-custom-settings' from dotfile.
Expand Down
3 changes: 3 additions & 0 deletions core/core-spacemacs.el
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,9 @@ Note: the hooked function is not executed when in dumped mode."
"Calling dotfile user config...")
(dotspacemacs|call-func dotspacemacs/emacs-custom-settings
"Calling dotfile Emacs custom settings...")
;; don't write custom settings into the dotfile before loading them,
;; otherwise https://github.com/syl20bnr/spacemacs/issues/10504 happens
(spacemacs/initialize-custom-file-sync)
(run-hooks 'spacemacs-post-user-config-hook)
(setq spacemacs-post-user-config-hook-run t)
(when (fboundp dotspacemacs-scratch-mode)
Expand Down

0 comments on commit 5eff620

Please sign in to comment.