From 137187c884c1082d20ee014bc692e8e59734919e Mon Sep 17 00:00:00 2001 From: Tassilo Horn Date: Wed, 26 Dec 2007 11:48:37 +0000 Subject: [PATCH] 2007-12-26 Tassilo Horn * 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. --- lisp/ChangeLog | 7 +++++++ lisp/doc-view.el | 2 +- lisp/image-mode.el | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 1 deletion(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 060e932b23c..7dde34cb55d 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,12 @@ 2007-12-26 Tassilo Horn + * 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. diff --git a/lisp/doc-view.el b/lisp/doc-view.el index 12b3012448e..388d30b381b 100644 --- a/lisp/doc-view.el +++ b/lisp/doc-view.el @@ -1019,7 +1019,7 @@ See the command `doc-view-mode' for more information on this mode." (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)) diff --git a/lisp/image-mode.el b/lisp/image-mode.el index 283f6ae3ff1..4041db8ebf2 100644 --- a/lisp/image-mode.el +++ b/lisp/image-mode.el @@ -219,6 +219,9 @@ to toggle between display as an image and display as text." (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 @@ and showing the image as an image." (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 -- 2.39.2