Чи можна налаштувати eww на використання PDF-режиму перегляду (від pdf-інструментів) для PDF-файлів замість DocView?


12

Я використовую pdf-інструменти для читання PDF-файлів всередині Emacs і дуже віддаю перевагу DocView. Я щойно помітив, що коли я намагаюся відкрити URL-адресу thar до PDF в eww, він використовує DocView замість режиму перегляду pdf з pdf-інструментів. Це особливо дратує, оскільки DocView не відображає PDF! Перемикання буфера в режим перегляду у форматі PDF вручну, а потім успішно показує його. Чи можу я налаштувати речі так, щоб eww використовував pdf-view-режим з першої спроби?


Погляньте на рядок 403 вихідного коду у доданому посиланні: bzr.savannah.gnu.org/lh/emacs/trunk/annotate/head:/lisp/net/… Це може бути в іншому рядку залежно від версії ви використовуєте.
законник

Дякую, @lawlist, після того, як я поставив запитання, яке я виявив, що саме там doc-view-modeподзвонили, встановивши (debug-on-entry 'doc-view-mode).
Омар

3
Чи відповідає це на ваше запитання? Як використовувати pdf-інструменти (pdf-view-mode) в emacs?
Тайлер

@Tyler, я не впевнений, але я не буду досліджувати, чи так це чи ні, тому що (1) на це питання вже відповіли в 2014 році, як ви це підтверджуєте, прокручуючи вниз відповідь, яку я прийняв, (2) навіть це відповідь сьогодні непотрібний, оскільки з більш новими версіями Emacs та pdf-інструментів, те, що я хотів, розгортається! (тому я видалив код, ласкаво запропонований Т. Верроном з мого init.el кілька років тому).
Омар

1
@Omar Я думаю, що фраза "Чи відповідає це на ваше запитання?" автоматично додається, коли ви позначите запитання як дублікат зараз? Я все одно не вводив його вручну. Я позначив це як дублікат, тому що пов'язане питання служить канонічною відповіддю на запитання форми "як мені отримати pdf-інструменти для роботи на X". Звичайно, ваше запитання було задано і відповіли до того, як було поставлено інше питання, але я думаю, що це нормально робити, коли вичерпна загальна відповідь стосується старішого, більш конкретного питання.
Тайлер

Відповіді:


7

Попередження: брудна робота попереду

Оскільки ви « сильно віддаєте перевагу [pdf-tools] DocView », чи можна впевнено вважати, що використання його для перегляду всіх pdfs є прийнятним?

Наступний фрагмент коду переключить документ на pdf-view-modeбудь-який час, коли doc-viewбуде введено pdfдокумент.

(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 або нуль.


О, я пропустив, що doc-view-modeмав гачок! Я спробував порадити, eww-display-pdfі це не вийшло (не знаю, чому). Я спробую ваше рішення і звіту.
Омар

Дивовижне, дякую! Це спрацьовує (після видалення круглих дужок навколо tv/prefer-pdf-tools, що не є функцією).
Омар

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функції (можливо, тому, що я так звикла до лексичної сфери!).
Омар

Дякуємо, що також відкрили звіт про помилку. Я думаю, що багато людей воліють електронну пошту відкривати PDF-файли у звичайному зовнішньому переглядачі PDF.
Омар

0

Я використовую emacs-28, eww використовую mailcap, щоб відкрити pdf, настроював його відкритим за допомогою pdf-інструментів:

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

Для отримання додаткової інформації див. Emacs - Help - переглядач PDF .


Ви з майбутнього? Я не думаю, що Emacs 27 ще не було випущено (це збірка до випуску, яку я використовую), не кажучи вже про 28.
Омар

Я використовую archlinux з версією розробки emacs: aur / emacs-git 28.0.50.139945-1 [встановлено: 28.0.50.140001-1] (74) (1.07) GNU Emacs. Майстер відділу розвитку.
xinfa tang
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.