Posso configurare eww per usare la modalità pdf view (da pdf-tools) per PDF invece che DocView?


12

Uso gli strumenti pdf per leggere i PDF all'interno di Emacs e preferisco di gran lunga a DocView. Ho appena notato che quando provo ad aprire un URL che punta a un PDF in eww, utilizza DocView anziché la modalità di visualizzazione pdf da pdf-tools. Ciò è particolarmente fastidioso poiché DocView non riesce a visualizzare il PDF! Passare manualmente il buffer in modalità PDF-view, quindi mostrarlo correttamente. Posso configurare le cose in modo che eww usi pdf-view-mode al primo tentativo?


Dai un'occhiata alla riga 403 del codice sorgente nel link allegato: bzr.savannah.gnu.org/lh/emacs/trunk/annotate/head:/lisp/net/… Potrebbe essere su una riga diversa a seconda della versione tu stai usando.
elenco delle leggi

Grazie, @lawlist, dopo aver posto la domanda ho scoperto che era dove doc-view-modeera stato chiamato impostando (debug-on-entry 'doc-view-mode).
Omar,


@Tyler, non sono sicuro, ma non indagherò se lo fa o meno perché (1) questa domanda ha già avuto risposta nel 2014, come si verifica scorrendo verso il basso fino alla risposta che ho accettato, (2) anche che la risposta non è necessaria al giorno d'oggi poiché con le versioni più recenti di Emacs e strumenti pdf ciò che volevo funziona subito! (così ho rimosso il codice suggerito gentilmente da T. Verron dal mio init.el qualche anno fa).
Omar,

1
@Omar Penso che la frase "risponde alla tua domanda?" viene aggiunto automaticamente quando contrassegni una domanda come duplicato ora? Non l'ho inserito a mano, comunque. Ho contrassegnato questo come duplicato, perché la domanda collegata funge da risposta canonica alle domande del modulo "come faccio a far funzionare gli strumenti pdf per X". Ovviamente, la tua domanda è stata posta e ha risposto prima dell'altra, ma penso che sia normale farlo quando una risposta generale completa affronta una domanda più vecchia e specifica.
Tyler,

Risposte:


7

Avvertenza: lavoro sporco in anticipo

Dal momento che " preferisci [gli strumenti pdf] a DocView ", è sicuro supporre che usarlo per visualizzare tutti i pdf sia accettabile?

Il frammento di codice seguente commuterà il documento in pdf-view-modequalsiasi momento doc-viewviene inserito 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)

Il comportamento può essere abilitato o disabilitato setqinserendo la variabile tv/prefer-pdf-toolsin t o zero.


Oh, mi ero perso che doc-view-modeaveva un gancio! Ho provato ad fare pubblicità eww-display-pdfe non ha funzionato (non so perché). Proverò la tua soluzione e riferirò indietro.
Omar,

Fantastico, grazie! Questo funziona (dopo aver rimosso la parentesi in giro tv/prefer-pdf-tools, che non è una funzione).
Omar,

3

È possibile utilizzare un avviso in giro eww-display-pdfper ignorare doc-view-modetemporaneamente la definizione di . Con la nuova nadvicelibreria è facile come:

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

Per ripristinare l'originale doc-view-mode, utilizzare (advice-remove 'eww-display-pdf 'eww-display-pdf-tools).

Ho aperto il bug 19270 di Emacs per rendere personalizzabile la modalità PDF EWW .


Freddo! Ho provato ad aggiungere consigli per eww-display-pdffarlo pdf-view-mode :afterfunzionare, ma ha funzionato per qualche motivo. Non mi è mai venuto in mente di scambiare la definizione della doc-view-modefunzione (probabilmente perché sono così abituato all'ambito lessicale!).
Omar

Grazie per aver aperto anche la segnalazione bug. Immagino che molte persone preferirebbero eww per aprire i PDF nel loro normale visualizzatore di PDF esterno.
Omar,

0

Uso emacs-28, eww utilizzo mailcap per aprire pdf, personalizzalo per aprirlo con pdf-tools:

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

Vedi Emacs - Help - pdf viewer per maggiori informazioni.


Vieni dal futuro? Non credo che Emacs 27 sia stato ancora rilasciato (è la build pre-release che sto usando), figuriamoci il 28.
Omar

Uso archlinux con la versione di sviluppo di emacs: aur / emacs-git 28.0.50.139945-1 [installato: 28.0.50.140001-1] (74) (1.07) GNU Emacs. Branca principale dello sviluppo.
Xinfa Tang,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.