;;; image-mode.el --- support for visiting image files
;;
-;; Copyright (C) 2005-2011 Free Software Foundation, Inc.
+;; Copyright (C) 2005-2012 Free Software Foundation, Inc.
;;
;; Author: Richard Stallman <rms@gnu.org>
;; Keywords: multimedia
(interactive "p")
(image-forward-hscroll (- n)))
-(defun image-next-line (&optional n)
+(defun image-next-line (n)
"Scroll image in current window upward by N lines.
Stop if the bottom edge of the image is reached."
(interactive "p")
;;;###autoload
(define-minor-mode image-minor-mode
- "Toggle Image minor mode.
-With arg, turn Image minor mode on if arg is positive, off otherwise.
-It provides the key \\<image-mode-map>\\[image-toggle-display] \
-to switch back to `image-mode'
-to display an image file as the actual image."
+ "Toggle Image minor mode in this buffer.
+With a prefix argument ARG, enable Image minor mode if ARG is
+positive, and disable it otherwise. If called from Lisp, enable
+the mode if ARG is omitted or nil.
+
+Image minor mode provides the key \\<image-mode-map>\\[image-toggle-display],
+to switch back to `image-mode' and display an image file as the
+actual image."
nil (:eval (if image-type (format " Image[%s]" image-type) " Image"))
image-minor-mode-map
:group 'image
(buffer-undo-list t)
(modified (buffer-modified-p)))
(remove-list-of-text-properties (point-min) (point-max)
- '(display intangible read-nonsticky
+ '(display read-nonsticky ;; intangible
read-only front-sticky))
(set-buffer-modified-p modified)
(if (called-interactively-p 'any)
"Show the image of the image file.
Turn the image data into a real image, but only if the whole file
was inserted."
- (unless (derived-mode-p 'image-mode major-mode)
+ (unless (derived-mode-p 'image-mode)
(error "The buffer is not in Image mode"))
(let* ((filename (buffer-file-name))
(data-p (not (and filename
(setq image (append image (image-transform-properties image)))
(setq props
`(display ,image
- intangible ,image
- rear-nonsticky (display intangible)
+ ;; intangible ,image
+ rear-nonsticky (display) ;; intangible
read-only t front-sticky (read-only)))
(let ((buffer-file-truename nil)) ; avoid changing dir mtime by lock_file
;;; Animated images
(defcustom image-animate-loop nil
- "Whether to play animated images on a loop in Image mode."
+ "Non-nil means animated images loop forever, rather than playing once."
:type 'boolean
:version "24.1"
:group 'image)
(defun image-toggle-animation ()
- "Start or stop animating the current image."
+ "Start or stop animating the current image.
+If `image-animate-loop' is non-nil, animation loops forever.
+Otherwise it plays once, then stops."
(interactive)
(let ((image (image-get-display-property))
animation)
(image-toggle-display))))
\f
-(defvar image-transform-minor-mode-map
- (let ((map (make-sparse-keymap)))
- ;; (define-key map [(control ?+)] 'image-scale-in)
- ;; (define-key map [(control ?-)] 'image-scale-out)
- ;; (define-key map [(control ?=)] 'image-scale-none)
- ;; (define-key map "c f h" 'image-scale-fit-height)
- ;; (define-key map "c ]" 'image-rotate-right)
- map)
- "Minor mode keymap `image-transform-mode'.")
-
-(define-minor-mode image-transform-mode
- "Minor mode for scaling and rotating images.
-This minor mode has no effect unless Emacs is compiled with
-ImageMagick support."
- nil "image-transform" image-transform-minor-mode-map)
-
+;; Not yet implemented.
+;;; (defvar image-transform-minor-mode-map
+;;; (let ((map (make-sparse-keymap)))
+;;; ;; (define-key map [(control ?+)] 'image-scale-in)
+;;; ;; (define-key map [(control ?-)] 'image-scale-out)
+;;; ;; (define-key map [(control ?=)] 'image-scale-none)
+;;; ;; (define-key map "c f h" 'image-scale-fit-height)
+;;; ;; (define-key map "c ]" 'image-rotate-right)
+;;; map)
+;;; "Minor mode keymap `image-transform-mode'.")
+;;;
+;;; (define-minor-mode image-transform-mode
+;;; "Minor mode for scaling and rotating images.
+;;; With a prefix argument ARG, enable the mode if ARG is positive,
+;;; and disable it otherwise. If called from Lisp, enable the mode
+;;; if ARG is omitted or nil. This minor mode requires Emacs to have
+;;; been compiled with ImageMagick support."
+;;; nil "image-transform" image-transform-minor-mode-map)
+
+
+;; FIXME this doesn't seem mature yet. Document in manual when it is.
(defvar image-transform-resize nil
"The image resize operation.
Its value should be one of the following:
`image-transform-resize' and `image-transform-rotation'. The
return value is suitable for appending to an image spec.
-Recaling and rotation properties only take effect if Emacs is
+Rescaling and rotation properties only take effect if Emacs is
compiled with ImageMagick support."
(when (or image-transform-resize
(not (equal image-transform-rotation 0.0)))
,@(if (not (equal 0.0 image-transform-rotation))
(list :rotation image-transform-rotation))))))
+;; FIXME 2 works, but eg 1.9 or 0.5 don't?
(defun image-transform-set-scale (scale)
"Prompt for a number, and resize the current image by that amount.
This command has no effect unless Emacs is compiled with