Subject: Re: bug#41145: 27.0.91; small issues with `display-fill-column-indicator' Customization group

From: Mauro Aranda <[email-masked]>
Date: Fri, 28 Aug 2020 11:48:57 -0300

Eli Zaretskii <[email-masked]> writes:

>> From: Philipp Stephani <[email-masked]>
>> Date: Sat, 09 May 2020 10:30:13 +0200
>>
>> The two issues here are:
>>
>> 1. "Group definition missing."  It looks like customizing this group
>>    should load `display-fill-column-indicator-mode', which defines this
>>    group, or the group definition should be in cus-start.el.
> The same seems to work for display-line-numbers, and I don't think I
> see the crucial difference.

I did some debugging and found that the difference is that there are no
custom options or faces defined in display-fill-column-indicator.el:
fill-column-indicator is in faces.el and
display-fill-column-indicator, display-fill-column-indicator-character
and display-fill-column-indicator-column are in xdisp.c

custom-make-dependencies doesn't go through faces.el, since it's
preloaded, so it doesn't record the custom-where property into
fill-column-indicator.
And since cus-dep.el doesn't require cus-start, fill-column-indicator is
the only member of the custom-group property of
display-fill-column-indicator, so there is no way
custom-make-dependencies will record the custom-where property into any
of the options defined in xdisp.c.

So later on, when looking for a custom-where property in the members of
the display-fill-column-indicator group, we find nothing, resulting in
no custom-loads thingy for display-fill-column-indicator.

The problem goes away if we require cus-start in cus-dep, or if we
record into the custom-loads the file where to find the custom-group.
That is, add in the first mapatoms call something like this:
(when (get symbol 'custom-where)
  (push (get symbol 'custom-where) found))

Or if eventually a defface or a defcustom makes its way into
display-fill-column-indicator.el, of course.

Note that adding the above form will result in adding cus-edit to the
custom-loads property of the groups defined in cus-edit (like editing,
convenience, etc.).  I don't know if that is harmless.