diff options
-rw-r--r-- | exwm.org | 7 | ||||
-rw-r--r-- | init.org | 64 | ||||
-rw-r--r-- | lib/doc/jao-org-links.el | 2 |
3 files changed, 53 insertions, 20 deletions
@@ -330,12 +330,7 @@ (defun jao-zathura--file-info (b) (with-current-buffer b - (when (string-match "\\(.+\\) \\[\\(.+\\) (\\([0-9]+\\)/\\([0-9]+\\))\\]" - (or exwm-title "")) - (list (expand-file-name (match-string 1 exwm-title)) - (string-to-number (match-string 3 exwm-title)) - (string-to-number (match-string 4 exwm-title)) - (match-string 2 exwm-title))))) + (jao-zathura-file-info (or exwm-title "")))) (defun jao-zathura-goto-page (page-no) (jao-exwm--send-str (format "%sg" page-no))) @@ -1868,6 +1868,42 @@ ("K" . pdf-view-scroll-down-or-previous-page)))) #+end_src +*** zathura + #+begin_src emacs-lisp + (defun jao-zathura-file-info (title) + (when (string-match "\\(.+\\) \\[\\(.+\\) (\\([0-9]+\\)/\\([0-9]+\\))\\]" + title) + (list (expand-file-name (match-string 1 title)) + (string-to-number (match-string 3 title)) + (string-to-number (match-string 4 title)) + (match-string 2 title)))) + + (defun jao-zathura-goto-org (title) + (when-let* ((info (jao-zathura-file-info title)) + (file (jao-org-pdf-to-org-file (car info))) + (page (cadr info)) + (pageno (or (car (last info)) page))) + (jao-afio--goto-docs) + (let* ((exists (file-exists-p file)) + (fn (file-name-nondirectory file)) + (lnk (format "[[doc:%s::%d][Page %s]]" fn page pageno))) + (find-file file) + (unless exists (jao-org-insert-doc-skeleton)) + (if (or (not exists) (y-or-n-p "Insert link?")) + (insert lnk "\n") + (kill-new lnk) + (message "Link to %s (%s) killed" file page))))) + + (defun jao-zathura-open (file page) + (let ((id (jao-shell-string (format "xdotool search --name %s" + (file-name-nondirectory file))))) + (if (string-blank-p id) + (jao-shell-exec (format "zathura %s -P %s" file (or page 1))) + (let* ((page (if page (format " && xdotool type %dg" page) "")) + (cmd (format "xdotool windowactivate %s%s" id page))) + (jao-shell-string cmd))))) + + #+end_src *** open pdfs #+begin_src emacs-lisp (use-package saveplace-pdf-view @@ -1877,25 +1913,27 @@ (setq jao-open-doc-fun 'jao-find-or-open) - (defun jao-find-or-open (file) - (let* ((buffs (buffer-list)) - (b (catch 'done - (while buffs - (when (string-equal (buffer-file-name (car buffs)) file) - (throw 'done (car buffs))) - (setq buffs (cdr buffs)))))) - (jao-afio--goto-docs) - (if b (pop-to-buffer b) (find-file file)))) - - (defun jao-open-doc (&optional file) + (defun jao-find-or-open (file &optional page height) + (if (and jao-browse-doc-use-emacs-p window-system) + (let* ((buffs (buffer-list)) + (b (catch 'done + (while buffs + (when (string-equal (buffer-file-name (car buffs)) file) + (throw 'done (car buffs))) + (setq buffs (cdr buffs)))))) + (jao-afio--goto-docs) + (if b (pop-to-buffer b) (find-file file))) + (jao-zathura-open file page))) + + (defun jao-open-doc (&optional file page height) (interactive) (when-let (file (or file (read-file-name "Document: " (concat jao-org-dir "/doc/")))) - (funcall jao-open-doc-fun file))) + (funcall jao-open-doc-fun file page height))) (defun jao-afio-open-pdf (file page &optional height) - (jao-open-doc file) + (jao-open-doc file page height) (when page (jao-doc-view-goto-page page height))) (setq jao-org-open-pdf-fun #'jao-afio-open-pdf) diff --git a/lib/doc/jao-org-links.el b/lib/doc/jao-org-links.el index 4704624..9102927 100644 --- a/lib/doc/jao-org-links.el +++ b/lib/doc/jao-org-links.el @@ -67,7 +67,7 @@ ;;;###autoload (defun jao-org-links-store-pdf-link (path page title) - (org-store-link-props + (org-link-store-props :type "doc" :link (format "doc:%s::%d" (file-name-nondirectory path) page) :description (format "%s (p. %d)" title page))) |