Subject: bug#27427: 26.0.50; Native line numbers lead to display error in company-mode popup

From: martin rudalics <[email-masked]>
Date: Thu, 29 Jun 2017 09:17:41 +0200

>> Because an application would include that very line in the 'tty-popup'
 >> overlay BEG...END range and the display engine has to know how to handle
 >> an overlay that spans multiple lines.  Right?
 >
 > I cannot answer this question, it's too general.  And doesn't
 > company-mode use before- and after-strings, at least sometimes?  Those
 > have BEG and END the same value, so you must hit that position to know
 > something's there.

Obviously, ‘company-mode’ would have to get rid of all earlier
workarounds.  Likely we would encapsulate the TTY/GUI differences in a
separate function or macro.

 > I think the only workable idea is to create a special kind of window
 > that is not part of the usual window tree, and let the display engine
 > consider those windows after the "normal" ones have been.  Do popup
 > frames need to support windows, mode lines, etc?  Or are they more
 > like tooltips -- one window and no decorations?

Note that so far the concept "popup frame" does not exist yet.  If the
window system supports them, we have child frames, undecorated frames,
override redirect frames and some more.  All these are full-fledged
frames but we can easily provide restrictions, single window only, no
echo area, no mode or header lines ... you name it.

But note in this context that a native Emacs tooltip frame is not very
viable.  It works only because it's so ephemeral that before Lisp code
has a chance to lay its hands on it, it has already disappeared.  In
this sense, a tooltip is similar to a TTY menu---an application cannot
disrupt its display.

So the answer to your question is: We can supply any restrictions the
TTY display code would need although I'd prefer to call this a "special
kind of frame" and not a "special kind of window".

martin