Bisakah saya mengonfigurasi eww untuk menggunakan mode pdf-view-from (dari pdf-tools) untuk PDF alih-alih DocView?

12

Saya menggunakan pdf-tools untuk membaca PDF di dalam Emacs dan sangat menyukainya daripada DocView. Saya hanya memperhatikan bahwa ketika saya mencoba membuka URL yang menunjuk ke PDF di eww, ia menggunakan DocView alih-alih pdf-view-mode dari pdf-tools. Ini sangat menjengkelkan karena DocView gagal menampilkan PDF! Mengalihkan buffer ke mode pdf-view secara manual kemudian berhasil memperlihatkannya. Bisakah saya mengonfigurasi beberapa hal sehingga eww menggunakan mode pdf-view-mode pada percobaan pertama?

Omar
sumber
Lihatlah baris 403 dari kode sumber di tautan terlampir: bzr.savannah.gnu.org/lh/emacs/trunk/annotate/head:/lisp/net/… Mungkin di baris yang berbeda tergantung pada versi mana Anda menggunakan.
hukum
Terima kasih, @lawlist, setelah saya mengajukan pertanyaan, saya menemukan di situlah doc-view-modedipanggil dengan setting (debug-on-entry 'doc-view-mode).
Omar
3
Apakah ini menjawab pertanyaan Anda? Bagaimana cara menggunakan pdf-tools (pdf-view-mode) di emacs?
Tyler
@ Tyler, saya tidak yakin tetapi saya tidak akan menyelidiki apakah itu karena atau tidak (1) pertanyaan ini sudah dijawab pada tahun 2014, saat Anda memverifikasi dengan menggulir ke bawah ke jawaban yang saya terima, (2) bahkan jawabannya tidak perlu saat ini karena dengan versi terbaru dari Emacs dan pdf-tools yang saya inginkan berhasil di luar kotak! (jadi saya menghapus kode yang disarankan oleh T. Verron dari init.el saya beberapa tahun yang lalu).
Omar
1
@ Umar saya pikir kalimat "Apakah ini menjawab pertanyaan Anda?" ditambahkan secara otomatis saat Anda menandai pertanyaan sebagai duplikat sekarang? Saya tidak memasukinya dengan tangan. Saya menandai ini sebagai duplikat, karena pertanyaan terkait berfungsi sebagai jawaban kanonik untuk pertanyaan-pertanyaan dari bentuk "bagaimana saya mendapatkan pdf-tools untuk X". Tentu saja, pertanyaan Anda diajukan dan dijawab sebelum pertanyaan lainnya, tapi saya pikir itu normal untuk melakukan ini ketika jawaban umum yang komprehensif membahas pertanyaan yang lebih tua, lebih spesifik.
Tyler

Jawaban:

7

Peringatan: pekerjaan kotor di depan

Karena Anda " lebih suka [pdf-tools] daripada DocView ", apakah aman untuk menganggap bahwa menggunakannya untuk melihat semua pdf dapat diterima?

Cuplikan kode berikut akan mengalihkan dokumen ke pdf-view-modekapan saja doc-viewdimasukkan dengan pdfdokumen.

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

Perilaku dapat diaktifkan atau dinonaktifkan dengan setq-ing variabel tv/prefer-pdf-toolske t atau nil.

T. Verron
sumber
Oh, aku rindu yang doc-view-modepunya kait! Saya mencoba memberi nasihat eww-display-pdfdan itu tidak berhasil (tidak yakin mengapa). Saya akan mencoba solusi Anda dan melaporkan kembali.
Omar
Keren terima kasih! Ini berfungsi (setelah Anda menghapus tanda kurung sekitar tv/prefer-pdf-tools, yang bukan merupakan fungsi).
Omar
3

Anda dapat menggunakan saran sekitar eww-display-pdfuntuk mengganti definisi doc-view-modesementara. Dengan nadviceperpustakaan baru ini semudah:

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

Untuk kembali ke aslinya doc-view-mode, gunakan (advice-remove 'eww-display-pdf 'eww-display-pdf-tools).

Saya telah membuka bug Emacs 19270 untuk membuat EWW PDF Mode dapat disesuaikan.

lunaryorn
sumber
Keren! Saya mencoba menambahkan saran untuk eww-display-pdfmembuatnya berjalan pdf-view-mode :aftersaja berfungsi seperti biasa, tetapi itu tidak berhasil karena suatu alasan. Tidak pernah terpikir oleh saya untuk menukar definisi doc-view-modefungsi (mungkin karena saya sudah terbiasa dengan lingkup leksikal!).
Omar
Terima kasih telah membuka laporan bug juga. Saya akan membayangkan banyak orang benar-benar lebih suka eww untuk membuka PDF di penampil PDF eksternal adat mereka.
Omar
0

Saya menggunakan emacs-28, saya menggunakan mailcap untuk membuka pdf, kustom dengan membuka dengan pdf-tools:

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

Lihat Emacs - Help - pdf viewer untuk informasi lebih lanjut.

xinfa tang
sumber
Apakah kamu dari masa depan? Saya tidak berpikir Emacs 27 telah dirilis (itulah bangunan pra-rilis yang saya gunakan), apalagi 28.
Omar
Saya menggunakan archlinux dengan versi pengembangan emacs: aur / emacs-git 28.0.50.139945-1 [diinstal: 28.0.50.140001-1] (74) (1.07) GNU Emacs. Cabang utama pengembangan.
xinfa tang