Lars Ingebrigtsen writes: > (Oops. Sent the previous mail too early.) > > Mauro Aranda writes: > >> How does the attached patch look? I didn't include changes for the rest >> of the escape sequences, because of Eli's objections. > > Looks good. The only thing that's confusing now is that if you delete > the char, it displays as \s? > > M-x customize-variable RET whitespace-display-mappings RET > > > > > Hit DEL: > > > > > > So there's no difference in the display between a missing character and > a space character... I did that on purpose, and this comment tries to explain that: ;; The character widget is not really empty: ;; its value is a single space character. ;; We need to propertize it again, if it became empty for a while. Try the following in current master (i.e., without my patch applied): (defcustom foo-option ?. "..." :type 'character :group 'emacs) Eval, and confirm that foo-option value is ?. M-x customize-option RET foo-option RET Delete the ".", and then click State and Set for Current Session. You'll see that foo-option was set...but to what? You said there is a missing character, but really there's not such thing: there is a space there, and the Widget library will return ?\s for the value of that widget. If you do: M-: foo-option RET you can confirm foo-option was set to ?\s That's why I thought it would be less confusing to show the \s at all times, and say "No, you can't have an empty character widget". Having a truly empty character widget wouldn't be of much help, since the :validate function will complain anyway because the widget doesn't have a single character.