help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

How to have a frame dedicated to buffers of a certain kind? (was: use pd


From: Tassilo Horn
Subject: How to have a frame dedicated to buffers of a certain kind? (was: use pdf-tools in Emacs.)
Date: Sat, 29 Apr 2023 10:30:20 +0200
User-agent: mu4e 1.11.3; emacs 30.0.50

Hongyi Zhao <hongyi.zhao@gmail.com> writes:

> I tried the following configuration:
>
> (use-package pdf-tools
>   :ensure t
>   :init
>   (pdf-tools-install)
>   :config
>   (add-to-list 'display-buffer-alist
>                '((derived-mode . pdf-view-mode)
>          display-buffer-pop-up-frame))
>
>   )
>
> See the attached screenshot for the effect. In short, frame 1 will
> open frame 2, and 2 will open 3. But I just want to open frames 1 and
> 2 and automatically switch between them for forward and backward
> search.

Ok, if I understand correctly, you basically want one "normal" emacs
frame and one for viewing pdfs and you want that this separate frame is
reused.  The below code does the job but probably there's a better
solution for the "the dedicated frame already exists" part which I
didn't find during my testing...

My trick is to add a parameter th/pdf-frame to the decicated frame and
search for that.

--8<---------------cut here---------------start------------->8---
(defun th/display-buffer-in-my-pdf-frame (buffer alist)
  (if-let ((frame (car (seq-filter
                        (lambda (f) (frame-parameter f 'th/pdf-frame))
                        (frame-list)))))
      ;; TODO: I guess there's a better way for this case, i.e., something with
      ;; invoking display-buffer with reusable-frames parameter or something.
      (progn
        (select-frame frame)
        (switch-to-buffer buffer))
    (display-buffer-pop-up-frame
     buffer (cons
             '(pop-up-frame-parameters (th/pdf-frame . t))
             alist))))

(add-to-list 'display-buffer-alist
             `((derived-mode . pdf-view-mode)
               th/display-buffer-in-my-pdf-frame))
--8<---------------cut here---------------end--------------->8---

I've changed the subject because this has nothing to do with pdf-tools
anymore but could be applied to any kind of buffers, e.g., others might
want a separate dericated frame for dired or gnus or whatever.  If you
are lucky, the new subject catches the attention of Martin.

Bye,
Tassilo



reply via email to

[Prev in Thread] Current Thread [Next in Thread]