From 460d921de8788a7ae8dfaebcf5aec0d776d3cbd5 Mon Sep 17 00:00:00 2001 From: jao Date: Sat, 13 Aug 2022 19:44:05 +0100 Subject: jao-doc-session: using it --- custom/jao-custom-exwm.el | 13 +++++------ init.el | 19 ++++++++++++---- lib/doc/jao-doc-view.el | 58 ----------------------------------------------- lib/eos/jao-afio.el | 11 ++++----- 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 ;; 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") -- cgit v1.2.3