Eww'yi PDF'ler için DocView yerine pdf-view-mode (pdf-tools'dan) kullanacak şekilde yapılandırabilir miyim?


12

Emacs içindeki PDF'leri okumak için pdf-tools kullanıyorum ve bunu DocView'e tercih ederim. Sadece bir URL thar'ı eww'de bir PDF'ye açmaya çalıştığımda, pdf araçlarından pdf-view-mode yerine DocView kullandığını fark ettim. DocView PDF'yi görüntüleyemediğinden bu özellikle sinir bozucu! Arabelleği manuel olarak pdf-view-mode olarak değiştirmek başarılı bir şekilde gösterir. Eww ilk denemede pdf-view-mode kullanacak şekilde bir şeyler yapılandırabilir miyim?


Ekteki bağlantıdaki kaynak kodun 403 satırına bakın: bzr.savannah.gnu.org/lh/emacs/trunk/annotate/head:/lisp/net/… Hangi sürüme bağlı olarak farklı bir satırda olabilir kullanıyorsun.
hukukçu

Teşekkürler @lawlist, soruyu sorduktan sonra nerede doc-view-modeolduğunu belirleyerek aradığını buldum (debug-on-entry 'doc-view-mode).
Omar


@Tyler, emin değilim ama bunun olup olmadığını araştırmam çünkü Emacs ve pdf-tools'ın daha yeni sürümleriyle istediğim şey kutunun dışında çalıştığı için cevap günümüzde gereksiz! (bu yüzden T. Verron tarafından önerilen kodu birkaç yıl önce init.el'den kaldırdım).
Omar

1
@Omar "Bu, sorunuza cevap veriyor mu?" bir soruyu şimdi kopya olarak işaretlediğinizde otomatik olarak eklenir mi? Zaten elle girmedim. Bunu bir kopya olarak işaretledim, çünkü bağlantılı soru "X için çalışmak için pdf araçlarını nasıl edinebilirim" biçimindeki soruların kanonik cevabı olarak hizmet eder. Elbette, sorunuz diğer soru olmadan önce soruldu ve cevaplandı, ancak bence kapsamlı bir genel cevap daha eski, daha spesifik bir soruya cevap verdiğinde bunu yapmak normaldir.
Tyler

Yanıtlar:


7

Uyarı: Kirli geçici çözüm

"Büyük ölçüde [pdf-tools] 'ı DocView için tercih ettiğiniz için ", tüm pdfs görüntülemek için kullanmanın kabul edilebilir olduğunu varsaymak güvenli midir?

Belgeyi geçecektir Aşağıdaki kod parçası pdf-view-modeher zaman doc-viewbir ile girilir pdfbelgenin.

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

setqDeğişken tv/prefer-pdf-toolst veya nil değerine çevrilerek davranış etkinleştirilebilir veya devre dışı bırakılabilir .


Ah, doc-view-modebir kancası olduğunu kaçırmıştım ! Ben adivising denedim eww-display-pdfve bu işe yaramadı (neden emin değilim). Çözümünüzü deneyeceğim ve rapor vereceğim.
Omar

Harika, teşekkürler! Bu işe yarar (etrafında tv/prefer-pdf-toolsbir işlev olmayan parantez kaldırıldıktan sonra ).
Omar

3

Geçici olarak eww-display-pdftanımını geçersiz kılmak için etrafında bir tavsiye kullanabilirsiniz doc-view-mode. Yeni nadvicekütüphane ile bu kadar kolay:

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

Orijinaline geri dönmek için düğmesini doc-view-modekullanın (advice-remove 'eww-display-pdf 'eww-display-pdf-tools).

EWW PDF Modunu özelleştirilebilir yapmak için Emacs bug 19270'i açtım .


Güzel! Her zamanki işini eww-display-pdfyapmasını sağlamak için tavsiye eklemeyi denedim pdf-view-mode :after, ama bu bir sebepten ötürü işe yaramadı. doc-view-modeFonksiyonun tanımını değiştirmek hiç aklıma gelmedi (muhtemelen sözlük kapsamına çok alışkınım!).
Omar

Hata raporunu da açtığınız için teşekkür ederiz. Bir çok insanın PDF'leri alışılmış harici PDF görüntüleyicisinde açmayı gerçekten tercih edeceğini düşünürdüm.
Omar

0

Emacs-28 kullanıyorum, eww pdf'yi açmak için mailcap kullanıyorum, pdf-tools ile açarak özelleştirelim:

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

Daha fazla bilgi için Emacs - Yardım - pdf görüntüleyiciye bakın.


Gelecekten misin? Emacs 27'nin henüz piyasaya sürülmediğini sanmıyorum (bu benim kullandığım yayın öncesi yapı), 28.
Ömer

Archlinux'u emacs geliştirme sürümü ile kullanıyorum: aur / emacs-git 28.0.50.139945-1 [kurulu: 28.0.50.140001-1] (74) (1.07) GNU Emacs. Geliştirme ana dalı.
xinfa tang
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.