# HG changeset patch # User Kim F. Storm # Date 1020114411 0 # Node ID 5eb4aa56b278e06d64bbd3eaf56f75d9d1d783c5 # Parent a03f573f9ef13754fd8739a1ec7e75eb63afe075 (remove-yank-excluded-properties): New helper function. (insert-for-yank, insert-buffer-substring-as-yank): Use it. diff -r a03f573f9ef1 -r 5eb4aa56b278 lisp/subr.el --- a/lisp/subr.el Mon Apr 29 20:20:06 2002 +0000 +++ b/lisp/subr.el Mon Apr 29 21:06:51 2002 +0000 @@ -1276,39 +1276,39 @@ (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 @@ 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)))) ;; Synchronous shell commands.