diff options
| author | Lars Ingebrigtsen | 2022-03-21 18:05:18 +0100 |
|---|---|---|
| committer | Lars Ingebrigtsen | 2022-03-21 18:05:18 +0100 |
| commit | d74cd0cf1f96e256c479599939efacd11600c0c8 (patch) | |
| tree | 97d47945bff9757af2ffa38a40c776b92ab7fc43 | |
| parent | 61d34c6a500d487c8952d4ad7751e1deb80f5bfc (diff) | |
| download | emacs-d74cd0cf1f96e256c479599939efacd11600c0c8.tar.gz emacs-d74cd0cf1f96e256c479599939efacd11600c0c8.zip | |
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.
| -rw-r--r-- | lisp/image-mode.el | 9 | ||||
| -rw-r--r-- | 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 b2af3f06a27..38a5e7cdfdc 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'." | |||
| 625 | 625 | ||
| 626 | (put 'image-mode 'mode-class 'special) | 626 | (put 'image-mode 'mode-class 'special) |
| 627 | 627 | ||
| 628 | (declare-function image-converter-initialize "image-converter.el") | ||
| 629 | |||
| 628 | ;;;###autoload | 630 | ;;;###autoload |
| 629 | (defun image-mode () | 631 | (defun image-mode () |
| 630 | "Major mode for image files. | 632 | "Major mode for image files. |
| @@ -650,7 +652,12 @@ Key bindings: | |||
| 650 | "Empty file" | 652 | "Empty file" |
| 651 | "(New file)") | 653 | "(New file)") |
| 652 | "Empty buffer")) | 654 | "Empty buffer")) |
| 653 | (image-mode--display))) | 655 | (image-mode--display) |
| 656 | ;; Ensure that we recognize externally parsed image formats in | ||
| 657 | ;; commands like `n'. | ||
| 658 | (when image-use-external-converter | ||
| 659 | (require 'image-converter) | ||
| 660 | (image-converter-initialize)))) | ||
| 654 | 661 | ||
| 655 | (defun image-mode--display () | 662 | (defun image-mode--display () |
| 656 | (if (not (image-get-display-property)) | 663 | (if (not (image-get-display-property)) |
diff --git a/lisp/image/image-converter.el b/lisp/image/image-converter.el index b8c9a620024..a339e95ab4a 100644 --- a/lisp/image/image-converter.el +++ b/lisp/image/image-converter.el | |||
| @@ -68,15 +68,19 @@ not, conversion will fail." | |||
| 68 | (imagemagick :command "convert" :probe ("-list" "format"))) | 68 | (imagemagick :command "convert" :probe ("-list" "format"))) |
| 69 | "List of supported image converters to try.") | 69 | "List of supported image converters to try.") |
| 70 | 70 | ||
| 71 | (defun image-converter-initialize () | ||
| 72 | "Determine the external image converter to be used. | ||
| 73 | This also determines which external formats we can parse." | ||
| 74 | (unless image-converter | ||
| 75 | (image-converter--find-converter))) | ||
| 76 | |||
| 71 | (defun image-convert-p (source &optional data-p) | 77 | (defun image-convert-p (source &optional data-p) |
| 72 | "Return `image-convert' if SOURCE is an image that can be converted. | 78 | "Return `image-convert' if SOURCE is an image that can be converted. |
| 73 | SOURCE can either be a file name or a string containing image | 79 | SOURCE can either be a file name or a string containing image |
| 74 | data. In the latter case, DATA-P should be non-nil. If DATA-P | 80 | data. In the latter case, DATA-P should be non-nil. If DATA-P |
| 75 | is a string, it should be a MIME format string like | 81 | is a string, it should be a MIME format string like |
| 76 | \"image/gif\"." | 82 | \"image/gif\"." |
| 77 | ;; Find an installed image converter. | 83 | (image-converter-initialize) |
| 78 | (unless image-converter | ||
| 79 | (image-converter--find-converter)) | ||
| 80 | ;; When image-converter was customized | 84 | ;; When image-converter was customized |
| 81 | (when (and image-converter (not image-converter-regexp)) | 85 | (when (and image-converter (not image-converter-regexp)) |
| 82 | (when-let ((formats (image-converter--probe image-converter))) | 86 | (when-let ((formats (image-converter--probe image-converter))) |
| @@ -111,9 +115,7 @@ IMAGE can also be an image object as returned by `create-image'. | |||
| 111 | 115 | ||
| 112 | This function converts the image the preferred format, and the | 116 | This function converts the image the preferred format, and the |
| 113 | converted image data is returned as a string." | 117 | converted image data is returned as a string." |
| 114 | ;; Find an installed image converter. | 118 | (image-converter-initialize) |
| 115 | (unless image-converter | ||
| 116 | (image-converter--find-converter)) | ||
| 117 | (unless image-converter | 119 | (unless image-converter |
| 118 | (error "No external image converters available")) | 120 | (error "No external image converters available")) |
| 119 | (when (and image-format | 121 | (when (and image-format |