Posframe
Pop a posframe (just a child-frame) at point, posframe is a **GNU ELPA** package!
Install / Use
/learn @tumashu/PosframeREADME
Created 2021-06-01 Tue 10:41
#+TITLE: Pop a posframe (just a frame) at point #+AUTHOR: Feng Shu
#+html: <a href="http://elpa.gnu.org/packages/posframe.html"><img alt="GNU ELPA" src="https://elpa.gnu.org/packages/posframe.svg"/></a> #+html: <a href="http://elpa.gnu.org/devel/posframe.html"><img alt="GNU-devel ELPA" src="https://elpa.gnu.org/devel/posframe.svg"/></a> #+html: <a href="https://melpa.org/#/posframe"><img alt="MELPA" src="https://melpa.org/packages/posframe-badge.svg"/></a>
- 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:
- 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:
- [[https://git.savannah.gnu.org/cgit/emacs.git/commit/?h=emacs-27&id=c49d379f17bcb0ce82604def2eaa04bda00bd5ec][Fix some problems with moving and resizing child frames]]
- [[https://lists.gnu.org/archive/html/emacs-devel/2020-01/msg00343.html][Emacs's set-frame-size can not work well with gnome-shell?]]
[[file:./snapshots/posframe-1.png]]
- Installation
#+begin_example (require 'posframe) #+end_example
- Usage
** Create a posframe
*** Simple way #+begin_example (when (posframe-workable-p) (posframe-show " my-posframe-buffer" :string "This is a test" :position (point))) #+end_example
*** Advanced way #+begin_example (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))) #+end_example
*** Arguments
#+begin_example C-h f posframe-show #+end_example
** Hide a posframe #+begin_example (posframe-hide " my-posframe-buffer") #+end_example
** Hide all posframes #+begin_example M-x posframe-hide-all #+end_example
** Delete a posframe
- Delete posframe and its buffer #+begin_example (posframe-delete " my-posframe-buffer") #+end_example
- Only delete the frame #+begin_example (posframe-delete-frame " my-posframe-buffer") #+end_example ** Delete all posframes #+begin_example M-x posframe-delete-all #+end_example
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.
** posframe-arghandler
posframe-arghandler feature has been removed from posframe-1.1, user can use advice feature instead.
** Mouse banish Default setting will work well in most case, but for EXWM user, suggest use the below config.
#+begin_src emacs-lisp (setq posframe-mouse-banish-function #'posframe-mouse-banish-simple) #+end_src
Related Skills
node-connect
348.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
108.8kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
348.0kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
348.0kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
