As you might have guessed, writing my Emacs configuration in this style leads me to need to reload the system often to ensure that things are in the correct order as I make new drafts and go back to fix mistakes. So far I have been handling this by manually calling
M-x kill-emacs and running the program anew. Now that we have packages available, restart-emacs gives us a better way:
(defun mak::restart-emacs-or-release-file () (interactive) (if server-buffer-clients (server-edit) (when (y-or-n-p "Restart Emacs? ") (restart-emacs '("--debug-init"))))) (use-package restart-emacs :ensure t :pin melpa-stable :bind ("C-x C-c" . mak::restart-emacs-or-release-file))
On Day 3 we changed confirmations to
y-or-n-p, and on Day 4 we removed the keybinding that exited Emacs. Now we change our setup to ensure that if we hit
C-x C-c Emacs will restart itself, unless it is within a buffer (and frame for my configuration) created by emacsclient, in which case it will return from emacsclient.