Mercurial > emacs
changeset 44980:5eb4aa56b278
(remove-yank-excluded-properties): New helper function.
(insert-for-yank, insert-buffer-substring-as-yank): Use it.
author | Kim F. Storm <storm@cua.dk> |
---|---|
date | Mon, 29 Apr 2002 21:06:51 +0000 |
parents | a03f573f9ef1 |
children | 9aadbf05db26 |
files | lisp/subr.el |
diffstat | 1 files changed, 27 insertions(+), 31 deletions(-) [+] |
line wrap: on
line diff
--- 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.