# HG changeset patch # User Tassilo Horn # Date 1198669717 0 # Node ID f6ce12419345aaf807bb1078cef91f4134db5819 # Parent 9ac481bc897b5608a452675875b6cca97afde614 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. diff -r 9ac481bc897b -r f6ce12419345 lisp/ChangeLog --- 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 + * 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 -r 9ac481bc897b -r f6ce12419345 lisp/doc-view.el --- 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)) diff -r 9ac481bc897b -r f6ce12419345 lisp/image-mode.el --- 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