changeset 87412:f6ce12419345

2007-12-26 Tassilo Horn <tassilo@member.fsf.org> * image-mode.el (image-bookmark-make-cell, image-bookmark-jump): New functions. (image-mode): Set bookmark-make-cell-function appropriately. * doc-view.el (doc-view-bookmark-jump): Correct misspelled arg name.
author Tassilo Horn <tassilo@member.fsf.org>
date Wed, 26 Dec 2007 11:48:37 +0000
parents 9ac481bc897b
children 0f888390c9b8
files lisp/ChangeLog lisp/doc-view.el lisp/image-mode.el
diffstat 3 files changed, 42 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Wed Dec 26 08:53:06 2007 +0000
+++ b/lisp/ChangeLog	Wed Dec 26 11:48:37 2007 +0000
@@ -1,5 +1,12 @@
 2007-12-26  Tassilo Horn  <tassilo@member.fsf.org>
 
+	* image-mode.el (image-bookmark-make-cell, image-bookmark-jump):
+	New functions.
+	(image-mode): Set bookmark-make-cell-function appropriately.
+
+	* doc-view.el (doc-view-bookmark-jump): Correct misspelled arg
+	name.
+
 	* bookmark.el (bookmark-make-cell-function): New variable.
 	(bookmark-make): Call bookmark-make-cell-function's function
 	instead of bookmark-make-cell.
--- a/lisp/doc-view.el	Wed Dec 26 08:53:06 2007 +0000
+++ b/lisp/doc-view.el	Wed Dec 26 11:48:37 2007 +0000
@@ -1019,7 +1019,7 @@
 (defun doc-view-bookmark-jump (bmk)
   (save-window-excursion
     (let ((filename (bookmark-get-filename bmk))
-	  (page (cdr (assq 'page (bookmark-get-bookmark-record bookmark)))))
+	  (page (cdr (assq 'page (bookmark-get-bookmark-record bmk)))))
       (find-file filename)
       (when (not (eq major-mode 'doc-view-mode))
 	(doc-view-toggle-display))
--- a/lisp/image-mode.el	Wed Dec 26 08:53:06 2007 +0000
+++ b/lisp/image-mode.el	Wed Dec 26 11:48:37 2007 +0000
@@ -219,6 +219,9 @@
   (kill-all-local-variables)
   (setq mode-name "Image[text]")
   (setq major-mode 'image-mode)
+  ;; Use our own bookmarking function for images.
+  (set (make-local-variable 'bookmark-make-cell-function)
+       'image-bookmark-make-cell)
   (add-hook 'change-major-mode-hook 'image-toggle-display-text nil t)
   (if (and (display-images-p)
 	   (not (get-char-property (point-min) 'display)))
@@ -352,6 +355,37 @@
       (if (called-interactively-p)
 	  (message "Repeat this command to go back to displaying the file as text")))))
 
+;;; Support for bookmark.el
+
+(defun image-bookmark-make-cell (annotation &rest args)
+  (let ((the-record
+         `((filename   . ,(buffer-file-name))
+	   (image-type . ,image-type)
+	   (position   . ,(point))
+	   (handler    . image-bookmark-jump))))
+
+    ;; Take no chances with text properties
+    (set-text-properties 0 (length annotation) nil annotation)
+
+    (when annotation
+      (nconc the-record (list (cons 'annotation annotation))))
+
+    ;; Finally, return the completed record.
+    the-record))
+
+;;;###autoload
+(defun image-bookmark-jump (bmk)
+  (save-window-excursion
+    (let ((filename (bookmark-get-filename bmk))
+	  (type (cdr (assq 'image-type (bookmark-get-bookmark-record bmk))))
+	  (pos  (bookmark-get-position bmk)))
+      (find-file filename)
+      (when (not (string= image-type type))
+	(image-toggle-display))
+      (when (string= image-type "text")
+	(goto-char pos))
+      (cons (current-buffer) pos))))
+
 (provide 'image-mode)
 
 ;; arch-tag: b5b2b7e6-26a7-4b79-96e3-1546b5c4c6cb