> Date: Sat, 26 Oct 2019 19:21:40 +0000 (UTC)
> From: Ergus <
spacibba@aol.com>
> Cc:
emacs-devel@gnu.org,
ingo.lohmar@posteo.net>
> Before `merge_named_face` filtered the call to `merge_face_vectors` if the filter parameter (lets say :extend
> in our case) was `nil` or `undefined`. That was how the attr_filter worked.
>
> But in this case it is actually wrong when the face was inherited and the attribute was `undefined` because
> maybe the `parent` face define the filter parameter to `non-nil`.
>
> So now `merge_named_face` calls `merge_face_vectors` if the parameter is undefined too, and
> `merge_face_vectors` internally conditions if the merge is needed. The problem is that the merge with the
> parent faces was always made writing the TO vector (in place) as it was not conditional, but we don't know in
> advance if the parent (or the grand-parents) define the filter attribute to non-nil
>
> So what I did in the `undefined` case was to make a copy of the TO vector (tmp) and merge_ref there instead
> of for TO, after the merge I check if the attribute is set, and if so, then I copy it into TO and continue with the
> merge.
I understood all that, but the changes include more than what you
described (and your original message even said that you fixed a couple
of other bugs as well). Those other things is what I was asking
about. Just do
git diff ...origin/fix/inherit_extend_face
in the master branch, and you will see those other changes right away.
For example, I see 2 comments deleted, and something about
stretch_ascent(?). What is this stuff, and what does it solve?
Thanks.