dotfiles/emacs-lisp/popper.org
main a19be30a23
Improve popper functionality in Emacs
Signed-off-by: main <magic_rb@redalder.org>
2022-10-27 13:23:37 +02:00

1.9 KiB

Popper

#

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.

  (use-package popper
    :straight (popper :type git :host github :repo "karthink/popper")
    :init
    (setq popper-reference-buffers
          '("\\*Messages\\*"
            "\\*Warnings\\*"
            "Output\\*$"
            "\\*HS-Error\\*"
            help-mode
            compilation-mode
            rustic-compilation-mode
            tex-shell))
    (popper-mode +1))

Add a consult source for popped buffers.

  (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))

Force user buffer switching to also obey display-buffer-alist.

  (setq switch-to-buffer-obey-display-actions t)