It seems that once customizable variables are loaded, the Customize interface is not updated on subsequent re-evaluation of those variables, even with eval-defun (C-M-x).

For example, adding a :prefix to a defgroup and C-M-xing does not update the names of customizable variables in that group in the Customize interface.

Why is this happening, and what can be done to "force update" Customize?


Not sure what you're saying. Keyword :prefix does not change the names of variables that are in the group. It does not affect the variable names. All it does is declare that the group uses that prefix.

And if option custom-unlispify-remove-prefixes is non-nil then variable names are shown in Customize buffers without their prefix.

Is that what you are trying to describe: that you expect to see the names without prefixes but you see the prefixes (in Customize buffers)? If so, is that option non-nil?

If a Customize buffer already exists showing a variable then it does not get updated to reflect a change in that option value. But if you kill that Customize buffer and re-create it then you should see the option value being respected.

If this does not answer your question, please try to clarify what you mean: what you see and what you expected to see instead. Consider providing a recipe.

See the Elisp manual, node Group Definitions for the description of defgroup keyword :prefix.

  • OK, I had 2 issues. One was that custom-unlispify-remove-prefixes was nil. The other was that I didn't kill the existing Customize buffers, and therefore changes weren't being reflected. – Tianxiang Xiong May 10 '17 at 21:10
  • I see that @phils has just now filed Emacs enhancement request (bug) #26871 asking to be able to revert a Customize buffer, i.e., not have to kill it and re-create it. Thanks, Phil! – Drew May 10 '17 at 22:59

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.