¿Puedo configurar eww para usar el modo de vista de pdf (de herramientas de pdf) para PDF en lugar de DocView?

12

Utilizo herramientas pdf para leer archivos PDF dentro de Emacs y lo prefiero mucho a DocView. Me acabo de dar cuenta de que cuando intento abrir una URL que apunta a un PDF en eww, usa DocView en lugar del modo de visualización de PDF de las herramientas de pdf. ¡Esto es particularmente molesto ya que DocView no puede mostrar el PDF! Al cambiar el búfer al modo de vista de pdf manualmente, se muestra con éxito. ¿Puedo configurar las cosas para que eww use el modo de vista de pdf en el primer intento?

Omar
fuente
Eche un vistazo a la línea 403 del código fuente en el enlace adjunto: bzr.savannah.gnu.org/lh/emacs/trunk/annotate/head:/lisp/net/… Puede estar en una línea diferente dependiendo de la versión Tu estas usando.
leyes el
Gracias, @lawlist, después de hacer la pregunta, encontré que fue donde doc-view-modese llamó al establecer (debug-on-entry 'doc-view-mode).
Omar
3
¿Responde esto a tu pregunta? ¿Cómo usar las herramientas pdf (pdf-view-mode) en emacs?
Tyler
@Tyler, no estoy seguro, pero no investigaré si lo hace o no porque (1) esta pregunta ya fue respondida en el año 2014, como verifica al desplazarse hacia abajo a la respuesta que acepté, (2) incluso que La respuesta es innecesaria hoy en día, ya que con las versiones más recientes de Emacs y las herramientas pdf, ¡lo que quería funciona! (así que eliminé el código amablemente sugerido por T. Verron de mi init.el hace unos años).
Omar
1
@ Omar Creo que la frase "¿Responde esto a tu pregunta?" se agrega automáticamente cuando marca una pregunta como duplicada ahora? No lo ingresé a mano, de todos modos. Marqué esto como un duplicado, porque la pregunta vinculada sirve como la respuesta canónica a las preguntas del formulario "¿Cómo hago para que las herramientas pdf funcionen para X?". Por supuesto, su pregunta fue formulada y respondida antes que la otra pregunta, pero creo que es normal hacerlo cuando una respuesta general integral aborda una pregunta más antigua y más específica.
Tyler

Respuestas:

7

Advertencia: trabajo sucio por delante

Ya que " prefiere [herramientas pdf] a DocView ", ¿es seguro asumir que usarlo para ver todos los archivos PDF es aceptable?

El siguiente fragmento de código cambiará el documento a pdf-view-modecualquier momento que doc-viewse ingrese con un pdfdocumento.

(defvar tv/prefer-pdf-tools (fboundp 'pdf-view-mode))
(defun tv/start-pdf-tools-if-pdf ()
  (when (and tv/prefer-pdf-tools
             (eq doc-view-doc-type 'pdf))
    (pdf-view-mode)))

(add-hook 'doc-view-mode-hook 'tv/start-pdf-tools-if-pdf)

El comportamiento se puede habilitar o deshabilitar setqcolocando la variable en tv/prefer-pdf-toolsto o nil.

T. Verron
fuente
¡Oh, me había perdido que doc-view-modetenía un gancho! Traté de adivising eww-display-pdfy eso no funcionó (no estoy seguro de por qué). Probaré su solución e informaré.
Omar
¡Genial gracias! Esto funciona (después de eliminar el paréntesis tv/prefer-pdf-tools, que no es una función).
Omar
3

Puede usar un aviso eww-display-pdfpara anular temporalmente la definición de doc-view-mode. Con la nueva nadvicebiblioteca esto es tan fácil como:

(advice-add 'eww-display-pdf
            :around (lambda (orig &rest args)
                      (cl-letf (((symbol-function 'doc-view-mode) #'pdf-view-mode))
                        (apply orig args)))
            '((name . eww-display-pdf-tools)))

Para volver al original doc-view-mode, use (advice-remove 'eww-display-pdf 'eww-display-pdf-tools).

Abrí el error 19270 de Emacs para que el Modo PDF EWW sea personalizable.

Lunaryorn
fuente
¡Frio! Intenté agregar consejos para eww-display-pdfque simplemente se ejecutara pdf-view-mode :after, hizo su trabajo habitual, pero eso no funcionó por alguna razón. Nunca se me ocurrió cambiar la definición de la doc-view-modefunción (¡probablemente porque estoy tan acostumbrado al alcance léxico!).
Omar
Gracias por abrir el informe de errores también. Me imagino que mucha gente preferiría que eww abriera archivos PDF en su habitual visor de PDF externo.
Omar
0

Uso emacs-28, eww uso mailcap para abrir pdf, lo personalizo al abrir con herramientas pdf:

(add-to-list 'mailcap-user-mime-data
               '((type . "application/pdf")
                 (viewer . pdf-view-mode)))

Vea Emacs - Ayuda - visor de pdf para más información.

xinfa tang
fuente
¿Eres del futuro? No creo que Emacs 27 haya sido lanzado todavía (esa es la compilación previa al lanzamiento que estoy usando), y mucho menos 28.
Omar
Uso archlinux con la versión de desarrollo de emacs: aur / emacs-git 28.0.50.139945-1 [instalado: 28.0.50.140001-1] (74) (1.07) GNU Emacs. Desarrollo master branch.
Xinfa Tang