Tôi có thể định cấu hình eww để sử dụng chế độ xem pdf (từ các công cụ pdf) cho các tệp PDF thay vì DocView không?


12

Tôi sử dụng các công cụ pdf để đọc các tệp PDF bên trong Emacs và rất thích nó cho DocView. Tôi chỉ nhận thấy rằng khi tôi cố gắng mở một URL thar trỏ đến PDF trong eww, nó sử dụng DocView thay vì chế độ xem pdf từ các công cụ pdf. Điều này đặc biệt khó chịu vì DocView không hiển thị PDF! Chuyển đổi bộ đệm sang chế độ xem pdf theo cách thủ công sau đó thành công hiển thị nó. Tôi có thể định cấu hình mọi thứ để eww sử dụng chế độ xem pdf trong lần thử đầu tiên không?


Hãy xem dòng 403 của mã nguồn trong liên kết đính kèm: bzr.savannah.gnu.org/lh/emacs/trunk/annotate/head:/lisp/net/ trộm Nó có thể nằm trên một dòng khác tùy thuộc vào phiên bản nào bạn đang sử dụng.
luật

Cảm ơn, @lawlist, sau khi tôi hỏi câu hỏi tôi đã tìm thấy đó là nơi doc-view-modeđược gọi bằng cách đặt (debug-on-entry 'doc-view-mode).
Omar

3
Điều này có trả lời câu hỏi của bạn không? Làm cách nào để sử dụng các công cụ pdf (chế độ xem pdf) trong emacs?
Tyler

@Tyler, tôi không chắc nhưng tôi sẽ không điều tra xem có hay không bởi vì (1) câu hỏi này đã được trả lời vào năm 2014, khi bạn xác minh bằng cách cuộn xuống câu trả lời tôi đã chấp nhận, (2) thậm chí là câu trả lời là không cần thiết hiện nay vì với các phiên bản gần đây hơn của Emacs và công cụ pdf, những gì tôi muốn làm việc ra khỏi hộp! (vì vậy tôi đã xóa mã được đề xuất bởi T. Verron khỏi init.el của tôi vài năm trước).
Omar

1
@Omar Tôi nghĩ cụm từ "Điều này có trả lời câu hỏi của bạn không?" được thêm tự động khi bạn gắn cờ một câu hỏi dưới dạng trùng lặp bây giờ? Tôi đã không nhập nó bằng tay, dù sao đi nữa. Tôi đã đánh dấu cái này dưới dạng trùng lặp, bởi vì câu hỏi được liên kết đóng vai trò là câu trả lời chính tắc cho các câu hỏi có dạng "làm cách nào để công cụ pdf hoạt động cho X". Tất nhiên, câu hỏi của bạn đã được hỏi và trả lời trước câu hỏi khác, nhưng tôi nghĩ việc làm này là bình thường khi một câu trả lời chung toàn diện giải quyết một câu hỏi cũ hơn, cụ thể hơn.
Tyler

Câu trả lời:


7

Cảnh báo: công việc bẩn thỉu phía trước

Vì bạn " rất thích [công cụ pdf] cho DocView ", nên có an toàn không khi cho rằng sử dụng nó để xem tất cả các tệp pdf là chấp nhận được?

Đoạn mã sau đây sẽ chuyển tài liệu sang pdf-view-modebất cứ lúc nào doc-viewđược nhập cùng với pdftài liệu.

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

Hành vi có thể được kích hoạt hoặc vô hiệu hóa bằng cách setq-ing biến tv/prefer-pdf-toolsthành t hoặc nil.


Oh, tôi đã bỏ lỡ mà doc-view-modecó một cái móc! Tôi đã thử quảng cáo eww-display-pdfvà điều đó không hiệu quả (không biết tại sao). Tôi sẽ thử giải pháp của bạn và báo cáo lại.
Omar

Thật sự cảm ơn! Điều này không hoạt động (sau khi bạn loại bỏ dấu ngoặc đơn xung quanh tv/prefer-pdf-tools, đây không phải là một hàm).
Omar

3

Bạn có thể sử dụng một lời khuyên xung quanh eww-display-pdfđể ghi đè định nghĩa doc-view-modetạm thời. Với nadvicethư viện mới, việc này dễ dàng như:

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

Để trở lại ban đầu doc-view-mode, sử dụng (advice-remove 'eww-display-pdf 'eww-display-pdf-tools).

Tôi đã mở lỗi Emacs 19270 để có thể tùy chỉnh Chế độ PDF EWW.


Mát mẻ! Tôi đã cố gắng thêm lời khuyên để eww-display-pdflàm cho nó chạy pdf-view-mode :afternó hoạt động bình thường, nhưng vì lý do nào đó không hoạt động. Nó không bao giờ xảy ra với tôi để trao đổi định nghĩa của doc-view-modehàm (có lẽ vì tôi đã quá quen với phạm vi từ vựng!).
Omar

Cảm ơn vì đã mở báo cáo lỗi. Tôi sẽ tưởng tượng nhiều người thực sự thích eww để mở các tệp PDF trong trình xem PDF bên ngoài thông thường của họ.
Omar

0

Tôi sử dụng emacs-28, eww sử dụng mailcap để mở pdf, tùy chỉnh nó bằng cách mở bằng các công cụ pdf:

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

Xem Emacs - Trợ giúp - trình xem pdf để biết thêm thông tin.


Bạn đến từ tương lai? Tôi không nghĩ Emacs 27 đã được phát hành (đó là bản dựng trước khi phát hành tôi đang sử dụng), chứ đừng nói đến 28.
Omar

Tôi sử dụng archlinux với phiên bản phát triển của emacs: aur / emacs-git 28.0.50.139945-1 [đã cài đặt: 28.0.50.140001-1] (74) (1.07) GNU Emacs. Phát triển chi nhánh tổng thể.
xinfa tang
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.