What does “SAVED and set. (mismatch)” (and in particular the “mismatch” part) mean in emacs customize?

StackOverflow https://stackoverflow.com/questions/10042639

  •  29-05-2021
  •  | 
  •  

Question

I was just trying to customize some org-mode export settings in emacs, and so I did M-xcustomize-grouporg-export-html. This brought up by Customize buffer, and, among other things, I went about changing the org-export-html-postamble-format to something more to my liking.

Possibly relevant: During this process, I'd used a few C-o's to open new lines, so the value would look nice to me on the screen, and I could tell what I was doing. When satisfied, I clicked on the State button, and chose Save for Future Sessions. Because (I presume) of the C-o newlines, it then said:

CHANGED outside Customize; operating on it here may be unreliable. (mismatch)

So, I then chose Reset to Saved, which got rid of that, but replaced it with this:

SAVED and set. (mismatch)

OK, so... all is well... except... In both of those lines, what does (mismatch) mean? That there's a mismatch between what's saved in my emacs init file and what I'm looking at? That there's a mismatch between... Well, looking around further, I even see some customize entries that say:

STANDARD. (mismatch)

Standard and mismatch? (There are others which just say STANDARD., by the way.)

I want to understand what "mismatch" means. Any hints?

Thanks!


Addenda:

I just went digging a little in cus-edit.el, and found this in the comments:

;; 8. mismatch

;;    The widget value is not valid member of the :type specified for the
;;    option.

This helps, a little... does it just mean that org-mode's type specifier is wrong? Looking at that (in org-html.el), it specifies :type 'string, but in reality it seems to be a plist (even its default value is of the form '(("en" "[data here]")).) Is this just bad cleanliness on the part of org-mode? But then, even another variable in here says "mismatch", but seems logically to have a value that makes sense. The value is t (and I checked in my emacs init, and it's just the symbol t, no quotes or anything), and the type specifier for that is:

:type '(choice (const :tag "No postamble" nil) (const :tag "Auto preamble" 'auto) (const :tag "Default formatting string" t) (string :tag "Custom formatting string") (function :tag "Function (must return a string)")))

... which would seem to match that third line. No? Is '(choice ... not a valid value for :type?

Was it helpful?

Solution

It looks like two bugs:

  • a trivial one in org-html.el which declares :type 'string for that variable, even though the variable's value is not a string.

  • a bug in customize which says "changed outside customize" in this mismatched case, even though the mismatch actually came straight from customize and not outside of it.

Please report it with M-x report-emacs-bug.

OTHER TIPS

Because (I presume) of the C-o newlines, it then said: CHANGED outside Customize; operating on it here may be unreliable. (mismatch)

I've never looked into the details, but I would assume that "CHANGED outside Customize" almost certainly means that somewhere in your config the org-export-html-postamble-format variable is set directly in code. The text of the error certainly doesn't suggest it could be caused if the variable was only ever set via the customize interface.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top