:PROPERTIES: :ID: 45da0115-42c7-4a9a-9288-c5d840a69b92 :END: #+title: Popper #+filetags: emacs-load # SPDX-FileCopyrightText: 2022 Richard Brežák # # SPDX-License-Identifier: LGPL-3.0-or-later Enable ~popper~, a better version of ~popwin~, which might actually work. It groups popups by context and allows you to specify their exact positioning, or even a custom display function. It also seems to be better at restoring the previous layout. #+NAME: popper #+BEGIN_SRC emacs-lisp (use-package popper :straight (popper :type git :host github :repo "karthink/popper") :init (setq popper-reference-buffers '("\\*Messages\\*" "\\*Warnings\\*" "\\*Error\\*" "Output\\*$" "\\*HS-Error\\*" "^\\*Ement compose.*\\*$" help-mode compilation-mode rustic-compilation-mode tex-shell)) (popper-mode +1)) #+END_SRC Very temporary fix below, fix immediately. #+begin_src emacs-lisp (setq org-src-window-setup 'other-window) #+end_src Add a [[id:db1d0122-58d6-4dec-84f6-afcb52937fc7][consult]] source for popped buffers. #+begin_src emacs-lisp (with-eval-after-load 'consult (setq magic_rb/consult-source-popper `(:name "popper" :narrow ?P :category buffer :face consult-buffer :history buffer-name-history :state consult--buffer-state :items (lambda () (let ((group-name (when popper-group-function (with-current-buffer buf (funcall popper-group-function))))) (mapcar #'buffer-name (append (mapcar #'cdr (alist-get group-name popper-buried-popup-alist)) (mapcar #'cdr (alist-get group-name popper-open-popup-alist)))))))) (add-to-list 'consult-buffer-sources 'magic_rb/consult-source-popper 'append)) #+end_src Force user buffer switching to also obey ~display-buffer-alist~. #+begin_src emacs-lisp (setq switch-to-buffer-obey-display-actions t) #+end_src