;;; +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