DocViewの代わりにPDFにpdf-view-mode(pdf-toolsから)を使用するようにewwを構成できますか?


12

私はEmacs内でPDFを読むためにpdf-toolsを使用しており、DocViewよりもずっと好みます。ewwでPDFを指すURLを開こうとすると、pdf-toolsのpdf-view-modeではなくDocViewが使用されることに気づきました。DocViewがPDFを表示できないため、これは特に厄介です!バッファを手動でpdf-view-modeに切り替えると、正常に表示されます。ewwが最初の試行でpdf-view-modeを使用するように設定できますか?


添付リンクのソースコードの403行目を見てください:bzr.savannah.gnu.org/lh/emacs/trunk/annotate/head : /lisp / net / バージョンによっては別の行にある場合がありますあなたが使用しています。
法律家、2014

おかげで、@ lawlist、私が質問をした後、それがdoc-view-mode設定によって呼び出された場所であることがわかりました(debug-on-entry 'doc-view-mode)
オマール

3
これはあなたの質問に答えますか?emacsでpdf-tools(pdf-view-mode)を使用する方法
タイラー

@タイラー、よくわかりませんが、そうかどうかは調査しません。理由は、(1)この質問は2014年にすでに回答されているためです。私が同意した回答までスクロールして確認すると、(2)それでもEmacsとpdf-toolsのより新しいバージョンでは、私が欲しかったものは箱から出してしまうので、今日は答えは不要です!(そのため、数年前にT. Verronから親切に提案されたコードを私のinit.elから削除しました)。
Omar

1
@オマール「これはあなたの質問に答えますか?」質問に重複としてフラグを立てると、自動的に追加されますか?とにかく手で入らなかった。リンクされた質問が「Xでpdf-toolsを機能させるにはどうすればよいですか」という形式の質問に対する標準的な回答として機能するため、私はこれを重複としてフラグを立てました。もちろん、あなたの質問は他の質問よりも前に尋ねられ、答えられましたが、包括的な一般的な回答が古い、より具体的な質問に対処する場合、これを行うのが普通だと思います。
タイラー

回答:


7

警告:先の汚い回避策

あなたは「DocViewよりも[pdf-tools]を非常に好む」ので、それを使用してすべてのPDFを表示することは許容できると想定しても安全ですか?

次のコードスニペットは、ドキュメントが入力されたpdf-view-modeときにいつでもドキュメントを切り替えます。doc-viewpdf

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

setq変数tv/prefer-pdf-toolsをtまたはnilに-ingすることで、動作を有効または無効にできます。


ああ、doc-view-modeフックがあったのを見逃していた!私は分割を試みましたがeww-display-pdf、うまくいきませんでした(理由はわかりません)。私はあなたの解決策を試し、報告します。
オマール2014

素晴らしいです、ありがとう!これはtv/prefer-pdf-tools機能します(関数ではないかっこを削除した後)。
オマール2014

3

アドバイスを使用して、一時的にeww-display-pdfの定義を上書きできますdoc-view-mode。新しいnadviceライブラリを使用すると、これは次のように簡単です。

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

元に戻すにはdoc-view-mode、を使用します(advice-remove 'eww-display-pdf 'eww-display-pdf-tools)

Emacsバグ19270を開いて、EWW PDFモードをカスタマイズ可能にしました。


涼しい!eww-display-pdf実行するようにアドバイスを追加してみましpdf-view-mode :afterたが、通常どおり機能しましたが、何らかの理由で機能しませんでした。doc-view-mode関数の定義を交換することは決してありませんでした(おそらく、私がレキシカルスコープに慣れているためです)。
オマール2014

バグレポートを開いてくれてありがとう。多くの人が実際に通常の外部PDFビューアでPDFを開くことを望んでいると思います。
オマール2014

0

私はemacs-28を使用し、ewwはpdfを開くためにmailcapを使用し、pdf-toolsでopenを使用してカスタマイズします。

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

詳細については、Emacs-ヘルプ-pdfビューアを参照してください。


あなたは未来から来ましたか?私は、Emacs 27は、28おろか(私が使用しているプレリリースビルドだと)まだ発売されているとは思わない
オマール

私はemacsの開発バージョンでarchlinuxを使用しています:aur / emacs-git 28.0.50.139945-1 [installed:28.0.50.140001-1](74)(1.07)GNU Emacs。開発マスターブランチ。
xinfa tang
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.