The attached patch should accept newlines. It breaks with two conveniences though: 1. Field boundaries with character fields are gone. I had to remove that step since it is done once only (at widget-setup time) and not repeated in the after-change hook. If I had left that in, character widgets would appear visually different with regard to whether their initial value was a newline or not. In the first case there would _always_ have been an empty line after the line containing the field regardless of whether the modified value is a newline or not. In the second case the empty line would appear iff the modified value is a newline. 2. The size of a character field has changed from 1 to 0. Hence if you erase all characters in the field, there won't be any visible clues left that there's a field here. I had to change that since otherwise wid-edit would have automatically inserted a space (in its after-change hook) after a user erased all characters in the field. That space could have been subsequently used by `custom-variable-set' instead of raising an error. Note that tabbing doesn't stop at empty widgets. I don't consider that too serious since empty character widgets are invalid anyway. I tried to keep any side-effects of the patch within the character widget environment. Nevertheless you should test it extensively.