X-Git-Url: http://git.hcoop.net/bpt/emacs.git/blobdiff_plain/c1473b4cfeb477ced05d457868c5e1eb97a58eb0..510ef922707de6ef64235cf5cd7fdc546bd0b50a:/lisp/image-mode.el diff --git a/lisp/image-mode.el b/lisp/image-mode.el index dbedf64156..ec3a66e0dc 100644 --- a/lisp/image-mode.el +++ b/lisp/image-mode.el @@ -290,11 +290,9 @@ This variable is used to display the current image type in the mode line.") (let ((map (make-sparse-keymap))) (suppress-keymap map) (define-key map "q" 'quit-window) - ;; (define-key map "\C-c\C-c" 'image-toggle-display) (define-key map (kbd "SPC") 'image-scroll-up) (define-key map (kbd "DEL") 'image-scroll-down) - ;; (define-key map [remap forward-char] 'image-forward-hscroll) (define-key map [remap backward-char] 'image-backward-hscroll) (define-key map [remap previous-line] 'image-previous-line) @@ -333,13 +331,14 @@ to toggle between display as an image and display as text." (image-mode-setup-winprops) (add-hook 'change-major-mode-hook 'image-toggle-display-text nil t) - (if (and (display-images-p) - (not (image-get-display-property))) - (image-toggle-display) - ;; Set next vars when image is already displayed but local - ;; variables were cleared by kill-all-local-variables - (use-local-map image-mode-map) - (setq cursor-type nil truncate-lines t)) + (if (display-images-p) + (if (not (get-text-property (point-min) 'display)) + (image-toggle-display) + ;; Set next vars when image is already displayed but local + ;; variables were cleared by kill-all-local-variables + (use-local-map image-mode-map) + (setq cursor-type nil truncate-lines t)) + (use-local-map image-mode-text-map)) (run-mode-hooks 'image-mode-hook) (if (display-images-p) (message "%s" (concat @@ -361,6 +360,7 @@ See the command `image-mode' for more information on this mode." (if (image-get-display-property) (setq cursor-type nil truncate-lines t) (setq image-type "text")) + (image-mode-setup-winprops) (add-hook 'change-major-mode-hook (lambda () (image-minor-mode -1)) nil t) (message "%s" (concat (substitute-command-keys "Type \\[image-toggle-display] to view the image as ") @@ -467,41 +467,25 @@ and showing the image as an image." (message "Repeat this command to go back to displaying the file as text"))))) ;;; Support for bookmark.el +(declare-function bookmark-make-record-default "bookmark" + (&optional point-only)) +(declare-function bookmark-prop-get "bookmark" (bookmark prop)) +(declare-function bookmark-default-handler "bookmark" (bmk)) -(defun image-bookmark-make-record (annotation) - (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)))) +(defun image-bookmark-make-record () + (nconc (bookmark-make-record-default) + `((image-type . ,image-type) + (handler . image-bookmark-jump)))) - ;; Finally, return the completed record. - the-record)) -(declare-function bookmark-get-filename "bookmark" (bookmark)) -(declare-function bookmark-get-bookmark-record "bookmark" (bookmark)) -(declare-function bookmark-get-position "bookmark" (bookmark)) ;;;###autoload (defun image-bookmark-jump (bmk) ;; This implements the `handler' function interface for record type ;; returned by `bookmark-make-record-function', which see. - (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)) - `((buffer ,(current-buffer)) (position ,(point)))))) + (prog1 (bookmark-default-handler bmk) + (when (not (string= image-type (bookmark-prop-get bmk 'image-type))) + (image-toggle-display)))) (provide 'image-mode)