Subject: bug#53294: 29.0.50; Indirect font changes incorrectly affecting original buffer

From: Stefan Monnier <[email-masked]>
Date: Mon, 17 Jan 2022 16:47:08 -0500

>> - In `face-remap.el`, refrain from modifying the `face-remapping-alist`
>>   by side-effects (i.e. avoid `delq`, `setcdr`, and friends).
>> 
>> - Add a `make-indirect-buffer-hook` and arrange for `face-remap.el` to
>>   add a function there that does a deep enough copy of
>>   `face-remapping-alist`.
>> 
>> - Remember that indirect buffers are an attractive nuisance and should
>>   be deprecated (but note that I suspect the same bug affects
>>   `clone-buffer` because it doesn't make a deep enough copy of
>>   `face-remapping-alist` either).
>
> The last one tells me we are better with leaving this sleeping dog
> lie.

Actually, looking back at the code, I see we already have the needed
hook (tho called from `clone-indirect-buffer`), so I think the better
option is to change `make-indirect-buffer` so it runs
`clone-indirect-buffer-hook` (when called with a non-nil `clone` arg)
instead of having `clone-indirect-buffer` run it.  And then in
`face-remap.el` add a function to that hook which copies
`face-remapping-alist`.

An intermediate option is to change the Org code to use
`clone-indirect-buffer` instead of `make-indirect-buffer` (but that
still requires the `face-remap.el` addition to the hook).

[ Sorry Andrew for not noticing your earlier patch which does something
  similar to my first suggestion above.  ]

Andrew, would you be willing to write that patch?

        Stefan