summaryrefslogtreecommitdiffhomepage
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
parentca4ab244f1731c78ee890b4f7737babed87315e7 (diff)
downloadelibs-5dd64cbc0b91ca9ec6bb1eecca030393ded6e549.tar.gz
elibs-5dd64cbc0b91ca9ec6bb1eecca030393ded6e549.tar.bz2
zathura support improvements
-rw-r--r--exwm.org25
-rw-r--r--lib/doc/jao-doc-view.el39
-rw-r--r--lib/doc/jao-org-links.el5
3 files changed, 43 insertions, 26 deletions
diff --git a/exwm.org b/exwm.org
index e984d29..3e3afc4 100644
--- a/exwm.org
+++ b/exwm.org
@@ -309,6 +309,9 @@
(dolist (k (string-to-list (kbd str)))
(exwm-input--fake-key k)))
+ (defun jao-zathura-goto-page (page-no)
+ (jao-exwm--send-str (format "%sg" page-no)))
+
(defun jao-zathura-open-doc (file-name &optional page-no height)
(let* ((file-name (expand-file-name file-name))
(buffer (seq-find `(lambda (b)
@@ -321,7 +324,8 @@
(format "zathura -P %s %s" page-no file-name)
(format "zathura %s" file-name)))
(pop-to-buffer buffer)
- (jao-exwm--send-str (format "%sg" page-no)))))
+ (jao-doc-view--enable-imenu file-name #'jao-zathura-goto-page)
+ (jao-zathura-goto-page page-no))))
(defun jao-exwm-pdf-zathura-close-all ()
(interactive)
@@ -346,9 +350,10 @@
(defun jao-exwm-org-store-zathura-link ()
(when-let ((info (jao-zathura--file-info (current-buffer))))
- (jao-org-links-store-pdf-link (car info)
- (cadr info)
- (jao-doc-view-title (car info)))))
+ (let* ((file-name (car info))
+ (page (cadr info))
+ (desc (jao-doc-view-section-title page file-name)))
+ (jao-org-links-store-pdf-link file-name page desc))))
(defun jao-exwm-pdf-enable-zathura ()
(interactive)
@@ -372,7 +377,7 @@
#+begin_src emacs-lisp
(major-mode-hydra-define+ (doc-view-mode pdf-view-mode) nil
("External"
- (("z" jao-exwm-open-with-zathura "open with zathura")
+ (("z" (jao-zathura-open-doc (buffer-file-name)) "open with zathura")
("m" jao-exwm-open-with-mupdf "open with mupdf"))))
(defhydra jao-hydra-float (:color blue)
@@ -423,9 +428,11 @@
("s-w" jao-hydra-exwm/body nil))
"Network"
(("S" jao-ssh "ssh")
+ ("T" telega "telegram rooster")
;; ("b" jao-exwm-bluetooth "bluetooth")
;; ("m" run-proton-bridge "proton bridge")
- ("v" jao-exwm-proton-vpn "proton vpn"))
+ ;; ("v" jao-exwm-proton-vpn "proton vpn")
+ ("c" (jao-chats t) "connect chats"))
"Monitors"
(("p" jao-vterm-htop "htop")
;; ("P" jao-exwm-proced "proced")
@@ -434,12 +441,12 @@
;; ("t" jao-time-echo-times "current time")
)
"Chats"
- (("t" telega "telegram rooster")
+ (("t" (jao-buffer-same-mode 'telega-chat-mode) "telgram buffers")
("s" (jao-buffer-same-mode 'slack-message-buffer-mode) "slack buffers")
("i" (jao-buffer-same-mode 'circe-channel-mode) "irc channels"))
"Looks"
- (("T" jao-toggle-transparency "toggle transparency"
- :toggle (jao-transparent-p) :color red)
+ (;; ("T" jao-toggle-transparency "toggle transparency"
+ ;; :toggle (jao-transparent-p) :color red)
("w" jao-set-wallpaper "set wallpaper")
("W" jao-set-random-wallpaper "set radom wallpaper"))
"Helpers"
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)