Mercurial > emacs
changeset 82944:827101d5eacc
(image-type): New variable.
(image-mode): Set default major mode name to "Image[text]".
(image-minor-mode): Change LIGHTER to display image-type in the
mode line.
(image-minor-mode): Set default image-type to "text".
(image-toggle-display): After switching to text mode, set
image-type to "text" and major mode name to "Image[text]".
After switching to image mode, set image-type to actual image
type, and add image type to major mode name. Let-bind the same
variable names as arguments of `image-type' and `create-image'.
Bind `type' to the result of `image-type' and use it as arg
of `create-image' to not determine the image type twice.
author | Juri Linkov <juri@jurta.org> |
---|---|
date | Tue, 28 Aug 2007 22:31:41 +0000 |
parents | 70c5ca3d9e8d |
children | 528efa6e1177 |
files | lisp/image-mode.el |
diffstat | 1 files changed, 29 insertions(+), 17 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/image-mode.el Tue Aug 28 20:16:14 2007 +0000 +++ b/lisp/image-mode.el Tue Aug 28 22:31:41 2007 +0000 @@ -183,6 +183,11 @@ ;;; Image Mode setup +(defvar image-type nil + "Current image type. +This variable is used to display the current image type in the mode line.") +(make-variable-buffer-local 'image-type) + (defvar image-mode-map (let ((map (make-sparse-keymap))) (define-key map "\C-c\C-c" 'image-toggle-display) @@ -212,7 +217,7 @@ to toggle between display as an image and display as text." (interactive) (kill-all-local-variables) - (setq mode-name "Image") + (setq mode-name "Image[text]") (setq major-mode 'image-mode) (add-hook 'change-major-mode-hook 'image-toggle-display-text nil t) (if (and (display-images-p) @@ -235,13 +240,14 @@ "Toggle Image minor mode. With arg, turn Image minor mode on if arg is positive, off otherwise. See the command `image-mode' for more information on this mode." - nil " Image" image-mode-text-map + nil (:eval (format " Image[%s]" image-type)) image-mode-text-map :group 'image :version "22.1" (if (not image-minor-mode) (image-toggle-display-text) (if (get-text-property (point-min) 'display) - (setq cursor-type nil truncate-lines t)) + (setq cursor-type nil truncate-lines t) + (setq image-type "text")) (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 ") @@ -298,25 +304,28 @@ (kill-local-variable 'truncate-lines) (kill-local-variable 'auto-hscroll-mode) (use-local-map image-mode-text-map) + (setq image-type "text") + (if (eq major-mode 'image-mode) + (setq mode-name "Image[text]")) (if (called-interactively-p) (message "Repeat this command to go back to displaying the image"))) ;; Turn the image data into a real image, but only if the whole file ;; was inserted (let* ((filename (buffer-file-name)) - (image - (if (and filename - (file-readable-p filename) - (not (file-remote-p filename)) - (not (buffer-modified-p)) - (not (and (boundp 'archive-superior-buffer) - archive-superior-buffer)) - (not (and (boundp 'tar-superior-buffer) - tar-superior-buffer))) - (create-image filename) - (create-image - (string-make-unibyte - (buffer-substring-no-properties (point-min) (point-max))) - nil t))) + (data-p (not (and filename + (file-readable-p filename) + (not (file-remote-p filename)) + (not (buffer-modified-p)) + (not (and (boundp 'archive-superior-buffer) + archive-superior-buffer)) + (not (and (boundp 'tar-superior-buffer) + tar-superior-buffer))))) + (file-or-data (if data-p + (string-make-unibyte + (buffer-substring-no-properties (point-min) (point-max))) + filename)) + (type (image-type file-or-data nil data-p)) + (image (create-image file-or-data type data-p)) (props `(display ,image intangible ,image @@ -337,6 +346,9 @@ ;; Allow navigation of large images (set (make-local-variable 'auto-hscroll-mode) nil) (use-local-map image-mode-map) + (setq image-type type) + (if (eq major-mode 'image-mode) + (setq mode-name (format "Image[%s]" type))) (if (called-interactively-p) (message "Repeat this command to go back to displaying the file as text")))))