]> git.eshelyaron.com Git - emacs.git/commitdiff
(insert-for-yank-1): Handle `font-lock-face' specially.
authorRichard M. Stallman <rms@gnu.org>
Thu, 28 Sep 2006 19:06:39 +0000 (19:06 +0000)
committerRichard M. Stallman <rms@gnu.org>
Thu, 28 Sep 2006 19:06:39 +0000 (19:06 +0000)
lisp/subr.el

index 45decd639249cfc23d56d55d3be8b378ac378fbb..6668f6423d67c934c7b379a8efe20c5eb1164895 100644 (file)
@@ -2167,11 +2167,32 @@ If UNDO is present and non-nil, it is a function that will be called
   (let* ((handler (and (stringp string)
                       (get-text-property 0 'yank-handler string)))
         (param (or (nth 1 handler) string))
-        (opoint (point)))
+        (opoint (point))
+        end)
+
     (setq yank-undo-function t)
     (if (nth 0 handler) ;; FUNCTION
        (funcall (car handler) param)
       (insert param))
+    (setq end (point))
+
+    ;; What should we do with `font-lock-face' properties?
+    (if font-lock-defaults
+       ;; No, just wipe them.
+       (remove-list-of-text-properties opoint end '(font-lock-face))
+      ;; Convert them to `face'.
+      (save-excursion
+       (goto-char opoint)
+       (while (< (point) end)
+         (let ((face (get-text-property (point) 'font-lock-face))
+               run-end)
+           (setq run-end
+                 (next-single-property-change (point) 'font-lock-face nil end))
+           (when face
+             (remove-text-properties (point) run-end '(font-lock-face nil))
+             (put-text-property (point) run-end 'face face))
+           (goto-char run-end)))))
+
     (unless (nth 2 handler) ;; NOEXCLUDE
       (remove-yank-excluded-properties opoint (point)))
     (if (eq yank-undo-function t)  ;; not set by FUNCTION