From: Kim F. Storm Date: Mon, 29 Apr 2002 21:06:51 +0000 (+0000) Subject: (remove-yank-excluded-properties): New helper function. X-Git-Tag: ttn-vms-21-2-B4~15306 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=8ed59ad5707cdec33064f749565811ec1b076bf9;p=emacs.git (remove-yank-excluded-properties): New helper function. (insert-for-yank, insert-buffer-substring-as-yank): Use it. --- diff --git a/lisp/subr.el b/lisp/subr.el index 12c8272782c..02efa92cfa7 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -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)))) ;; Synchronous shell commands.