Pregunta de auctex de herramientas pdf con búferes divididos

Pregunta:

Ejecuto auctex con la fuente de látex en la mitad izquierda del búfer y el pdf correspondiente en la mitad derecha (usando Cx 3 para dividir el búfer). Luego dividí la mitad izquierda del búfer en 2 para que dos funcionen en diferentes partes del archivo fuente de látex. De manera similar, dividí el búfer de la derecha en dos para ver las dos partes correspondientes del pdf. ¿Hay alguna forma de hacer una búsqueda hacia adelante / atrás entre la fuente de látex de la parte superior izquierda y el pdf de la parte superior derecha? y una búsqueda hacia adelante / atrás entre la fuente de látex de la parte inferior izquierda y el pdf de la parte inferior derecha? Esto ayudaría mucho al trabajar en un documento de látex de gran tamaño. En este momento, la fuente de látex de arriba a la izquierda y la de abajo a la izquierda hacen una búsqueda hacia adelante / hacia atrás con el pdf de la parte superior derecha; el pdf de la parte inferior derecha parece ignorarse.

Respuesta:

La solución en la parte inferior de esta respuesta ya no funciona después de https://github.com/emacs-mirror/emacs/commit/f646675cd1637948b2df2351a9666792ea8251ea

El argumento adicional DEDICATE de window--display-buffer ha sido eliminado por esa confirmación.

Dado que window--display-buffer sí considera display-buffer-mark-dedicated todos modos, tal vez Emacs haga como el OP quería listo para usar.

De lo contrario, puede utilizar el siguiente código modificado:

(defun display-buffer-beside-selected (buffer alist)
  "Try displaying BUFFER in a window beside the selected window.
If there is a window below the selected one and that window
already displays BUFFER, use that window.
If that attempt fails and there is a non-dedicated window
beside the selected one, use that window.
The left or right hand side is chosen if ALIST contains
the cons (side . left) or (side . right), respectively."
  (let (window)
    (or (and (setq window (window-in-direction (cdr (assq 'side alist))))
         (eq buffer (window-buffer window))
         (window--display-buffer buffer window 'reuse alist))
    (and (setq window (window-in-direction (cdr (assq 'side alist))))
         (not (window-dedicated-p window))
         (window--display-buffer
          buffer window 'reuse alist)))))

(defun my-display-buffer-right (fun &rest args)
  "Use `display-buffer-in-side-window' as `display-buffer-overriding-action'.
Then run FUN with ARGS."
  (let ((display-buffer-overriding-action '(display-buffer-beside-selected (side . right))))
    (apply fun args)))

(defun my-display-buffer-left (fun &rest args)
  "Use `display-buffer-in-side-window' as `display-buffer-overriding-action'.
Then run FUN with ARGS."
  (let ((display-buffer-overriding-action '(display-buffer-beside-selected (side . left))))
    (apply fun args)))

(advice-add 'TeX-pdf-tools-sync-view :around #'my-display-buffer-right)
(advice-add 'pdf-sync-backward-search-mouse :around #'my-display-buffer-left)

Puede configurar la ventana preferida a través de ACTION para display-buffer , que vea. Eso también funciona para comandos que usan display-buffer .

De todas las posibilidades para configurar la ACTION la variable display-buffer-overriding-action tiene la máxima prioridad.

El siguiente código muestra cómo definir la acción que desea y cómo configurar display-buffer-overriding-action para los comandos que necesita.

(defun display-buffer-beside-selected (buffer alist)
  "Try displaying BUFFER in a window beside the selected window.
If there is a window below the selected one and that window
already displays BUFFER, use that window.
If that attempt fails and there is a non-dedicated window
beside the selected one, use that window.
The left or right hand side is chosen if ALIST contains
the cons (side . left) or (side . right), respectively."
  (let (window)
    (or (and (setq window (window-in-direction (cdr (assq 'side alist))))
         (eq buffer (window-buffer window))
         (window--display-buffer buffer window 'reuse alist))
    (and (setq window (window-in-direction (cdr (assq 'side alist))))
         (not (window-dedicated-p window))
         (window--display-buffer
          buffer window 'reuse alist display-buffer-mark-dedicated)))))

(defun my-display-buffer-right (fun &rest args)
  "Use `display-buffer-in-side-window' as `display-buffer-overriding-action'.
Then run FUN with ARGS."
  (let ((display-buffer-overriding-action '(display-buffer-beside-selected (side . right))))
    (apply fun args)))

(defun my-display-buffer-left (fun &rest args)
  "Use `display-buffer-in-side-window' as `display-buffer-overriding-action'.
Then run FUN with ARGS."
  (let ((display-buffer-overriding-action '(display-buffer-beside-selected (side . left))))
    (apply fun args)))

(advice-add 'TeX-pdf-tools-sync-view :around #'my-display-buffer-right)
(advice-add 'pdf-sync-backward-search-mouse :around #'my-display-buffer-left)

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım