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.
(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))
(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)))
(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