all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Cecilio Pardo <cpardo@imayhem.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: 74044@debbugs.gnu.org
Subject: bug#74044: 31.0.50; yank-media filters out svg files
Date: Sun, 27 Oct 2024 14:45:45 +0100	[thread overview]
Message-ID: <c5e1bef8-c45e-4f8b-9035-5fbcd83b9501@imayhem.com> (raw)
In-Reply-To: <86sesh92gh.fsf@gnu.org>

[-- Attachment #1: Type: text/plain, Size: 736 bytes --]

On 27/10/2024 13:04, Eli Zaretskii wrote:
>> yank-media filters out image formats that are not supported by emacs.
>>
>> To do that is passes the second part of the mime type (png, jpeg, etc.)
>> to (image-type-available-p).  This is ok for other image types, but not
>> for SVG, because its mime type is image/svg+xml. For example, InkScape
>> (a free vector drawing program) uses image/svg+xml to copy vector data
>> into the clipbard.
>>
>> This patch fixes that filtering. Also changes the function
>> mailcap-mime-type-to-extension, used by org-mode to choose an extension
>> for the file it saves. It nees to be svg, not svg+xml.
> 
> Please add comments that explain why we treat svg+xml spercially.

Patch attached.

Thank you.

[-- Attachment #2: 0001-Fix-yank-media-to-allow-SVG-files.patch --]
[-- Type: text/plain, Size: 2625 bytes --]

From bd1f30291bc332cc65decff5c766c81457e2d0d8 Mon Sep 17 00:00:00 2001
From: Cecilio Pardo <cpardo@imayhem.com>
Date: Sun, 27 Oct 2024 14:39:34 +0100
Subject: [PATCH] Fix yank media to allow SVG files.

* 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
---
 lisp/net/mailcap.el | 15 +++++++++++----
 lisp/yank-media.el  |  7 ++++++-
 2 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/lisp/net/mailcap.el b/lisp/net/mailcap.el
index 3e847c758c2..d3ca899216a 100644
--- a/lisp/net/mailcap.el
+++ b/lisp/net/mailcap.el
@@ -1084,10 +1084,17 @@ mailcap-file-name-to-mime-type
 (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."
diff --git a/lisp/yank-media.el b/lisp/yank-media.el
index 6655bb705ef..17981c37c0e 100644
--- a/lisp/yank-media.el
+++ b/lisp/yank-media.el
@@ -67,7 +67,12 @@ yank-media--find-matching-media
    (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'.
-- 
2.35.1.windows.2


      reply	other threads:[~2024-10-27 13:45 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-10-27 10:38 bug#74044: 31.0.50; yank-media filters out svg files Cecilio Pardo
2024-10-27 12:04 ` Eli Zaretskii
2024-10-27 13:45   ` Cecilio Pardo [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=c5e1bef8-c45e-4f8b-9035-5fbcd83b9501@imayhem.com \
    --to=cpardo@imayhem.com \
    --cc=74044@debbugs.gnu.org \
    --cc=eliz@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.