diff options
| -rw-r--r-- | init.org | 3 | ||||
| -rw-r--r-- | lib/doc/jao-doc-view.el | 31 | 
2 files changed, 33 insertions, 1 deletions
| @@ -1497,7 +1497,8 @@          :bind (:map doc-view-mode-map                      ("b" . jao-doc-view-back)                      ("B" . jao-doc-view-forward) -                    ("S" . jao-doc-view-save-session))) +                    ("S" . jao-doc-view-save-session) +                    ("u" . jao-doc-view-visit-url)))        (use-package saveplace-pdf-view :ensure t :demand t :after doc-view)      #+end_src diff --git a/lib/doc/jao-doc-view.el b/lib/doc/jao-doc-view.el index 762719b..5c6cbbc 100644 --- a/lib/doc/jao-doc-view.el +++ b/lib/doc/jao-doc-view.el @@ -182,4 +182,35 @@  (advice-add 'doc-view-goto-page :before #'jao-doc-view--trail-push) +;;; Find URLs +(defun jao-doc-view--page-urls () +  (if doc-view--current-converter-processes +      (message "DocView: please wait till conversion finished.") +    (let ((txt (expand-file-name "doc.txt" (doc-view--current-cache-dir))) +          (page (doc-view-current-page))) +      (if (file-readable-p txt) +          (with-current-buffer (find-file-noselect txt) +            (goto-char (point-min)) +            (re-search-forward page-delimiter nil t (1- page)) +            (let ((end (save-excursion +                         (if (re-search-forward page-delimiter nil t) +                             (point) +                           (point-max)))) +                  (urls)) +              (while (re-search-forward "https?://" end t) +                (push (thing-at-point-url-at-point) urls)) +              urls)) +        (doc-view-doc->txt txt 'jao-doc-view--page-urls))))) + +(defun jao-doc-view-visit-url () +  "Visit URL displayed in this page." +  (interactive nil doc-view-mode) +  (let ((urls (jao-doc-view--page-urls))) +    (if (null urls) +        (message "No URLs in this page") +      (when-let (url (completing-read "URL: " urls nil nil +                                      (when (null (cdr urls)) (car urls)))) +        (browse-url url))))) + +  (provide 'jao-doc-view) | 
