summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--lib/doc/jao-doc-view.el34
1 files changed, 26 insertions, 8 deletions
diff --git a/lib/doc/jao-doc-view.el b/lib/doc/jao-doc-view.el
index 1e5c048..762719b 100644
--- a/lib/doc/jao-doc-view.el
+++ b/lib/doc/jao-doc-view.el
@@ -153,15 +153,33 @@
(when-let (item (car (last args)))
(let-alist item (jao-doc-view-goto-page .page))))
-
-;; install
-;;;###autoload
-(defun jao-doc-view-install ()
- (add-hook 'doc-view-mode-hook #'jao-doc-view--enable-imenu)
- (add-hook 'kill-buffer-hook 'jao-doc-view--save-session-1 t)
- (add-hook 'kill-emacs-hook 'jao-doc-view-save-session)
- (jao-doc-view-start-session-timer))
+(add-hook 'doc-view-mode-hook #'jao-doc-view--enable-imenu)
+
+;;; Page trailing
+(defvar-local jao-doc-view--trail-back ())
+(defvar-local jao-doc-view--trail-fwd ())
+
+(defun jao-doc-view--trail-push (dest-page)
+ (when-let (page (jao-doc-view-current-page))
+ (unless (eq (car jao-doc-view--trail-back) page)
+ (push page jao-doc-view--trail-back))))
+
+(defun jao-doc-view-back ()
+ (interactive nil doc-view-mode)
+ (if-let (p (pop jao-doc-view--trail-back))
+ (progn (push (jao-doc-view-current-page) jao-doc-view--trail-fwd)
+ (jao-doc-view-goto-page p))
+ (message "No more back marks.")))
+
+(defun jao-doc-view-forward ()
+ (interactive nil doc-view-mode)
+ (if-let (p (pop jao-doc-view--trail-fwd))
+ (progn (push (jao-doc-view-current-page) jao-doc-view--trail-back)
+ (jao-doc-view-goto-page p))
+ (message "No more forward marks.")))
+
+(advice-add 'doc-view-goto-page :before #'jao-doc-view--trail-push)
(provide 'jao-doc-view)