1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-21 06:55:39 +00:00

Fix 'yank-media' to allow yanking SVG data

* lisp/net/mailcap.el (mailcap-mime-type-to-extension): Return
"svg" for mime type 'image/svg+xml'.  Org-mode uses this.
* lisp/yank-media.el (yank-media--find-matching-media): If svg is
supported, don't filter out 'image/svg+xml'.  (Bug#74044)
This commit is contained in:
Cecilio Pardo 2024-10-27 14:39:34 +01:00 committed by Eli Zaretskii
parent 9c5b6e88e7
commit bf395fd8bc
2 changed files with 17 additions and 5 deletions

View File

@ -1084,10 +1084,17 @@ For instance, \"foo.png\" will result in \"image/png\"."
(defun mailcap-mime-type-to-extension (mime-type)
"Return a file name extension based on a MIME-TYPE.
For instance, `image/png' will result in `png'."
(intern (cadr (split-string (if (symbolp mime-type)
(symbol-name mime-type)
mime-type)
"/"))))
(intern
(let ((e (cadr (split-string (if (symbolp mime-type)
(symbol-name mime-type)
mime-type)
"/"))))
;; Usually, the normal extension is the same as the MIME subtype.
;; But for SVG files, the extension is "svg" and the MIME type is
;; "svg+xml".
(if (string= e "svg+xml")
"svg"
e))))
(defun mailcap-mime-types ()
"Return a list of MIME media types."

View File

@ -67,7 +67,12 @@ all the different selection types."
(lambda (type)
(pcase-let ((`(,major ,minor) (split-string (symbol-name type) "/")))
(if (and (equal major "image")
(not (image-type-available-p (intern minor))))
(not (image-type-available-p
;; Usually, MIME subtype is the same as Emacs'
;; identifier for an image type. But for SVG, the
;; identifier is 'svg, while the MIME type is
;; image/svg+xml. So we make the exception here.
(intern (if (string= minor "svg+xml") "svg" minor)))))
;; Just filter out all the image types that Emacs doesn't
;; support, because the clipboard is full of things like
;; `image/x-win-bitmap'.