GNU bug report logs - #38563
27.0.50; Company popup renders with newlines (?) inheriting the bg properties of the character at next line's bol

Previous Next

Package: emacs;

Reported by: Dmitry Gutov <dgutov <at> yandex.ru>

Date: Wed, 11 Dec 2019 01:15:02 UTC

Severity: normal

Found in version 27.0.50

Done: Dmitry Gutov <dgutov <at> yandex.ru>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Dmitry Gutov <dgutov <at> yandex.ru>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 38563 <at> debbugs.gnu.org
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
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?




This bug report was last modified 5 years and 150 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.