Note: this file is auto converted from posframe.el by el2org, please do not edit it by hand!!!
Posframe can pop up a frame at point, this posframe is a child-frame connected to its root window's buffer.
The main advantages are:
- It is fast enough for daily usage :-)
- It works well with CJK languages.
NOTE:
-
For MacOS users, posframe needs Emacs version >= 26.0.91
-
GNOME users with GTK3 builds need Emacs 27 or later. See variable `posframe-gtk-resize-child-frames' which auto-detects this configuration.
More details:
(require 'posframe)
-
Simple way
(when (posframe-workable-p) (posframe-show " *my-posframe-buffer*" :string "This is a test" :position (point)))
-
Advanced way
(defvar my-posframe-buffer " *my-posframe-buffer*") (with-current-buffer (get-buffer-create my-posframe-buffer) (erase-buffer) (insert "Hello world")) (when (posframe-workable-p) (posframe-show my-posframe-buffer :position (point)))
-
Arguments
C-h f posframe-show
(posframe-hide " *my-posframe-buffer*")
M-x posframe-hide-all
-
Delete posframe and its buffer
(posframe-delete " *my-posframe-buffer*")
-
Only delete the frame
(posframe-delete-frame " *my-posframe-buffer*")
M-x posframe-delete-all
Note: this command will delete all posframe buffers. You probably shouldn't use it if you are sharing a buffer between posframe and other packages.
By default, posframe moves the pointer to point (0,0) in the frame, as a way to address an issue with mouse focus. To disable this feature, add this to your init.el:
(setq posframe-mouse-banish nil)
Users can set fallback values of posframe-show's arguments with the help of `posframe-arghandler'. The example below sets fallback border-width to 10 and fallback background color to green.
(setq posframe-arghandler #'my-posframe-arghandler)
(defun my-posframe-arghandler (buffer-or-name arg-name value)
(let ((info '(:internal-border-width 10 :background-color "green")))
(or (plist-get info arg-name) value)))