I added the following at the end of my ~/.spacemacs file:

(use-package flycheck
  :defer t
  :init (global-flycheck-mode))

When I do this, I get Spacemacs encountered an error while loading your '/home/brandon/.spacemacs' file.

How can I debug this error?

Also, is there a way to get more descriptive errors?

Answer to error sub-question in comments: use emacs --debug-init.


The output I get when using --debug-init is:

Debugger entered--Lisp error: (void-function use-package)
  (use-package flycheck :defer t :init (global-flycheck-mode))
  eval-buffer(#<buffer  *load*-76993> nil "/home/brandon/.spacemacs" nil t)  ; Reading at buffer position 18437
  load-with-code-conversion("/home/brandon/.spacemacs" "/home/brandon/.spacemacs" nil nil)
  (condition-case err (load dotspacemacs) ((debug error) (message "Error loading .spacemacs: %S" err) nil))
  (if (condition-case err (load dotspacemacs) ((debug error) (message "Error loading .spacemacs: %S" err) nil)) nil (dotspacemacs/safe-load))
  (if (file-exists-p dotspacemacs) (if (condition-case err (load dotspacemacs) ((debug error) (message "Error loading .spacemacs: %S" err) nil)) nil (dotspacemacs/safe-load)))
  (let ((dotspacemacs (dotspacemacs/location))) (if (file-exists-p dotspacemacs) (if (condition-case err (load dotspacemacs) ((debug error) (message "Error loading .spacemacs: %S" err) nil)) nil (dotspacemacs/safe-load))))
  (if (not (version<= spacemacs-emacs-min-version emacs-version)) (error (concat "Your version of Emacs (%s) is too old. " "Spacemacs requires Emacs version %s or above.") emacs-version spacemacs-emacs-min-version) (load-file (concat (file-name-directory load-file-name) "core/core-load-paths.el")) (require 'core-spacemacs) (spacemacs/init) (configuration-layer/sync) (spacemacs-buffer/display-startup-note) (spacemacs/setup-startup-hook) (require 'server) (if (server-running-p) nil (server-start)))
  eval-buffer(#<buffer  *load*> nil "/home/brandon/.emacs.d/init.el" nil t)  ; Reading at buffer position 1264
  load-with-code-conversion("/home/brandon/.emacs.d/init.el" "/home/brandon/.emacs.d/init.el" t t)
  load("/home/brandon/.emacs.d/init" t t)
  #f(compiled-function () #<bytecode 0x25d5e9>)()

Tentative Solution

After looking around a bit more, I realized my config was in the wrong part of the ~/.spacemacs file. This is probably not the best place for it, but I ended up adding the following in my (defun dotspacemacs/user-config () ... ).

(use-package flycheck
  :ensure t
  :init (global-flycheck-mode))

Also, I now note that flycheck complains that the line with (use-package flycheck has a reference to free variableflycheck' (emacs-lisp)` ... hmm. But, a step in the right direciton.

  • 1
    Try the debugging suggestions here: github.com/syl20bnr/spacemacs/wiki/… In particular, try starting spacemacs from the command line with the --debug-init option to get a backtrace. – MTS Jan 16 '19 at 21:33
  • Thanks for the wiki link, things are working now, though still not sure I've gotten the best approach. Seems like I should try to understand layers more (as well as emacs lisp). – bbarker Jan 17 '19 at 16:09
  • In use-package the :init keyword is for code to be executed before the package is loaded. We can assume global-flycheck-mode is defined in the package, if it is being found, it is probably for some other reason. So, you should probably move that to :config and remove :defer if I understand what you want correctly. But your error message complains about use-package being undefined. Have you loaded use-package itself in your init file? – gusbrs Jan 19 '19 at 15:30

Your Answer

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

Browse other questions tagged or ask your own question.