]> git.eshelyaron.com Git - emacs.git/commitdiff
(insert-image-file): Add yank-handler.
authorKim F. Storm <storm@cua.dk>
Thu, 21 Jul 2005 08:56:23 +0000 (08:56 +0000)
committerKim F. Storm <storm@cua.dk>
Thu, 21 Jul 2005 08:56:23 +0000 (08:56 +0000)
(image-file-yank-handler): Yank handler to make unique copies of
images when they are yanked into a buffer next to each other.

lisp/image-file.el

index 8f74dd63c0aaeaf278e9185ed4f65fa9377487b9..be95470184cf77f165205ffe73f5a4bd07090b8b 100644 (file)
@@ -118,6 +118,7 @@ the command `insert-file-contents'."
              (create-image data nil t))
             (props
              `(display ,image
+                       yank-handler (image-file-yank-handler)
                        intangible ,image
                        rear-nonsticky (display intangible)
                        ;; This a cheap attempt to make the whole buffer
@@ -135,6 +136,19 @@ the command `insert-file-contents'."
          (setq truncate-lines t))))
     rval))
 
+;; We use a yank-handler to make yanked images unique, so that
+;; yanking two copies of the same image next to each other are
+;; recognized as two different images.
+(defun image-file-yank-handler (string)
+  "Yank handler for inserting an image into a buffer."
+  (let ((image (get-text-property 0 'display string)))
+    (if (consp image)
+       (put-text-property 0 (length string)
+                          'display
+                          (cons (car image) (cdr image))
+                          string))
+    (insert string)))
+
 (put 'image-file-handler 'safe-magic t)
 (defun image-file-handler (operation &rest args)
   "Filename handler for inserting image files.