━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ POP A POSFRAME (JUST A FRAME) AT POINT ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1 What is posframe? ═══════════════════ 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: 1. It is fast enough for daily usage :-) 2. It works well with CJK languages. NOTE: 1. For MacOS users, posframe needs Emacs version >= 26.0.91 2. GNOME users with GTK3 builds need Emacs 27 or later. See variable `posframe-gtk-resize-child-frames' which auto-detects this configuration. More details: 1. [Fix some problems with moving and resizing child frames] 2. [Emacs's set-frame-size can not work well with gnome-shell?] [Fix some problems with moving and resizing child frames] [Emacs's set-frame-size can not work well with gnome-shell?] 2 Installation ══════════════ ┌──── │ (require 'posframe) └──── 3 Usage ═══════ 3.1 Create a posframe ───────────────────── 3.1.1 Simple way ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ ┌──── │ (when (posframe-workable-p) │ (posframe-show " *my-posframe-buffer*" │ :string "This is a test" │ :position (point))) └──── 3.1.2 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))) └──── 3.1.3 Arguments ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ ┌──── │ C-h f posframe-show └──── 3.2 Hide a posframe ─────────────────── ┌──── │ (posframe-hide " *my-posframe-buffer*") └──── 3.3 Hide all posframes ────────────────────── ┌──── │ M-x posframe-hide-all └──── 3.4 Delete a posframe ───────────────────── 1. Delete posframe and its buffer ┌──── │ (posframe-delete " *my-posframe-buffer*") └──── 2. Only delete the frame ┌──── │ (posframe-delete-frame " *my-posframe-buffer*") └──── 3.5 Delete all posframes ──────────────────────── ┌──── │ 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. 3.6 posframe-arghandler ─────────────────────── posframe-arghandler feature has been removed from posframe-1.1, user can use advice feature instead. 3.7 Mouse banish ──────────────── Default setting will work well in most case, but for EXWM user, suggest use the below config. ┌──── │ (setq posframe-mouse-banish-function #'posframe-mouse-banish-simple) └────