Czy mogę skonfigurować eww do używania trybu przeglądania PDF (z narzędzi pdf) dla plików PDF zamiast DocView?

12

Korzystam z narzędzi pdf, aby czytać pliki PDF wewnątrz Emacsa i zdecydowanie wolę to niż DocView. Właśnie zauważyłem, że kiedy próbuję otworzyć adres URL, który wskazuje na plik PDF w eww, używa DocView zamiast trybu widoku pdf z narzędzi pdf. Jest to szczególnie denerwujące, ponieważ DocView nie wyświetla pliku PDF! Ręczne przełączanie bufora na tryb podglądu pdf następnie pokazuje go z powodzeniem. Czy mogę skonfigurować rzeczy tak, aby eww używał trybu przeglądania PDF przy pierwszej próbie?

Omar
źródło
Spójrz na linię 403 kodu źródłowego w załączonym linku: bzr.savannah.gnu.org/lh/emacs/trunk/annotate/head:/lisp/net/… Może być w innej linii w zależności od wersji ty używasz.
prawnik
Dzięki, @lawlist, po tym, jak zadałem pytanie, które znalazłem, wywołano je doc-view-modeprzez ustawienie (debug-on-entry 'doc-view-mode).
Omar,
@Tyler, nie jestem pewien, ale nie zbadam, czy tak jest, ponieważ (1) odpowiedź na to pytanie była już udzielona w 2014 r., Jak weryfikujesz, przewijając w dół do odpowiedzi, którą zaakceptowałem, (2) nawet to odpowiedź jest w dzisiejszych czasach zbędna, ponieważ przy nowszych wersjach Emacsa i narzędziach pdf to, czego chciałem, działa od razu! (więc usunąłem kod uprzejmie sugerowany przez T. Verrona z mojego init.el kilka lat temu).
Omar
1
@Omar Myślę, że wyrażenie „Czy to odpowiada na twoje pytanie?” zostanie dodany automatycznie, gdy oflagujesz pytanie jako duplikat? W każdym razie nie wszedłem go ręcznie. Zgłosiłem to jako duplikat, ponieważ połączone pytanie służy jako kanoniczna odpowiedź na pytania w formie „jak uzyskać narzędzia pdf do pracy dla X”. Oczywiście twoje pytanie zostało zadane i udzielono na nie odpowiedzi przed drugim pytaniem, ale myślę, że jest to normalne, gdy wyczerpująca ogólna odpowiedź dotyczy starszego, bardziej szczegółowego pytania.
Tyler

Odpowiedzi:

7

Ostrzeżenie: brudne obejście z przodu

Ponieważ „ zdecydowanie wolisz [narzędzia pdf] od DocView ”, czy można bezpiecznie założyć, że używanie go do przeglądania wszystkich plików pdf jest dopuszczalne?

Poniższy fragment kodu przełączy dokument w pdf-view-modedowolnym momencie, gdy doc-viewzostanie wprowadzony pdfdokument.

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

Zachowanie można włączyć lub wyłączyć, setqustawiając zmienną tv/prefer-pdf-toolsna t lub zero.

T. Verron
źródło
Och, tęskniłem doc-view-modeza hakiem! Próbowałem adivising eww-display-pdfi to nie działało (nie wiem dlaczego). Spróbuję twojego rozwiązania i zdam raport.
Omar
Wielkie dzieki! tv/prefer-pdf-toolsDziała to (po usunięciu nawiasu , który nie jest funkcją).
Omar
3

Możesz użyć porady wokół, eww-display-pdfaby zastąpić definicję doc-view-modetymczasowo. Dzięki nowej nadvicebibliotece jest to tak proste, jak:

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

Aby przywrócić oryginał doc-view-mode, użyj (advice-remove 'eww-display-pdf 'eww-display-pdf-tools).

Otworzyłem błąd Emacsa 19270, aby dostosować tryb EWW PDF.

księżycowy
źródło
Fajne! Próbowałem dodać porady, aby eww-display-pdfpo prostu sprawić, żeby działało pdf-view-mode :after, jak zwykle, ale z jakiegoś powodu to nie zadziałało. Nigdy nie przyszło mi do głowy, aby zamienić definicję doc-view-modefunkcji (prawdopodobnie dlatego, że jestem tak przyzwyczajony do zakresu leksykalnego!).
Omar
Dziękujemy za otwarcie raportu o błędzie. Wyobrażam sobie, że wiele osób wolałoby eww niż otwieranie plików PDF w zwykłej zewnętrznej przeglądarce plików PDF.
Omar
0

Używam emacs-28, eww używam mailcap do otwierania pdf, niestandardowe otwieranie za pomocą narzędzi pdf:

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

Aby uzyskać więcej informacji, zobacz Emacs - Pomoc - przeglądarka plików pdf .

Xinfa Tang
źródło
Czy jesteś z przyszłości? Nie sądzę, żeby Emacs 27 został jeszcze wydany (to kompilacja przedpremierowa, której używam), a co dopiero 28.
Omar
Używam archlinux z wersją programistyczną emacs: aur / emacs-git 28.0.50.139945-1 [zainstalowane: 28.0.50.140001-1] (74) (1.07) GNU Emacs. Główny dział rozwoju.
xinfa tang