posframe
posframe copied to clipboard
Pop a posframe (just a child-frame) at point, posframe is a **GNU ELPA** package!
Created 2021-06-01 Tue 10:41
#+TITLE: Pop a posframe (just a frame) at point #+AUTHOR: Feng Shu
- 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