summaryrefslogtreecommitdiffhomepage
path: root/misc
diff options
context:
space:
mode:
authorjao <jao@gnu.org>2015-03-10 04:43:29 +0100
committerjao <jao@gnu.org>2015-03-10 04:43:29 +0100
commitf09b5cb57863232f3a6766278bfbe0c3b2b8a5eb (patch)
tree8effbde28bbedb6cfe67f4be7ce7036b5267a4d0 /misc
parente5b34f1e2a44fdf81e2560c7c929c842d8ffb1e1 (diff)
downloadelibs-f09b5cb57863232f3a6766278bfbe0c3b2b8a5eb.tar.gz
elibs-f09b5cb57863232f3a6766278bfbe0c3b2b8a5eb.tar.bz2
doc-view improvements
Diffstat (limited to 'misc')
-rw-r--r--misc/jao-doc-view.el79
1 files changed, 56 insertions, 23 deletions
diff --git a/misc/jao-doc-view.el b/misc/jao-doc-view.el
index 20fd8b9..6af240b 100644
--- a/misc/jao-doc-view.el
+++ b/misc/jao-doc-view.el
@@ -1,6 +1,6 @@
;; jao-doc-view.el -- Remembering visited documents
-;; Copyright (c) 2013 Jose Antonio Ortega Ruiz
+;; Copyright (c) 2013, 2015 Jose Antonio Ortega Ruiz
;; This file is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
@@ -26,22 +26,37 @@
;;; Code:
(defvar jao-doc-view-bmk-file "~/.emacs.d/doc-view-bmk")
+(defvar jao-doc-view-session-file "~/.emacs.d/doc-view-session")
(defvar jao-doc-view--current-bmks nil)
-(defun jao-doc-view--read-bmks ()
- (let* ((buff (find-file-noselect jao-doc-view-bmk-file))
- (bmks (ignore-errors
- (with-current-buffer buff
- (goto-char (point-min)))
- (read buff))))
- (if (hash-table-p bmks) bmks (make-hash-table :test 'equal))))
-
-(defun jao-doc-view--save-bmks ()
- (with-current-buffer (find-file-noselect jao-doc-view-bmk-file)
+(defun jao-doc-view--save-bmk ()
+ (when (or (eq major-mode 'doc-view-mode)
+ (eq major-mode 'pdf-view-mode))
+ (ignore-errors
+ (puthash (buffer-file-name)
+ (or (if (fboundp 'pdf-view-current-page)
+ (pdf-view-current-page)
+ (doc-view-current-page))
+ 1)
+ (jao-doc-view--current-bmks)))))
+
+(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" (jao-doc-view--current-bmks)))
+ (insert (format "%S" value))
(save-buffer)))
+(defun jao-doc-view--read-bmks ()
+ (let ((bmks (jao-doc-view--read-file jao-doc-view-bmk-file)))
+ (if (hash-table-p bmks) bmks (make-hash-table :test 'equal))))
+
(defun jao-doc-view--current-bmks ()
(or jao-doc-view--current-bmks
(setq jao-doc-view--current-bmks (jao-doc-view--read-bmks))))
@@ -55,20 +70,38 @@
(setq buffs (cdr buffs))))))
(when (not b)
(find-file file)
- (doc-view-goto-page (gethash (expand-file-name file)
- (jao-doc-view--current-bmks) 1)))))
+ (let ((p (gethash (expand-file-name file)
+ (jao-doc-view--current-bmks)
+ 0)))
+ (when (and (numberp p) (> p 0))
+ (if (fboundp 'pdf-view-goto-page)
+ (pdf-view-goto-page p)
+ (doc-view-goto-page p))))
+ (jao-doc-view--save-bmks))))
+
+
+(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-load-session (&optional file)
+ (interactive)
+ (let ((docs (jao-doc-view-session file)))
+ (when (not (listp docs)) (error "Empty session"))
+ (dolist (d docs) (jao-doc-view-open d))))
-(defun jao-doc-view--save-hook ()
- (when (eq major-mode 'doc-view-mode)
- (ignore-errors (puthash (buffer-file-name)
- (doc-view-current-page)
- (jao-doc-view--current-bmks))
- (jao-doc-view--save-bmks))))
+(defun jao-doc-view--save-bmks ()
+ (let ((docs '()))
+ (dolist (b (buffer-list))
+ (with-current-buffer b
+ (when (jao-doc-view--save-bmk)
+ (add-to-list 'docs (buffer-file-name)))))
+ (jao-doc-view--save-to-file jao-doc-view-session-file docs))
+ (jao-doc-view--save-to-file jao-doc-view-bmk-file
+ (jao-doc-view--current-bmks)))
(eval-after-load "doc-view"
- '(progn
- (add-hook 'kill-buffer-hook 'jao-doc-view--save-hook)
- (add-hook 'kill-emacs-hook 'jao-doc-view--save-bmks)))
+ '(add-hook 'kill-buffer-hook 'jao-doc-view--save-bmk))