tools/pdf: leave it to user to build epdfinfo
Trying to do this automatically is buggy to the point of insanity. It's not reliable enough to use as a :post-build target for the pdf-tools package. Better to fail gracefully, let the user know what they must do, and let them do it at their own discretion.
This commit is contained in:
parent
8424e0a780
commit
daa50557a4
2 changed files with 15 additions and 22 deletions
|
@ -18,16 +18,21 @@
|
|||
(add-hook 'kill-buffer-hook #'+pdf-cleanup-windows-h nil t)))
|
||||
|
||||
:config
|
||||
;; HACK `pdf-tools-install-noverify' tries to "reset" open pdf-view-mode
|
||||
;; buffers, but does so incorrectly, causing errors when pdf-tools is
|
||||
;; loaded after opening a pdf file. We've done its job ourselves in
|
||||
;; `+pdf--install-epdfinfo-a' instead.
|
||||
(defadvice! +pdf--inhibit-pdf-view-mode-resets-a (orig-fn &rest args)
|
||||
:around #'pdf-tools-install-noverify
|
||||
(letf! ((#'pdf-tools-pdf-buffer-p #'ignore))
|
||||
(apply orig-fn args)))
|
||||
(defadvice! +pdf--install-epdfinfo-a (orig-fn &rest args)
|
||||
"Install epdfinfo after the first PDF file, if needed."
|
||||
:around #'pdf-view-mode
|
||||
(if (file-executable-p pdf-info-epdfinfo-program)
|
||||
(apply orig-fn args)
|
||||
;; If we remain in pdf-view-mode, it'll spit out cryptic errors. This
|
||||
;; graceful failure is better UX.
|
||||
(fundamental-mode)
|
||||
(message "Viewing PDFs in Emacs requires epdfinfo. Use `M-x pdf-tools-install' to build it")))
|
||||
|
||||
(pdf-tools-install-noverify)
|
||||
(when (memq 'pdf-occur-global-minor-mode pdf-tools-enabled-modes)
|
||||
(pdf-occur-global-minor-mode 1))
|
||||
(when (memq 'pdf-virtual-global-minor-mode pdf-tools-enabled-modes)
|
||||
(pdf-virtual-global-minor-mode 1))
|
||||
(add-hook 'pdf-view-mode-hook 'pdf-tools-enable-minor-modes)
|
||||
|
||||
;; For consistency with other special modes
|
||||
(map! :map pdf-view-mode-map :gn "q" #'kill-current-buffer)
|
||||
|
|
|
@ -3,19 +3,7 @@
|
|||
|
||||
(package! pdf-tools
|
||||
:recipe (:host github
|
||||
:repo "vedang/pdf-tools"
|
||||
:post-build
|
||||
(let ((warning-minimum-log-level :error))
|
||||
(require 'pdf-tools)
|
||||
(unless (file-exists-p pdf-info-epdfinfo-program)
|
||||
(require 'pdf-occur)
|
||||
(print-group!
|
||||
(print! (start "Building epdfinfo for pdf-tools"))
|
||||
(with-current-buffer (pdf-tools-install 'no-query)
|
||||
(while compilation-in-progress
|
||||
(sleep-for 1))
|
||||
(when (> compilation-num-errors-found 0)
|
||||
(print! (warn "Failed to build epdfinfo because: %s" (buffer-string)))))))))
|
||||
:repo "vedang/pdf-tools")
|
||||
:pin "d262cf9e19d57c6567e06e51d109150c20753839")
|
||||
|
||||
(package! saveplace-pdf-view :pin "54ed966b842501c3c092dbf57b372e37b033c578")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue