emacs-devel
[Top][All Lists]
Advanced

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

Could x-show-tip be reimplemented in Elisp? How does one create borderle


From: Clément Pit--Claudel
Subject: Could x-show-tip be reimplemented in Elisp? How does one create borderless frames from Elisp?
Date: Fri, 12 Feb 2016 10:01:50 -0500
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.5.1

Hi emacs-devel,

TL;DR: How do I create a frame without a border, in the style of 
x_create_tip_frame (called by x-show-tip in the C sources), from Elisp?

I'm looking at ways in which we could use real tooptip popups instead of 
overlays to display company-mode completion lists. This would have many 
advantages, including better interaction with font sizes, no issues with 
recursive display specs, good support for variable-width fonts, and so on. I 
believe Stefan has spoken in favour of that approach in the past, too.

The natural candidate for this task is x-show-tip, and it probably meets most 
of the requirements; but not all. In particular, there can be at most one 
tooltip displayed at any time; this means that we'd break other packages that 
display tooltips while completion is ongoing. Examples include 
company-quickhelp, which displays documentation for the currently selected 
entry next to completion candidates.

`x-show-tip` is currently implemented in C; as far as I can see, however, it 
essentially creates a frame and displays it at a given location; given this, I 
thought it would be possible to reimplement it in ELisp. Unfortunately, I've 
been hitting a wall when it comes to displaying a borderless frame. I asked on 
https://emacs.stackexchange.com/questions/20167/how-do-i-create-a-borderless-frame,
 to no avail. 

My original guess was that the relevant part of the C code was this call:

  x_default_parameter (f, parms, Qborder_width, make_number (0), "borderWidth", 
"BorderWidth", RES_TYPE_NUMBER);

Unfortunately, neither (set-frame-param (selected-frame) 'border-width 0) nor 
(make-frame '((border-width . 0))) (both inspired from the call above) yield a 
borderless frame.

Is there a way to create a borderless frame from Elisp?

Clément.

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

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