;;; popper-config.el --- secondary buffers to popup -*- lexical-binding: t; coding: utf-8; -*- ;; author: Craig Jennings ;; ;;; Commentary: ;; ;; Layer: 2 (Core UX). ;; Category: C/P. ;; Load shape: eager. ;; Eager reason: configures popper so popup buffers (Messages, help, compilation) ;; appear as managed popups. The enabled/disabled state is an open question in ;; the spec; revisit during deferral. ;; Top-level side effects: package configuration via use-package. ;; Runtime requires: none. ;; Direct test load: yes. ;; ;; 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 :disabled t :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\\*" "\\*Async-native-compile-log\\*" 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 ;; Mode activation moves to :config so `:disabled t' actually ;; disables it (`:init' runs even when `:disabled t', `:config' ;; does not). :config (popper-mode +1) (popper-echo-mode +1)) (provide 'popper-config) ;;; popper-config.el ends here.