Skip to content

haji-ali/buframe.el

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

buframe.el - Buffer-local frames for Emacs

Buframe provides utilities for creating and managing lightweight child frames associated with individual buffers. These frames are meant for inline previews, annotations, completions, or other UI elements that should not interfere with normal Emacs focus or window behaviour.

buframe

Features

  • Buffer-local child frames
  • Minimal appearance (no mode-line, tool-bar, tab-bar, etc.)
  • Non-focusable, non-disruptive
  • Dynamically positioned relative to buffer content (e.g. overlays, regions)
  • Automatic update and hide/show depending on buffer selection
  • Debounced frame updates to avoid flicker
  • Dedicated buffers configured for preview-only use

Installation

buframe is available from GNU ELPA. You can install it directly via M-x package-install RET buframe RET.

Usage

Example creating a child frame next to an overlay:

(eval
 '(let ((ov (make-overlay (point) (1+ (point))))
        (buf (buframe-make-buffer "preview")))
    (with-current-buffer buf
      (let ((inhibit-read-only t))
        (erase-buffer)
        (insert (propertize "HELLO WORLD\nThis is an illustration of buframe."
                            'face
                            'highlight))))
    (buframe-make "preview"
                  (lambda (frame)
                    (buframe-position-right-of-overlay frame ov))
                  buf))
 t) ;; This is a test

Frames will automatically update/hide as the buffer is selected/deselected.

Comparison with posframe

buframe was inspired by corfu's frames, which were in turn inspired by posframes. The main difference lies in the scope and the buffer integration. Buframes are auto-updated/hidden on buffer selection.

Buframe is better suited when frames need to track and belong to a buffer (e.g. inline annotations or previews). Posframe is simpler when you just want to display a popup at point.

About

Buffer-local emacs frames

Resources

License

Stars

12 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors