summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorjao <jao@gnu.org>2022-08-13 19:44:05 +0100
committerjao <jao@gnu.org>2022-08-13 19:44:05 +0100
commit460d921de8788a7ae8dfaebcf5aec0d776d3cbd5 (patch)
treee4494093353f2377af84f6f7f8191e5e067fc249
parent65855b5c9980ff282234fb91a82a45d75b67f8c1 (diff)
downloadelibs-460d921de8788a7ae8dfaebcf5aec0d776d3cbd5.tar.gz
elibs-460d921de8788a7ae8dfaebcf5aec0d776d3cbd5.tar.bz2
jao-doc-session: using it
-rw-r--r--custom/jao-custom-exwm.el13
-rw-r--r--init.el19
-rw-r--r--lib/doc/jao-doc-view.el58
-rw-r--r--lib/eos/jao-afio.el11
4 files changed, 25 insertions, 76 deletions
diff --git a/custom/jao-custom-exwm.el b/custom/jao-custom-exwm.el
index 2a38a6c..44da990 100644
--- a/custom/jao-custom-exwm.el
+++ b/custom/jao-custom-exwm.el
@@ -320,8 +320,8 @@
(when (and (string= exwm-class-name "Zathura")
(not jao-doc-view--imenu-file))
(let ((info (jao-zathura--file-info (current-buffer))))
- (jao-doc-view-session-mark (car info))
- (jao-doc-view-save-session)
+ (jao-doc-session-mark (car info))
+ (jao-doc-session-save)
(jao-doc-view--enable-imenu (car info) #'jao-zathura-goto-page))))
(add-hook 'exwm-update-title-hook #'jao-exwm--zathura-setup t)
@@ -396,11 +396,10 @@
(pop-to-buffer b)))
-(let ((viewers ["External viewers"
- ("z" "open with zathura" jao-zathura-open-doc)
- ("m" "open with mupdf" jao-exwm-open-with-mupdf)]))
- (jao-transient-major-mode+ pdf-view viewers)
- (jao-transient-major-mode+ doc-view viewers))
+(jao-transient-major-mode+ doc-view
+ ["External viewers"
+ ("z" "open with zathura" jao-zathura-open-doc)
+ ("m" "open with mupdf" jao-exwm-open-with-mupdf)])
;;; Firefox support
(jao-def-exwm-toggler jao-exwm-firefox 5 "Firefox" "firefox")
diff --git a/init.el b/init.el
index 1ebd2f3..63968a3 100644
--- a/init.el
+++ b/init.el
@@ -1688,18 +1688,21 @@
doc-view-resolution 110
doc-view-continuous t
doc-view-conversion-refresh-interval 1)
-
+ :hook ((doc-view-mode . jao-doc-session-mark))
:bind (:map doc-view-mode-map
("j" . doc-view-next-line-or-next-page)
("J" . doc-view-scroll-up-or-next-page)
("k" . doc-view-previous-line-or-previous-page)
("K" . doc-view-scroll-down-or-previous-page)))
+(use-package jao-doc-session :demand t)
+
(use-package jao-doc-view
+ :demand t
: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-session-save)
("u" . jao-doc-view-visit-url)))
;;;; pdf-tools
@@ -1714,6 +1717,8 @@
(cons (frame-parameter nil 'foreground-color)
(frame-parameter nil 'background-color)))))
+ :hook ((pdf-view-mode . jao-doc-session-mark))
+
:config (pdf-tools-install)
:diminish ((pdf-view-midnight-minor-mode . ""))
@@ -1818,7 +1823,11 @@
:after doc-view
:init (setq nov-variable-pitch t
nov-text-width nil)
- :config (add-to-list 'auto-mode-alist '("\\.epub\\'" . nov-mode)))
+ :config
+ (add-to-list 'auto-mode-alist '("\\.epub\\'" . nov-mode))
+ (defun jao-nov-register-session ()
+ (jao-doc-session-mark nov-file-name))
+ (add-hook 'nov-mode-hook #'jao-nov-register-session))
;;;; transient
(defun jao-org-pdf-goto-org-linking ()
@@ -1838,7 +1847,7 @@
("cm" "using mouse" doc-view-set-slice-using-mouse)]
["Session"
("s" "load session" jao-afio-open-pdf-session)
- ("S" "save session" jao-doc-view-save-session)
+ ("S" "save session" jao-doc-session-save)
("d" "visit cache directory" doc-view-dired-cache)])
(with-eval-after-load "pdf-view"
@@ -1851,7 +1860,7 @@
("f" "forward jump" pdf-history-forward)]
["Session"
("s" "load session" jao-afio-open-pdf-session)
- ("S" "save session" jao-doc-view-save-session)]))
+ ("S" "save session" jao-doc-session-save)]))
;; (transient-get-suffix 'jao-transient-pdf-view '(0 -1))
diff --git a/lib/doc/jao-doc-view.el b/lib/doc/jao-doc-view.el
index 03fd5c1..3973104 100644
--- a/lib/doc/jao-doc-view.el
+++ b/lib/doc/jao-doc-view.el
@@ -18,66 +18,8 @@
;; Author: Jose Antonio Ortega Ruiz <jao@gnu.org>
;; Start date: Fri Feb 15, 2013 01:21
-
-;;; Session
-
(require 'doc-view)
-(defvar jao-doc-view-session-file "~/.emacs.d/cache/doc-view-session.eld")
-(defvar-local jao-doc-view--is-doc nil)
-
-(defun jao-doc-view-session-mark (path) (setq-local jao-doc-view--is-doc path))
-(defun jao-doc-view--is-doc ()
- (or jao-doc-view--is-doc
- (when (derived-mode-p 'doc-view-mode 'pdf-view-mode 'nov-mode)
- (buffer-file-name))))
-
-(defun jao-doc-view--read-file (file)
- (let ((buff (find-file-noselect file)))
- (ignore-errors
- (with-current-buffer buff
- (goto-char (point-min)))
- (read buff))))
-
-(defun jao-doc-view--save-to-file (file value)
- (with-current-buffer (find-file-noselect file)
- (erase-buffer)
- (insert (format "%S" value))
- (save-buffer)))
-
-(defun jao-doc-view-session (&optional file)
- (let ((file (or file jao-doc-view-session-file)))
- (jao-doc-view--read-file file)))
-
-(defun jao-doc-view-save-session (&optional skip-current)
- (interactive)
- (let ((docs '())
- (cb (when skip-current (current-buffer))))
- (dolist (b (buffer-list))
- (with-current-buffer b
- (when-let (fn (and (not (eq cb b)) (jao-doc-view--is-doc)))
- (add-to-list 'docs fn))))
- (when (> (length docs) 0)
- (jao-doc-view--save-to-file jao-doc-view-session-file docs))))
-
-(defun jao-doc-view--save-session-1 ()
- (when (jao-doc-view--is-doc) (jao-doc-view-save-session t)))
-
-(defvar jao-doc-view-inhibit-session-save nil)
-
-(defun jao-doc-view--save-session ()
- (let ((inhibit-message t)
- (message-log-max nil))
- (when (not jao-doc-view-inhibit-session-save)
- (jao-doc-view-save-session))
- t))
-
-(add-hook 'kill-emacs-query-functions #'jao-doc-view--save-session)
-(add-hook 'kill-buffer-hook #'jao-doc-view--save-session-1)
-(add-hook 'doc-view-mode-hook #'jao-doc-view--save-session)
-(add-hook 'pdf-view-mode-hook #'jao-doc-view--save-session)
-(add-hook 'nov-mode-hook #'jao-doc-view--save-session)
-
;;; PDF info
(defvar-local jao--pdf-outline nil)
diff --git a/lib/eos/jao-afio.el b/lib/eos/jao-afio.el
index 306a1d5..98a8760 100644
--- a/lib/eos/jao-afio.el
+++ b/lib/eos/jao-afio.el
@@ -21,6 +21,7 @@
;;; Code:
(require 'cl-lib)
+(require 'jao-doc-session)
(defvar jao-open-doc-fun 'find-file)
(defvar jao-afio-mail-function 'gnus)
@@ -74,8 +75,8 @@
;;;###autoload
(defun jao-afio-open-pdf-session ()
(interactive)
- (let ((jao-doc-view-inhibit-session-save t))
- (dolist (doc (jao-doc-view-session))
+ (let ((jao-doc-session-inhibit-save t))
+ (dolist (doc (jao-doc-session))
(when (and (file-exists-p doc) (y-or-n-p (format "Open %s? " doc)))
(jao-open-doc doc)
(other-window 1)))
@@ -85,13 +86,11 @@
(interactive)
(delete-other-windows)
(split-window-right)
- (let ((docs (cl-remove-if-not (lambda (b)
- (with-current-buffer b (jao-doc-view--is-doc)))
- (buffer-list))))
+ (let ((docs (cl-remove-if-not 'jao-doc-session-is-doc (buffer-list))))
(if (car docs)
(progn (switch-to-buffer (car docs))
(switch-to-buffer-other-window (or (cadr docs) (car docs))))
- (when (and (jao-doc-view-session) (y-or-n-p "Load saved session? "))
+ (when (and (jao-doc-session) (y-or-n-p "Load saved session? "))
(jao-afio-open-pdf-session)))))
(declare w3m "w3m")