]> git.eshelyaron.com Git - emacs.git/commitdiff
Clean up the yank-media data massaging
authorLars Ingebrigtsen <larsi@gnus.org>
Mon, 8 Nov 2021 04:54:10 +0000 (05:54 +0100)
committerLars Ingebrigtsen <larsi@gnus.org>
Mon, 8 Nov 2021 04:54:10 +0000 (05:54 +0100)
* lisp/yank-media.el (yank-media--get-selection): Put the
nul-massaging code...
(yank-media-types--format): ... here instead, and decode utf-16
better.

lisp/yank-media.el

index aa7d8abfd4844cd30ffaf2c5e62fb410c9982dc8..bc57e96612ced5fe522bd0d6cb2a5a081c59bd6a 100644 (file)
@@ -82,15 +82,10 @@ all the different selection types."
 
 (defun yank-media--get-selection (type)
   (let ((selection-coding-system 'binary))
-    (when-let ((data (gui-backend-get-selection 'CLIPBOARD type)))
-      (when (string-match-p "\\`text/" (symbol-name type))
-        ;; Some programs add a nul character at the end of text/*
-        ;; selections.  Remove that.
-        (when (zerop (elt data (1- (length data))))
-          (setq data (substring data 0 (1- (length data)))))
-        (setq data (decode-coding-string
-                    data (car (detect-coding-string data)))))
-      data)))
+    (when-let ((data (gui-get-selection 'CLIPBOARD type)))
+      (if (string-match-p "\\`text/" (symbol-name type))
+          (yank-media-types--format type data)
+        data))))
 
 ;;;###autoload
 (defun yank-media-handler (types handler)
@@ -180,7 +175,11 @@ inserts images as images."
                     'utf-16-le))))))
       (if coding-system
           (decode-coding-string data coding-system)
-        data)))
+        ;; Some programs add a nul character at the end of text/*
+        ;; selections.  Remove that.
+        (if (zerop (elt data (1- (length data))))
+            (substring data 0 (1- (length data)))
+          data))))
    (t
     data)))