dotfiles/emacs-lisp/popper.org
main 8a82f5cfbf
Emacs stuff
Signed-off-by: main <magic_rb@redalder.org>
2023-01-09 13:06:55 +01:00

2.1 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")
    :config
    (setq popper-reference-buffers
          '("\\*Messages\\*"
            "\\*Warnings\\*"
            "\\*Error\\*"
            "Output\\*$"
            "\\*HS-Error\\*"
            "^\\*Ement compose.*\\*$"
            haskell-interactive-mode
            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)