Subject: bug#77945: [PATCH] Add optional inherit argument to 'face-all-attributes'

From: Ship Mints <[email-masked]>
Date: Mon, 21 Apr 2025 10:52:21 -0400

On Mon, Apr 21, 2025 at 10:45 AM Ship Mints <[email-masked]> wrote:

> On Mon, Apr 21, 2025 at 10:34 AM Eli Zaretskii <[email-masked]> wrote:
>
>> > From: Ship Mints <[email-masked]>
>> > Date: Mon, 21 Apr 2025 09:34:07 -0400
>> > Cc: [email-masked]
>> >
>> >  >  Doesn't describe-face already satisfy that need?
>> >  >
>> >  > I wanted a programmatic API where I could "diff" output.
>> >
>> >  Sorry, I don't understand.  describe-face produces a buffer that can
>> >  be diff'ed, right?
>> >
>> > I meant "diff" (hence my use of quotes) in the compare two lists
>> programmatically sense.
>>
>> I still don't understand. Lists are not the only data types that can
>> be diff'ed.
>>
>> > The output of
>> > 'describe-face' also seems not to have alternatives to enable/disable
>> inheritance, not that it helps with
>> > programmatic comparisons.
>>
>> If the 'inherit' attribute is non-nil, describe-face shows a link to
>> the inherited face, and you can follow it.
>>
>
> Yes, I understand.  I prefer to examine these using *scratch* and/or
> programs vs. using the interactive customize-style UI.  face-attribute
> already takes inherit, and it seems like a natural extension for
> face-all-attributes to be in harmony, and with additional programmer
> utility.
>

I enjoy this:

(seq-difference
 (face-all-attributes 'some-face (selected-frame))
 (face-all-attributes 'some-face (selected-frame) 'inherit))