aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2025-10-22 12:40:35 -0500
committerCraig Jennings <c@cjennings.net>2025-10-22 12:40:35 -0500
commit11d4a2fe8cfc5dd9de97d79c3df8a982af9e5f4d (patch)
tree8279e6f4f6eacbbf2b4b2eaa0c947ac0ff8b1571
parentc5d168daf795b1db98277af56cdb2a63ae4bef41 (diff)
downloaddotemacs-11d4a2fe8cfc5dd9de97d79c3df8a982af9e5f4d.tar.gz
dotemacs-11d4a2fe8cfc5dd9de97d79c3df8a982af9e5f4d.zip
feat: modules: Add popper-config for popup window management
Introduce popper-config.el to manage secondary buffers as popup windows using popper.el. This configuration includes keybindings for toggling, cycling, and promoting popups, and sets up popper with specific buffer references and display settings. This enhances the user experience by managing secondary buffers efficiently.
-rw-r--r--modules/popper-config.el41
1 files changed, 41 insertions, 0 deletions
diff --git a/modules/popper-config.el b/modules/popper-config.el
new file mode 100644
index 000000000..b0f503e8f
--- /dev/null
+++ b/modules/popper-config.el
@@ -0,0 +1,41 @@
+;;; popper-config.el --- secondary buffers to popup -*- lexical-binding: t; coding: utf-8; -*-
+;; author: Craig Jennings <c@cjennings.net>
+;;
+;;; Commentary:
+;;
+;; Configuration for popper.el, which manages secondary buffers as popup windows.
+;; Popup buffers (like *Messages*, help, and compilation output) are displayed in
+;; a dedicated bottom window and can be easily toggled, cycled, or promoted to
+;; regular windows.
+;;
+;; Keybindings:
+;; C-` - Toggle popup window visibility
+;; M-` - Cycle through open popup buffers
+;; C-M-` - Promote popup to regular window or demote back to popup
+;;
+;;; Code:
+
+(use-package popper
+ :bind (("C-`" . popper-toggle)
+ ("M-`" . popper-cycle)
+ ("C-M-`" . popper-toggle-type))
+ :custom
+ (popper-display-control-nil)
+ :init
+ (setq popper-reference-buffers
+ '("\\*Messages\\*"
+ "Output\\*$"
+ "\\*Async Shell Command\\*"
+ help-mode
+ compilation-mode))
+ (add-to-list 'display-buffer-alist
+ '(popper-display-control-p ; Predicate to match popper buffers
+ (display-buffer-in-side-window)
+ (side . bottom)
+ (slot . 0)
+ (window-height . 0.5))) ; Half the frame height
+ (popper-mode +1)
+ (popper-echo-mode +1))
+
+(provide 'popper-config)
+;;; popper-config.el ends here.