|
From: | Dmitry Gutov |
Subject: | bug#38563: 27.0.50; Company popup renders with newlines (?) inheriting the bg properties of the character at next line's bol |
Date: | Sat, 14 Dec 2019 01:10:13 +0200 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.9.0 |
On 13.12.2019 17:32, Eli Zaretskii wrote:
It wouldn't have worked, because ':extend nil' means the face which says this is ineligible for face merging when face extension is considered. IOW, ':extend nil' cannot countermand some other face that's being merged which says ':extend t'.Hmm, that's counter to my intuition how this should work (meaning, :extend nil should be used during merging, like it's used during inheritance), but maybe this way enables functionality that wouldn't be possible otherwise.':extend nil' is "used" during merging in the sense that such a face is skipped when we want a face for extending past EOL. How else could we implement that? Setting :extend to nil means that _none_ of the other attributes of the face are to be taken into account for merging.
We are talking about "merging" a list of faces applied to a 'face' text property on a char, right? That kind of merging?
If so, I would expect seeing ':extend nil' would mean not using any of the face attributes on that char for extending past EOL. If it's the last character on the line, using the default face's attributes instead.
And if we see ':extend t', then we would use the background from the first face in the list that has the :background attribute set. Is that not how merging faces in a list value usually works?
Inheritance just makes the inheriting face implicitly behave as if its :extend attribute is the same as of the parent face, when the inheriting face doesn't itself specify :extend, i.e. has it set to 'unspecified'.
I think that's how inheritance for most attributes works, right?
[Prev in Thread] | Current Thread | [Next in Thread] |