This is my config file. As you can see, on line 351, there is:

;; Update my Emacs' packages every week
(use-package auto-package-update
    (auto-package-update-interval 7)
    (auto-package-update-prompt-before-update t)
    (auto-package-update-hide-results t)
    (auto-package-update-at-time "09:00"))

After starting Emacs, the mini-buffer asked me about updating the packages earlier today. I chose "yes".

Usually, things are updated and work fine. However, this was not the case today.

After everything was processed, Emacs indicated the upgrade process went fine. So, I decided to re-start Emacs. And now Emacs was loading with the following error messages:

Error (use-package): doom-modeline/:init: Symbol’s function definition is void: compat--inhibit-prefixed
Error (use-package): doom-modeline/:catch: Symbol’s function definition is void: compat--inhibit-prefixed

Indeed, the modeline was not working. After a bit, I realized that doom-mode was not the only problem.

When I try to use Magit via command magit-status, I get:

byte-code: Symbol’s function definition is void: compat--inhibit-prefixed

I managed to solve the error message related to the doom-modeline by simply commenting the lines on my config "use-packaging" it:

;; (use-package doom-modeline
;;   :init (doom-modeline-mode 1)
;;   :custom ((doom-modeline-height 15)))

The error message was out when starting Emacs. But, for obvious reason, it is still not working after being commented out. I can live without this package.

The magit problem persists. And this is really annoying because I can't live without this package.

How should I proceed?

Any suggestion on how to debug the problem?

Is there a way to downgrade the last changes generated by auto-package-update?

Any clue on how to solve things?

2 Answers 2

byte-code: Symbol’s function definition is void: compat--inhibit-prefixed

If this is the error, then running M-x pacakge-recompile compat RET (if you are on Emacs 29) or M-x package-reinstall compat RET. Fundamentally the issue appears to be that some files were not compiled in the correct order, and the macro compat--inhibit-prefixed was not recognized as such in some other file.

(Also a friendly reminder to report issues like these to their respective issue trackers. That way the package author is directly notified and can investigate the issue more efficiently. Use C-h P to find out what who maintains a package/what dependencies there are, and M-x toggle-debug-on-error or invoke Emacs with --debug-init to create a backtrace.)


I decided to try re-compiling everything, all packages.

Thus, I typed M-: to eval an expression and then inserted: (byte-recompile-directory package-user-dir nil 'force).

After re-starting Emacs, both packages are working fine again.

This old question from StackOverflow helped me out.

  • 1
    This is undoubtedly the best first step (and if you are lucky, the only step) to get things working again.
    – NickD
    Commented Jul 18, 2022 at 17:50

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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