]> git.eshelyaron.com Git - emacs.git/commitdiff
(remove-yank-excluded-properties): New helper function.
authorKim F. Storm <storm@cua.dk>
Mon, 29 Apr 2002 21:06:51 +0000 (21:06 +0000)
committerKim F. Storm <storm@cua.dk>
Mon, 29 Apr 2002 21:06:51 +0000 (21:06 +0000)
(insert-for-yank, insert-buffer-substring-as-yank): Use it.

lisp/subr.el

index 12c8272782cdf49afe853347cbaa7fcf26d22303..02efa92cfa70317ab2e8f963320d7dfab2c2988e 100644 (file)
@@ -1276,39 +1276,39 @@ for the sake of consistency."
 
 (defvar yank-excluded-properties)
 
+(defun remove-yank-excluded-properties (start end)
+  "Remove `yank-excluded-properties' between START and END positions.
+Replaces `category' properties with their defined properties."
+  (let ((inhibit-read-only t))
+    ;; Replace any `category' property with the properties it stands for.
+    (unless (memq yank-excluded-properties '(t nil))
+      (save-excursion
+       (goto-char start)
+       (while (< (point) end)
+         (let ((cat (get-text-property (point) 'category))
+               run-end)
+           (when cat
+             (setq run-end
+                   (next-single-property-change (point) 'category nil end))
+             (remove-list-of-text-properties (point) run-end '(category))
+             (add-text-properties (point) run-end (symbol-plist cat))
+             (goto-char (or run-end end)))
+           (setq run-end
+                 (next-single-property-change (point) 'category nil end))
+           (goto-char (or run-end end))))))
+    (if (eq yank-excluded-properties t)
+       (set-text-properties start end nil)
+      (remove-list-of-text-properties start end
+                                     yank-excluded-properties))))
+
 (defun insert-for-yank (&rest strings)
   "Insert STRINGS at point, stripping some text properties.
 Strip text properties from the inserted text
 according to `yank-excluded-properties'.
 Otherwise just like (insert STRINGS...)."
   (let ((opoint (point)))
-
     (apply 'insert strings)
-
-    (let ((inhibit-read-only t)
-         (end (point)))
-
-      ;; Replace any `category' property with the properties it stands for.
-      (unless (memq yank-excluded-properties '(t nil))
-       (save-excursion
-         (goto-char opoint)
-         (while (< (point) end)
-           (let ((cat (get-text-property (point) 'category))
-                 run-end)
-             (when cat
-               (setq run-end
-                     (next-single-property-change (point) 'category nil end))
-               (remove-list-of-text-properties (point) run-end '(category))
-               (add-text-properties (point) run-end (symbol-plist cat))
-               (goto-char (or run-end end)))
-             (setq run-end
-                   (next-single-property-change (point) 'category nil end))
-             (goto-char (or run-end end))))))
-
-      (if (eq yank-excluded-properties t)
-         (set-text-properties opoint end nil)
-       (remove-list-of-text-properties opoint end
-                                       yank-excluded-properties)))))
+    (remove-yank-excluded-properties opoint (point))))
 
 (defun insert-buffer-substring-no-properties (buf &optional start end)
   "Insert before point a substring of buffer BUFFER, without text properties.
@@ -1328,11 +1328,7 @@ beginning and the end of BUFFER.  Strip text properties from the
 inserted text according to `yank-excluded-properties'."
   (let ((opoint (point)))
     (insert-buffer-substring buf start end)
-    (let ((inhibit-read-only t))
-      (if (eq yank-excluded-properties t)
-         (set-text-properties opoint (point) nil)
-       (remove-list-of-text-properties opoint (point)
-                                       yank-excluded-properties)))))
+    (remove-yank-excluded-properties opoint (point))))
 
 \f
 ;; Synchronous shell commands.