In my config file, I set properties for some faces used by my setup of Doom Emacs. These properties are promptly ignored when Emacs is loaded, and what I see is how things were before. I'm guessing that Doom overwrites my changes—however, seeing as it's rather big, I'd prefer to not leaf through its code in search of these faces, and instead have Emacs tell me when they're changed like it can do with variables via debug-on-variable-change. But, faces aren't variables, debug-on-variable-change doesn't work on them, and I don't see a debug-on-face-change.

Is there a ‘watch for changes’ facility for faces?

  • To be clear, I think your question is whether Emacs has a face-watchers functionality. The answer is no. If your question is instead how to debug, to find what is altering (or not altering) some face, then please edit your question to make that clear.
    – Drew
    Mar 9, 2023 at 16:03
  • To debug the changes, start by using emacs -Q (no init file). Then bisect your init file (1/2, 1/4, 1/8,...) to locate the problem.
    – Drew
    Mar 9, 2023 at 16:05
  • @Drew Your guess in the first comment is right—so you might as well post it as an answer. As for bisecting the init file—as I mentioned, I'm using Doom which has quite a lot of code and is modular on top of that.
    – aaa
    Mar 18, 2023 at 7:40
  • Done....................
    – Drew
    Mar 18, 2023 at 15:25
  • Bisecting is still likely the way to go - it's a binary search, so it picks up speed. You can also try advising functions or entering them using M-x debug-on-entry, or set breakpoints to the debugger anywhere you like, by inserting (debug) where you want to enter the debugger.
    – Drew
    Mar 18, 2023 at 15:26

1 Answer 1


No, Emacs does not have a face-watchers functionality.

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.