help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Difference between child frame, popup frame and overlay


From: Tassilo Horn
Subject: Re: Difference between child frame, popup frame and overlay
Date: Tue, 17 May 2022 17:14:17 +0200
User-agent: mu4e 1.7.21; emacs 29.0.50

Alessandro Bertulli <alessandro.bertulli96@gmail.com> writes:

Hi Alessandro,

> Pretty much the title. I am exploring differences between packages like
> Ivy vs Vertico vs Selectrum, or Corfu vs Company, and sometimes this is
> taken into play. However, the documentation I found explains only child
> frames and overlays. So, to be more precise:
> - what is a popup frame?

I don't have a clue.  Where did you encounter that term?  I mean, both
overlays and child-frames can be used to create popups (for in-buffer
display/selection of possible completions like in corfu/company), so it
might be that this term is used as a general term for the concept
without hinting at a concrete implementation (of course, then having
"frame" in the term is misleading).

Possibly, popup-frame might also mean tooltips, e.g., the thing you get
at the mouse cursor position when evaluating (tooltip-show "Hello!").

> Moreover, do you have any reason about when you should use one instead
> of the other twos?

I can only say something about overlays vs. child-frames.  Overlays
(used as multi-line menus) have visual issues (don't align) when those
lines use different faces and they cannot extend over the edges of the
current window.  child-frames don't have these issues but creating them
is much slower.  Oh, and child-frames won't work at all in terminal
frames!  So it's pest vs. cholera, really. :-)

I think company uses overlays by default (and can also just print
completions in the echo area) whereas corfu uses only child-frames.  I
don't use emacs in a terminal for programming, so I can live well with
that limitation of corfu.

Bye,
Tassilo



reply via email to

[Prev in Thread] Current Thread [Next in Thread]