Mauro Aranda writes: > Drew Adams writes: > >>> To sum it up, the prompt is an unfortunate mistake, and maybe we could >>> protect against that, but I think the real problem comes from the >>> defcustom, which fails to provide a valid default value. >> >> Thanks for this explanation. Makes sense. >> >> Can we somehow help users by raising an error when they >> do this? Seems like a simple mistake to make. > > I think it makes sense, but I'm not sure where would be the right place > to do it. Coming back to this, perhaps a good place to warn about a bad default value is where we find it for the first time. So I attach a patch that makes the restricted-sexp widget warn (but not error out) if the internal value is not a string. So, for the defcustom in the recipe: (defcustom bar `(ignore) "..." :type '(repeat (restricted-sexp :match-alternatives (functionp))) :group 'emacs) When the user clicks the INS button, the following warning pops up: Warning (widget-bad-default-value): A widget of type restricted-sexp has a bad default value. value: nil match function: widget-restricted-sexp-match match-alternatives: (functionp) which I hope conveys good enough information to fix the mistake. I made it just a warning, because this mistake doesn't always result in a messed up buffer. But it can be changed to an error, of course.