39 lines
1.2 KiB
EmacsLisp
39 lines
1.2 KiB
EmacsLisp
;;; +pdf-tools.el --- Extras for the excellent pdf-tools' -*- lexical-binding: t; -*-
|
|
|
|
;;; Commentary:
|
|
|
|
;;; Code:
|
|
|
|
;; XXX: The way I'm dispatching browsers here is /very/ down-and-dirty. It
|
|
;; needs to be much improved.
|
|
|
|
(defun +pdf-view-open-all-pagelinks (&optional browse-url-func)
|
|
"Open all the links on this page of a PDF.
|
|
BROWSE-URL-FUNC overrides the default `browse-url'."
|
|
(interactive)
|
|
(let ((links (pdf-info-pagelinks (pdf-view-current-page)))
|
|
(browse-url-func (or browse-url-func #'browse-url))
|
|
(seen))
|
|
(dolist (link links)
|
|
(when-let* ((uri (alist-get 'uri link))
|
|
(_ (not (member uri seen))))
|
|
(push uri seen)
|
|
(funcall browse-url-func uri)))))
|
|
|
|
(defun +pdf-view-open-links-in-chrome ()
|
|
"Open all links on this PDF page in Chrome.
|
|
See also `+pdf-view-open-all-pagelinks'."
|
|
(interactive)
|
|
(+pdf-view-open-all-pagelinks #'browse-url-chrome))
|
|
|
|
(defun +pdf-view-position (&optional spacer)
|
|
"Return the page we're on for the modeline."
|
|
(when (derived-mode-p 'pdf-view-mode)
|
|
(format "%sp.%s/%s"
|
|
(or spacer (bound-and-true-p +modeline-default-spacer) " ")
|
|
(pdf-view-current-page)
|
|
(pdf-info-number-of-pages))))
|
|
|
|
(provide '+pdf-tools)
|
|
;;; +pdf-tools.el ends here
|