changeset 106304:94b85d4a3456

(image-minor-mode): Exit more gracefully when the image cannot be displayed (e.g. when doing C-x C-f some-new-file.svg RET).
author Stefan Monnier <monnier@iro.umontreal.ca>
date Sat, 28 Nov 2009 20:45:19 +0000
parents d3af107622c7
children 0b797c8cfed8
files lisp/ChangeLog lisp/image-mode.el
diffstat 2 files changed, 22 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Sat Nov 28 20:36:05 2009 +0000
+++ b/lisp/ChangeLog	Sat Nov 28 20:45:19 2009 +0000
@@ -1,5 +1,8 @@
 2009-11-28  Stefan Monnier  <monnier@iro.umontreal.ca>
 
+	* image-mode.el (image-minor-mode): Exit more gracefully when the image
+	cannot be displayed (e.g. when doing C-x C-f some-new-file.svg RET).
+
 	* man.el (Man-completion-table): Make it easier to enter "<sec> <name>".
 
 	* eshell/em-prompt.el (eshell-prompt-function): Abbreviate pwd, since
--- a/lisp/image-mode.el	Sat Nov 28 20:36:05 2009 +0000
+++ b/lisp/image-mode.el	Sat Nov 28 20:45:19 2009 +0000
@@ -362,18 +362,26 @@
     (image-mode-setup-winprops)
     (add-hook 'change-major-mode-hook (lambda () (image-minor-mode -1)) nil t)
     (if (display-images-p)
-	(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)))
+        (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 (display-images-p)
-	(message "%s" (concat
-		       (substitute-command-keys
-			"Type \\[image-toggle-display] to view the image as ")
-		       (if (image-get-display-property)
-			   "text" "an image") ".")))))
+      (use-local-map image-mode-text-map))))
 
 ;;;###autoload
 (defun image-mode-maybe ()