From 52c3a690da3ceb54a04e5ceac593dc8ca8984516 Mon Sep 17 00:00:00 2001 From: jao Date: Tue, 6 Apr 2021 00:30:44 +0100 Subject: doc-view page trails --- lib/doc/jao-doc-view.el | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) (limited to 'lib/doc') 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) -- cgit v1.2.3