From: Stefan Monnier Date: Mon, 27 May 2013 00:59:33 +0000 (-0400) Subject: * lisp/image-mode.el (image-mode-reapply-winprops): Call image-mode-winprops X-Git-Url: https://git.hcoop.net/bpt/emacs.git/commitdiff_plain/4fd996b38978fe8a3117d58d92091f487af0507b * lisp/image-mode.el (image-mode-reapply-winprops): Call image-mode-winprops even if there's no `display' property yet. Fixes: debbugs:14435 --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 8130d3e585..7d3bbde6bc 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,6 +1,11 @@ +2013-05-27 Stefan Monnier + + * image-mode.el (image-mode-reapply-winprops): Call image-mode-winprops + even if there's no `display' property yet (bug#14435). + 2013-05-25 Eli Zaretskii - * subr.el (unmsys--file-name): Renamed from reveal-filename. + * subr.el (unmsys--file-name): Rename from reveal-filename. * Makefile.in (custom-deps, finder-data, autoloads) ($(MH_E_DIR)/mh-loaddefs.el, $(TRAMP_DIR)/tramp-loaddefs.el) diff --git a/lisp/image-mode.el b/lisp/image-mode.el index 909e2fa247..30dfd045b4 100644 --- a/lisp/image-mode.el +++ b/lisp/image-mode.el @@ -104,13 +104,16 @@ otherwise it defaults to t, used for times when the buffer is not displayed." (defun image-mode-reapply-winprops () ;; When set-window-buffer, set hscroll and vscroll to what they were ;; last time the image was displayed in this window. - (when (and (image-get-display-property) - (listp image-mode-winprops-alist)) + (when (listp image-mode-winprops-alist) + ;; Beware: this call to image-mode-winprops can't be optimized away, + ;; because it not only gets the winprops data but sets it up if needed + ;; (e.g. it's used by doc-view to display the image in a new window). (let* ((winprops (image-mode-winprops nil t)) (hscroll (image-mode-window-get 'hscroll winprops)) (vscroll (image-mode-window-get 'vscroll winprops))) - (if hscroll (set-window-hscroll (selected-window) hscroll)) - (if vscroll (set-window-vscroll (selected-window) vscroll))))) + (when (image-get-display-property) ;Only do it if we display an image! + (if hscroll (set-window-hscroll (selected-window) hscroll)) + (if vscroll (set-window-vscroll (selected-window) vscroll)))))) (defun image-mode-setup-winprops () ;; Record current scroll settings. @@ -329,9 +332,8 @@ call." ;;; Image Mode setup -(defvar image-type nil +(defvar-local image-type nil "The image type for the current Image mode buffer.") -(make-variable-buffer-local 'image-type) (defvar-local image-multi-frame nil "Non-nil if image for the current Image mode buffer has multiple frames.") @@ -401,7 +403,6 @@ call." :help "Toggle image animation"] ["Loop Animation" (lambda () (interactive) -;;; (make-variable-buffer-local 'image-animate-loop) (setq image-animate-loop (not image-animate-loop)) ;; FIXME this is a hacky way to make it affect a currently ;; animating image. @@ -461,8 +462,8 @@ to toggle between display as an image and display as text." (use-local-map image-mode-map) ;; Use our own bookmarking function for images. - (set (make-local-variable 'bookmark-make-record-function) - 'image-bookmark-make-record) + (setq-local bookmark-make-record-function + #'image-bookmark-make-record) ;; Keep track of [vh]scroll when switching buffers (image-mode-setup-winprops) @@ -561,7 +562,7 @@ on these modes." elt)) magic-fallback-mode-alist)))) (normal-mode) - (set (make-local-variable 'image-mode-previous-major-mode) major-mode))) + (setq-local image-mode-previous-major-mode major-mode))) ;; Restore `image-type' after `kill-all-local-variables' in `normal-mode'. (setq image-type previous-image-type) ;; Enable image minor mode with `C-c C-c'. @@ -641,9 +642,9 @@ was inserted." ;; is written with, e.g., C-x C-w. (if (coding-system-equal (coding-system-base buffer-file-coding-system) 'no-conversion) - (set (make-local-variable 'find-file-literally) t)) - ;; Allow navigation of large images - (set (make-local-variable 'auto-hscroll-mode) nil) + (setq-local find-file-literally t)) + ;; Allow navigation of large images. + (setq-local auto-hscroll-mode nil) (setq image-type type) (if (eq major-mode 'image-mode) (setq mode-name (format "Image[%s]" type)))