summaryrefslogtreecommitdiffhomepage
path: root/lib/doc
diff options
context:
space:
mode:
authorjao <jao@gnu.org>2021-04-12 03:51:23 +0100
committerjao <jao@gnu.org>2021-04-12 03:51:23 +0100
commit5dd64cbc0b91ca9ec6bb1eecca030393ded6e549 (patch)
tree467e6aa6b75a8b86c340796fa3c0953d7981bd43 /lib/doc
parentca4ab244f1731c78ee890b4f7737babed87315e7 (diff)
downloadelibs-5dd64cbc0b91ca9ec6bb1eecca030393ded6e549.tar.gz
elibs-5dd64cbc0b91ca9ec6bb1eecca030393ded6e549.tar.bz2
zathura support improvements
Diffstat (limited to 'lib/doc')
-rw-r--r--lib/doc/jao-doc-view.el39
-rw-r--r--lib/doc/jao-org-links.el5
2 files changed, 27 insertions, 17 deletions
diff --git a/lib/doc/jao-doc-view.el b/lib/doc/jao-doc-view.el
index 93bf316..e19839a 100644
--- a/lib/doc/jao-doc-view.el
+++ b/lib/doc/jao-doc-view.el
@@ -100,11 +100,11 @@
(image-set-window-vscroll
(round (/ (* height (cdr (pdf-view-image-size))) (frame-char-height))))))
-(defun jao-doc-view-pdf-outline ()
+(defun jao-doc-view-pdf-outline (&optional file-name)
(if (derived-mode-p 'pdf-view-mode)
(pdf-info-outline)
(let ((outline nil)
- (fn (shell-quote-argument (buffer-file-name))))
+ (fn (shell-quote-argument (or file-name (buffer-file-name)))))
(with-temp-buffer
(insert (shell-command-to-string (format "mutool show %s outline" fn)))
(goto-char (point-min))
@@ -115,13 +115,13 @@
outline)))
(nreverse outline))))
-(defun jao-doc-view-section-title (&optional page)
+(defun jao-doc-view-section-title (&optional page file-name)
(when (not jao--pdf-outline)
- (setq-local jao--pdf-outline (jao-doc-view-pdf-outline)))
+ (setq-local jao--pdf-outline (jao-doc-view-pdf-outline file-name)))
(let ((page (or page (jao-doc-view-current-page)))
(outline jao--pdf-outline)
(cur-page 0)
- (cur-title (jao-doc-view-title buffer-file-name)))
+ (cur-title (jao-doc-view-title (or file-name buffer-file-name "title"))))
(while (and (car outline) (< cur-page page))
(setq cur-page (cdr (assoc 'page (car outline))))
(when (<= cur-page page)
@@ -138,14 +138,20 @@
;;; imenu
-(defun jao-doc-view--enable-imenu ()
- (setq-local imenu-create-index-function #'jao-doc-view--imenu-create-index)
+(defvar-local jao-doc-view--imenu-file nil)
+(defvar-local jao-doc-view--goer 'jao-doc-view-goto-page)
+
+(defun jao-doc-view--enable-imenu (&optional file-name goto-page)
+ (setq-local imenu-create-index-function #'jao-doc-view--imenu-create-index
+ jao-doc-view--imenu-file file-name
+ jao-doc-view--goer (or goto-page 'jao-doc-view-goto-page))
(imenu-add-to-menubar "PDF outline"))
(defun jao-doc-view--imenu-create-index ()
(let (index)
(dolist (item (or jao--pdf-outline
- (setq jao--pdf-outline (jao-doc-view-pdf-outline))))
+ (setq jao--pdf-outline
+ (jao-doc-view-pdf-outline jao-doc-view--imenu-file))))
(let-alist item
(let* ((lvl (make-string (max 0 (1- .level)) ?.))
(title (format "%s%s (%s)" lvl .title .page)))
@@ -154,7 +160,7 @@
(defun jao-doc-view--go (&rest args)
(when-let (item (car (last args)))
- (let-alist item (jao-doc-view-goto-page .page))))
+ (let-alist item (funcall jao-doc-view--goer .page))))
(add-hook 'doc-view-mode-hook #'jao-doc-view--enable-imenu)
@@ -186,29 +192,30 @@
;;; Find URLs
-(defun jao-doc-view--page-urls ()
+(defun jao-doc-view--page-urls (all)
(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))
+ (pd-rx (rx (+ (literal page-delimiter))))
(urls))
(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))
+ (unless all (re-search-forward pd-rx nil t (1- page)))
(let ((end (save-excursion
- (if (re-search-forward page-delimiter nil t)
+ (if (and (not all) (re-search-forward pd-rx nil t))
(point)
(point-max)))))
(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)))))
+ (doc-view-doc->txt txt (lambda () (jao-doc-view--page-urls all)))))))
-(defun jao-doc-view-visit-url ()
+(defun jao-doc-view-visit-url (all)
"Visit URL displayed in this page."
- (interactive nil doc-view-mode)
- (let ((urls (jao-doc-view--page-urls)))
+ (interactive "P" doc-view-mode)
+ (let ((urls (jao-doc-view--page-urls all)))
(if (zerop (length urls))
(message "No URLs in this page")
(when-let (url (completing-read "URL: " urls nil nil
diff --git a/lib/doc/jao-org-links.el b/lib/doc/jao-org-links.el
index 5848698..ab07498 100644
--- a/lib/doc/jao-org-links.el
+++ b/lib/doc/jao-org-links.el
@@ -49,7 +49,10 @@
(let ((f (replace-regexp-in-string "^file:" "doc:"
(org-file-complete-link arg))))
(if (jao-doc-view-is-pdf f)
- (concat f "::" (read-from-minibuffer "Page: " "1"))
+ (let ((page (read-from-minibuffer "Page: " "")))
+ (if (> (string-to-number page) 0)
+ (concat f "::" (read-from-minibuffer "Page: " ""))
+ f))
f))))
(defun jao-org-links-open-mail (fname)