Posso configurar o eww para usar o modo de exibição de pdf (das ferramentas de pdf) para PDFs em vez do DocView?

12

Eu uso ferramentas pdf para ler PDFs dentro do Emacs e prefiro muito isso ao DocView. Acabei de notar que, quando tento abrir um URL que aponta para um PDF no eww, ele usa o DocView em vez do modo de exibição de pdf das ferramentas de pdf. Isso é particularmente irritante, pois o DocView não exibe o PDF! Mudar o buffer para o modo de visualização em pdf manualmente e mostra-o com êxito. Posso configurar as coisas para que o eww use o modo de exibição de pdf na primeira tentativa?

Omar
fonte
Veja a linha 403 do código-fonte no link anexo: bzr.savannah.gnu.org/lh/emacs/trunk/annotate/head:/lisp/net/… Pode estar em uma linha diferente, dependendo da versão você está usando.
lawlist
Obrigado, @lawlist, depois de fazer a pergunta, achei que era onde doc-view-modeera chamado pela configuração (debug-on-entry 'doc-view-mode).
Omar
@ Tyler, não tenho certeza, mas não investigarei se isso ocorre ou não, porque (1) essa pergunta já foi respondida no ano de 2014, como você verifica rolando a tela para a resposta que eu aceitei, (2) até A resposta é desnecessária hoje em dia, já que com as versões mais recentes do Emacs e do pdf-tools o que eu queria funciona agora! (então eu removi o código gentilmente sugerido por T. Verron do meu init.el há alguns anos).
Omar
1
@ Omar Acho que a frase "Isso responde à sua pergunta?" é adicionado automaticamente quando você sinaliza uma pergunta como duplicada agora? Eu não entrei à mão, de qualquer maneira. Eu sinalizei isso como duplicado, porque a pergunta vinculada serve como resposta canônica para as perguntas do formulário "como faço para que as ferramentas pdf funcionem para o X". Obviamente, sua pergunta foi feita e respondida antes da outra, mas acho que é normal fazer isso quando uma resposta geral abrangente aborda uma pergunta mais antiga e específica.
Tyler

Respostas:

7

Aviso: solução alternativa suja pela frente

Como você " prefere muito [pdf-tools] ao DocView ", é seguro assumir que usá-lo para exibir todos os pdfs é aceitável?

O seguinte trecho de código mudará o documento para pdf-view-modequalquer momento que doc-viewfor inserido com um 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)

O comportamento pode ser ativado ou desativado ao adicionar setqa variável tv/prefer-pdf-toolsa t ou nulo.

T. Verron
fonte
Ah, eu senti falta disso, doc-view-modetinha um gancho! Eu tentei adivising eww-display-pdfe que não funcionou (não sei por que). Vou tentar sua solução e informar novamente.
Omar
Incrível, obrigado! Isso funciona (depois de remover os parênteses tv/prefer-pdf-tools, o que não é uma função).
Omar
3

Você pode usar um aviso eww-display-pdfpara substituir doc-view-modetemporariamente a definição de . Com a nova nadvicebiblioteca, é tão fácil quanto:

(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 voltar ao original doc-view-mode, use (advice-remove 'eww-display-pdf 'eww-display-pdf-tools).

Abri o bug 19270 do Emacs para tornar o Modo PDF do EWW personalizável.

lunaryorn
fonte
Legal! Tentei adicionar conselhos para eww-display-pdffazê-lo funcionar pdf-view-mode :afternormalmente, mas isso não funcionou por algum motivo. Nunca me ocorreu trocar a definição da doc-view-modefunção (provavelmente porque estou tão acostumada com o escopo lexical!).
Omar
Obrigado por abrir o relatório de erros também. Eu imagino que muitas pessoas realmente preferem o eww para abrir PDFs em seu visualizador de PDF externo habitual.
Omar
0

Eu uso o emacs-28, eww use o mailcap para abrir o pdf, personalize-o com o pdf-tools:

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

Veja Emacs - Ajuda - visualizador de pdf para mais informações.

xinfa tang
fonte
Você é do futuro? Eu não acho que o Emacs 27 tenha sido lançado ainda (essa é a compilação de pré-lançamento que estou usando), muito menos 28.
Omar
Eu uso o archlinux com a versão de desenvolvimento do emacs: aur / emacs-git 28.0.50.139945-1 [instalado: 28.0.50.140001-1] (74) (1.07) GNU Emacs. Ramo mestre de desenvolvimento.
xinfa tang 15/01