Context: I just updated Emacs via homebrew; I don't remember the steps I followed to get Emacs to run via daemon originally, but since the update it doesn't seem to be using it anymore (i.e. quitting and rerunning Emacs takes several seconds, loading a lot of stuff). I added the Emacs plugin to zsh, which basically runs Emacs using emacsclient, and this works -- but now it doesn't seem to load my init file properly (located in .emacs.d/init.el)


  1. the final command I have in init.el (find-file ..) that I use to always start on a certain org-mode page, is ignored in place of starting with only the *scratch* buffer
  2. various variables set in the init file are done so correctly
  3. any changes to init I've attempted to make since the Emacs update aren't recognized either, as if it is operating on a snapshot of the init file from before the update

Not sure how to run --debug-init under emacsclient, but if I disable it and run emacs --debug-init no errors come up.

How do I go about investigating/fixing this? Thanks in advance!

Edit: original issue 4) "Wrong type argument: stringp, nil error occurs when attempting to save a change to a variable via the customize option buffer" -- ended up being unrelated to the above; apparently has to do with evil-mode escaping after editing a value field under insert mode in a Customize Option buffer while still in the value field (but moving outside of the field before escaping insert mode allows for successful apply and save)


emacs loads your init file. This is one of the potentially time-consuming parts of starting Emacs.

emacsclient just connects to a running Emacs server. It doesn't load your init file, because it's not starting emacs. This is one of the reasons why it's fast.

To make Emacs see your changes you can either evaluate the elisp directly, or you can kill the server and start a new one.

  • Thank you! I thought I was killing the server with C-x C-c and then realized my mistake. The remaining mystery is why does *scratch* get loaded after init? – Bu ZD Aug 12 '20 at 3:57
  • Without going through the code, I'm not certain. C-h v initial-buffer-choice might be involved in practice, and that doc includes a note "If you use ‘emacsclient’ with no target file, then it obeys any string or function value that this variable has.", but that doesn't seem to strictly apply to your case. It might simply be that, by default, *scratch* is first in the list. – phils Aug 12 '20 at 4:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.