[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] emacs etc/NEWS lisp/ChangeLog lisp/image-mode.el
From: |
Juri Linkov |
Subject: |
[Emacs-diffs] emacs etc/NEWS lisp/ChangeLog lisp/image-mode.el |
Date: |
Fri, 04 Dec 2009 21:43:13 +0000 |
CVSROOT: /sources/emacs
Module name: emacs
Changes by: Juri Linkov <jurta> 09/12/04 21:43:13
Modified files:
etc : NEWS
lisp : ChangeLog image-mode.el
Log message:
Change roles of modes and functions in image-mode.el (Bug#5062).
* image-mode.el: Replace `image-mode-maybe' with `image-mode'
in `auto-mode-alist'.
(image-mode-previous-major-mode): New variable.
(image-minor-mode-map): Rename from `image-mode-text-map'.
(image-mode): Move graceful error-handling code from
`image-minor-mode' to here. On errors call `image-mode-as-text'.
(image-minor-mode): Remove all image-handling code.
Replace `image-mode-text-map' with `image-minor-mode-map'.
Check for `image-type' in mode-line format string.
(image-mode-maybe): Make obsolete with an alias to `image-mode'.
(image-mode-as-text): New function with most code from
`image-mode-maybe'.
(image-toggle-display-text): Move code that removes image
properties from `image-toggle-display' to here.
(image-toggle-display-image): New function with code that adds
image properties copied from `image-toggle-display'.
(image-toggle-display): Remove most code with leaving only code
that toggles between `image-mode-as-text' and `image-mode'.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/emacs/etc/NEWS?cvsroot=emacs&r1=1.2135&r2=1.2136
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/ChangeLog?cvsroot=emacs&r1=1.16819&r2=1.16820
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/image-mode.el?cvsroot=emacs&r1=1.59&r2=1.60
Patches:
Index: etc/NEWS
===================================================================
RCS file: /sources/emacs/emacs/etc/NEWS,v
retrieving revision 1.2135
retrieving revision 1.2136
diff -u -b -r1.2135 -r1.2136
--- etc/NEWS 3 Dec 2009 19:01:36 -0000 1.2135
+++ etc/NEWS 4 Dec 2009 21:43:07 -0000 1.2136
@@ -351,6 +351,17 @@
** Support for generating Emacs 18 compatible bytecode (by setting
the variable `byte-compile-compatibility') has been removed.
+** In image-mode.el `image-mode-maybe' is obsolete. Instead, you can
+either use `image-mode' that displays an image file as the actual image
+inititally, or `image-mode-as-text' when you want to display an image file
+as text inititally. `image-mode-as-text' is a combination of a non-image
+mode from `auto-mode-alist' (or Fundamental mode) and `image-minor-mode'.
+`image-minor-mode' provides `C-c C-c' key binding to toggle image display.
+`image-toggle-display-text' removes image properties.
+`image-toggle-display-image' adds image properties.
+`image-toggle-display' toggles between `image-mode-as-text' and
+`image-mode'.
+
* Lisp changes in Emacs 23.2
Index: lisp/ChangeLog
===================================================================
RCS file: /sources/emacs/emacs/lisp/ChangeLog,v
retrieving revision 1.16819
retrieving revision 1.16820
diff -u -b -r1.16819 -r1.16820
--- lisp/ChangeLog 4 Dec 2009 19:27:42 -0000 1.16819
+++ lisp/ChangeLog 4 Dec 2009 21:43:08 -0000 1.16820
@@ -1,3 +1,26 @@
+2009-12-04 Juri Linkov <address@hidden>
+
+ Change roles of modes and functions in image-mode.el (Bug#5062).
+
+ * image-mode.el: Replace `image-mode-maybe' with `image-mode'
+ in `auto-mode-alist'.
+ (image-mode-previous-major-mode): New variable.
+ (image-minor-mode-map): Rename from `image-mode-text-map'.
+ (image-mode): Move graceful error-handling code from
+ `image-minor-mode' to here. On errors call `image-mode-as-text'.
+ (image-minor-mode): Remove all image-handling code.
+ Replace `image-mode-text-map' with `image-minor-mode-map'.
+ Check for `image-type' in mode-line format string.
+ (image-mode-maybe): Make obsolete with an alias to `image-mode'.
+ (image-mode-as-text): New function with most code from
+ `image-mode-maybe'.
+ (image-toggle-display-text): Move code that removes image
+ properties from `image-toggle-display' to here.
+ (image-toggle-display-image): New function with code that adds
+ image properties copied from `image-toggle-display'.
+ (image-toggle-display): Remove most code with leaving only code
+ that toggles between `image-mode-as-text' and `image-mode'.
+
2009-12-04 Ulf Jasper <address@hidden>
* net/newst-treeview.el
Index: lisp/image-mode.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/image-mode.el,v
retrieving revision 1.59
retrieving revision 1.60
diff -u -b -r1.59 -r1.60
--- lisp/image-mode.el 28 Nov 2009 20:45:22 -0000 1.59
+++ lisp/image-mode.el 4 Dec 2009 21:43:13 -0000 1.60
@@ -42,10 +42,10 @@
;;;###autoload (push (cons (purecopy "\\.p[bpgn]m\\'") 'image-mode)
auto-mode-alist)
;;;###autoload (push (cons (purecopy "\\.x[bp]m\\'") 'c-mode)
auto-mode-alist)
-;;;###autoload (push (cons (purecopy "\\.x[bp]m\\'") 'image-mode-maybe)
auto-mode-alist)
+;;;###autoload (push (cons (purecopy "\\.x[bp]m\\'") 'image-mode)
auto-mode-alist)
;;;###autoload (push (cons (purecopy "\\.svgz?\\'") 'xml-mode)
auto-mode-alist)
-;;;###autoload (push (cons (purecopy "\\.svgz?\\'") 'image-mode-maybe)
auto-mode-alist)
+;;;###autoload (push (cons (purecopy "\\.svgz?\\'") 'image-mode)
auto-mode-alist)
;;; Image mode window-info management.
@@ -286,6 +286,9 @@
This variable is used to display the current image type in the mode line.")
(make-variable-buffer-local 'image-type)
+(defvar image-mode-previous-major-mode nil
+ "Internal variable to keep the previous non-image major mode.")
+
(defvar image-mode-map
(let ((map (make-sparse-keymap)))
(suppress-keymap map)
@@ -306,11 +309,11 @@
map)
"Major mode keymap for viewing images in Image mode.")
-(defvar image-mode-text-map
+(defvar image-minor-mode-map
(let ((map (make-sparse-keymap)))
(define-key map "\C-c\C-c" 'image-toggle-display)
map)
- "Major mode keymap for viewing images as text in Image mode.")
+ "Minor mode keymap for viewing images as text in Image mode.")
(defvar bookmark-make-record-function)
@@ -320,8 +323,28 @@
You can use \\<image-mode-map>\\[image-toggle-display]
to toggle between display as an image and display as text."
(interactive)
+ (condition-case err
+ (progn
+ (unless (display-images-p)
+ (error "Display does not support images"))
+
(kill-all-local-variables)
(setq major-mode 'image-mode)
+
+ (if (not (image-get-display-property))
+ (progn
+ (image-toggle-display-image)
+ ;; If attempt to display the image fails.
+ (if (not (image-get-display-property))
+ (error "Invalid image")))
+ ;; Set next vars when image is already displayed but local
+ ;; variables were cleared by kill-all-local-variables
+ (setq cursor-type nil truncate-lines t
+ image-type (plist-get (cdr (image-get-display-property))
:type)))
+
+ (setq mode-name (if image-type (format "Image[%s]" image-type) "Image"))
+ (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)
@@ -330,99 +353,85 @@
(image-mode-setup-winprops)
(add-hook 'change-major-mode-hook 'image-toggle-display-text nil t)
- (if (display-images-p)
- (if (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
- image-type (plist-get (cdr (image-get-display-property)) :type)))
- (setq image-type "text")
- (use-local-map image-mode-text-map))
- (setq mode-name (format "Image[%s]" image-type))
(run-mode-hooks 'image-mode-hook)
- (if (display-images-p)
(message "%s" (concat
(substitute-command-keys
- "Type \\[image-toggle-display] to view as ")
+ "Type \\[image-toggle-display] to view the image as ")
(if (image-get-display-property)
- "text" "an image") "."))))
+ "text" "an image") ".")))
+ (error
+ (image-mode-as-text)
+ (funcall
+ (if (called-interactively-p 'any) 'error 'message)
+ "Cannot display image: %s" (cdr err)))))
;;;###autoload
(define-minor-mode image-minor-mode
"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 (:eval (format " Image[%s]" image-type)) image-mode-text-map
+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."
+ nil (:eval (if image-type (format " Image[%s]" image-type) " Image"))
+ image-minor-mode-map
:group 'image
:version "22.1"
- (if (not image-minor-mode)
- (image-toggle-display-text)
- (image-mode-setup-winprops)
- (add-hook 'change-major-mode-hook (lambda () (image-minor-mode -1)) nil t)
- (if (display-images-p)
- (condition-case err
- (progn
- (if (not (image-get-display-property))
- (image-toggle-display)
- (setq cursor-type nil truncate-lines t
- image-type (plist-get (cdr (image-get-display-property))
- :type)))
- (message "%s"
- (concat
- (substitute-command-keys
- "Type \\[image-toggle-display] to view the image as ")
- (if (image-get-display-property)
- "text" "an image") ".")))
- (error
- (image-toggle-display-text)
- (funcall
- (if (called-interactively-p 'any) 'error 'message)
- "Cannot display image: %s" (cdr err))))
- (setq image-type "text")
- (use-local-map image-mode-text-map))))
+ (if image-minor-mode
+ (add-hook 'change-major-mode-hook (lambda () (image-minor-mode -1)) nil
t)))
;;;###autoload
-(defun image-mode-maybe ()
- "Set major or minor mode for image files.
-Set Image major mode only when there are no other major modes
-associated with a filename in `auto-mode-alist'. When an image
-filename matches another major mode in `auto-mode-alist' then
-set that major mode and Image minor mode.
+(defun image-mode-as-text ()
+ "Set a non-image mode as major mode in combination with image minor mode.
+A non-image major mode found from `auto-mode-alist' or Fundamental mode
+displays an image file as text. `image-minor-mode' provides the key
+\\<image-mode-map>\\[image-toggle-display] to switch back to `image-mode'
+to display an image file as the actual image.
+
+You can use `image-mode-as-text' in `auto-mode-alist' when you want
+to display an image file as text inititally.
-See commands `image-mode' and `image-minor-mode' for more
-information on these modes."
+See commands `image-mode' and `image-minor-mode' for more information
+on these modes."
(interactive)
- (let* ((mode-alist
+ ;; image-mode-as-text = normal-mode + image-minor-mode
+ (let ((previous-image-type image-type)) ; preserve `image-type'
+ (if image-mode-previous-major-mode
+ ;; Restore previous major mode that was already found by this
+ ;; function and cached in `image-mode-previous-major-mode'
+ (funcall image-mode-previous-major-mode)
+ (let ((auto-mode-alist
(delq nil (mapcar
(lambda (elt)
(unless (memq (or (car-safe (cdr elt)) (cdr elt))
- '(image-mode image-mode-maybe))
+ '(image-mode image-mode-maybe
image-mode-as-text))
elt))
- auto-mode-alist))))
- (if (assoc-default buffer-file-name mode-alist 'string-match)
- (let ((auto-mode-alist mode-alist)
- (magic-mode-alist nil))
- (set-auto-mode)
- (image-minor-mode t))
- (image-mode))))
-
-(defun image-toggle-display-text ()
- "Showing the text of the image file."
+ auto-mode-alist)))
+ (magic-fallback-mode-alist
+ (delq nil (mapcar
+ (lambda (elt)
+ (unless (memq (or (car-safe (cdr elt)) (cdr elt))
+ '(image-mode image-mode-maybe
image-mode-as-text))
+ elt))
+ magic-fallback-mode-alist))))
+ (normal-mode)
+ (set (make-local-variable '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'.
+ (image-minor-mode 1)
+ ;; Show the image file as text.
+ (image-toggle-display-text)
+ (message "%s" (concat
+ (substitute-command-keys
+ "Type \\[image-toggle-display] to view the image as ")
(if (image-get-display-property)
- (image-toggle-display)))
+ "text" "an image") "."))))
-(defvar archive-superior-buffer)
-(defvar tar-superior-buffer)
-(declare-function image-refresh "image.c" (spec &optional frame))
+(define-obsolete-function-alias 'image-mode-maybe 'image-mode "23.2")
-(defun image-toggle-display ()
- "Start or stop displaying an image file as the actual image.
-This command toggles between showing the text of the image file
-and showing the image as an image."
- (interactive)
- (if (image-get-display-property)
+(defun image-toggle-display-text ()
+ "Show the image file as text.
+Remove text properties that display the image."
(let ((inhibit-read-only t)
(buffer-undo-list t)
(modified (buffer-modified-p)))
@@ -430,17 +439,17 @@
'(display intangible read-nonsticky
read-only front-sticky))
(set-buffer-modified-p modified)
- (kill-local-variable 'cursor-type)
- (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 'any)
- (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
+ (message "Repeat this command to go back to displaying the image"))))
+
+(defvar archive-superior-buffer)
+(defvar tar-superior-buffer)
+(declare-function image-refresh "image.c" (spec &optional frame))
+
+(defun image-toggle-display-image ()
+ "Show the image of the image file.
+Turn the image data into a real image, but only if the whole file
+was inserted."
(let* ((filename (buffer-file-name))
(data-p (not (and filename
(file-readable-p filename)
@@ -476,12 +485,20 @@
(setq truncate-lines t)
;; 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 'any)
- (message "Repeat this command to go back to displaying the file as
text")))))
+ (message "Repeat this command to go back to displaying the file as
text"))))
+
+(defun image-toggle-display ()
+ "Start or stop displaying an image file as the actual image.
+This command toggles between `image-mode-as-text' showing the text of
+the image file and `image-mode' showing the image as an image."
+ (interactive)
+ (if (image-get-display-property)
+ (image-mode-as-text)
+ (image-mode)))
;;; Support for bookmark.el
(declare-function bookmark-make-record-default "bookmark"
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] emacs etc/NEWS lisp/ChangeLog lisp/image-mode.el,
Juri Linkov <=