From d2454a9fd3fc590ac23312a21a03a5d7117f4df2 Mon Sep 17 00:00:00 2001 From: jao Date: Thu, 15 Apr 2021 16:16:03 +0100 Subject: zathura as a fully featured alternative for pdf viewing in emacs --- exwm.org | 36 ++++++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-) (limited to 'exwm.org') diff --git a/exwm.org b/exwm.org index 3e3afc4..8c7cff1 100644 --- a/exwm.org +++ b/exwm.org @@ -312,20 +312,29 @@ (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)) + (defun jao-zathura-open-doc (&optional file-name page-no height) + (let* ((file-name (expand-file-name (or file-name (buffer-file-name)))) (buffer (seq-find `(lambda (b) (string= ,file-name (car (jao-zathura--file-info b)))) - (jao-zathura--buffers)))) + (jao-zathura--buffers))) + (page-no (or page-no (jao-doc-view-current-page)))) (if jao-exwm--use-afio (jao-afio--goto-docs) (jao-exwm--goto-docs)) (if (not buffer) (jao-exwm-run (if page-no (format "zathura -P %s %s" page-no file-name) (format "zathura %s" file-name))) (pop-to-buffer buffer) - (jao-doc-view--enable-imenu file-name #'jao-zathura-goto-page) - (jao-zathura-goto-page page-no)))) + (when page-no (jao-zathura-goto-page page-no))) + (current-buffer))) + + (defun jao-exwm--zathura-setup () + (when (and (string= exwm-class-name "Zathura") + (not jao-doc-view--imenu-file)) + (let ((info (jao-zathura--file-info (current-buffer)))) + (jao-doc-view--enable-imenu (car info) #'jao-zathura-goto-page)))) + + (add-hook 'exwm-update-title-hook #'jao-exwm--zathura-setup t) (defun jao-exwm-pdf-zathura-close-all () (interactive) @@ -364,11 +373,22 @@ (defun jao-exwm-pdf-disable-zathura () (interactive) + (define-key org-mode-map (kbd "C-c o") #'jao-org-org-goto-pdf) (remove-hook 'kill-emacs-query-functions #'jao-exwm-pdf-zathura-close-all) (setq jao-org-open-pdf-fun #'jao-afio-open-pdf) (setq jao-org-links-pdf-store-fun nil) (setq jao-open-doc-fun #'jao-find-or-open)) + (defun jao-exwm-zathura-goto-pdf () + (interactive) + (if jao-browse-doc-use-emacs-p + (jao-org-org-goto-pdf) + (when-let (pdf (jao-org-org-to-pdf-file)) + (jao-zathura-open-doc pdf)))) + + (with-eval-after-load "org" + (define-key org-mode-map (kbd "C-c o") #'jao-exwm-zathura-goto-pdf)) + (when (not jao-browse-doc-use-emacs-p) (jao-exwm-pdf-enable-zathura)) @@ -377,7 +397,7 @@ #+begin_src emacs-lisp (major-mode-hydra-define+ (doc-view-mode pdf-view-mode) nil ("External" - (("z" (jao-zathura-open-doc (buffer-file-name)) "open with zathura") + (("z" (jao-zathura-open-doc) "open with zathura") ("m" jao-exwm-open-with-mupdf "open with mupdf")))) (defhydra jao-hydra-float (:color blue) @@ -463,8 +483,8 @@ (define-key exwm-mode-map [?\s-m] #'jao-hydra-media/body) (define-key exwm-mode-map [?\s-s] #'jao-hydra-spotify/body) (define-key exwm-mode-map [?\s-w] #'jao-hydra-exwm/body) - (define-key exwm-mode-map [?\s-p] #'jao-exwm-pdf-goto-org) - (define-key exwm-mode-map [?\s-P] #'jao-exwm-pdf-goto-org*) + (define-key exwm-mode-map (kbd "C-c o") #'jao-exwm-pdf-goto-org) + (define-key exwm-mode-map (kbd "C-c O") #'jao-exwm-pdf-goto-org*) (setq exwm-input-global-keys -- cgit v1.2.3