emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master d74cd0cf1f: Make `n' in image-mode work more reliably with extern


From: Lars Ingebrigtsen
Subject: master d74cd0cf1f: Make `n' in image-mode work more reliably with external formats
Date: Mon, 21 Mar 2022 13:05:35 -0400 (EDT)

branch: master
commit d74cd0cf1f96e256c479599939efacd11600c0c8
Author: Lars Ingebrigtsen <larsi@gnus.org>
Commit: Lars Ingebrigtsen <larsi@gnus.org>

    Make `n' in image-mode work more reliably with external formats
    
    * lisp/image-mode.el (image-mode): Init the external machinery so
    that commands like `n' work for those files.
    * lisp/image/image-converter.el (image-converter-initialize):
    Factored out into own function.
    (image-convert-p): Use it.
    (image-convert): Ditto.
---
 lisp/image-mode.el            |  9 ++++++++-
 lisp/image/image-converter.el | 14 ++++++++------
 2 files changed, 16 insertions(+), 7 deletions(-)

diff --git a/lisp/image-mode.el b/lisp/image-mode.el
index b2af3f06a2..38a5e7cdfd 100644
--- a/lisp/image-mode.el
+++ b/lisp/image-mode.el
@@ -625,6 +625,8 @@ image as text, when opening such images in `image-mode'."
 
 (put 'image-mode 'mode-class 'special)
 
+(declare-function image-converter-initialize "image-converter.el")
+
 ;;;###autoload
 (defun image-mode ()
   "Major mode for image files.
@@ -650,7 +652,12 @@ Key bindings:
                        "Empty file"
                      "(New file)")
                  "Empty buffer"))
-    (image-mode--display)))
+    (image-mode--display)
+    ;; Ensure that we recognize externally parsed image formats in
+    ;; commands like `n'.
+    (when image-use-external-converter
+      (require 'image-converter)
+      (image-converter-initialize))))
 
 (defun image-mode--display ()
   (if (not (image-get-display-property))
diff --git a/lisp/image/image-converter.el b/lisp/image/image-converter.el
index b8c9a62002..a339e95ab4 100644
--- a/lisp/image/image-converter.el
+++ b/lisp/image/image-converter.el
@@ -68,15 +68,19 @@ not, conversion will fail."
     (imagemagick :command "convert" :probe ("-list" "format")))
   "List of supported image converters to try.")
 
+(defun image-converter-initialize ()
+  "Determine the external image converter to be used.
+This also determines which external formats we can parse."
+  (unless image-converter
+    (image-converter--find-converter)))
+
 (defun image-convert-p (source &optional data-p)
   "Return `image-convert' if SOURCE is an image that can be converted.
 SOURCE can either be a file name or a string containing image
 data.  In the latter case, DATA-P should be non-nil.  If DATA-P
 is a string, it should be a MIME format string like
 \"image/gif\"."
-  ;; Find an installed image converter.
-  (unless image-converter
-    (image-converter--find-converter))
+  (image-converter-initialize)
   ;; When image-converter was customized
   (when (and image-converter (not image-converter-regexp))
     (when-let ((formats (image-converter--probe image-converter)))
@@ -111,9 +115,7 @@ IMAGE can also be an image object as returned by 
`create-image'.
 
 This function converts the image the preferred format, and the
 converted image data is returned as a string."
-  ;; Find an installed image converter.
-  (unless image-converter
-    (image-converter--find-converter))
+  (image-converter-initialize)
   (unless image-converter
     (error "No external image converters available"))
   (when (and image-format



reply via email to

[Prev in Thread] Current Thread [Next in Thread]