]> git.eshelyaron.com Git - emacs.git/commitdiff
Add new function 'insert-into-buffer'
authorLars Ingebrigtsen <larsi@gnus.org>
Tue, 13 Jul 2021 21:46:16 +0000 (23:46 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Tue, 13 Jul 2021 21:46:16 +0000 (23:46 +0200)
* doc/lispref/text.texi (Insertion): Document it.
* lisp/subr.el (insert-into-buffer): New function.

doc/lispref/text.texi
etc/NEWS
lisp/subr.el

index feb9e58f31cc9c79842fea7550fa1d04d2fa9f04..6fbb475a32524101d78c683b8b553ec9c18be09b 100644 (file)
@@ -500,6 +500,15 @@ We hold these truth@point{}
 @defun insert-buffer-substring-no-properties from-buffer-or-name &optional start end
 This is like @code{insert-buffer-substring} except that it does not
 copy any text properties.
+@end defun
+
+@defun insert-into-buffer to-buffer &optional start end
+This is like @code{insert-buffer-substring}, but works in the opposite
+direction: The text is copied from the current buffer into
+@var{to-buffer}.  The block of text is copied to the current point in
+@var{to-buffer}, and point (in that buffer) is advanced to after the
+end of the copied text.  Is @code{start}/@code{end} is @code{nil}, the
+entire text in the current buffer is copied over.
 @end defun
 
   @xref{Sticky Properties}, for other insertion functions that inherit
index a3f12837f78113dd758c28448cdbd063b79633fa..a0b62250d897a8cc6648abc79be1c64e8aae84b2 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -2185,6 +2185,10 @@ summaries will include the failing condition.
 
 ** Miscellaneous
 
++++
+*** New utility function 'insert-into-buffer'.
+This is like 'insert-into-buffer', but works in the opposite direction.
+
 +++
 *** New user option 'lock-file-name-transforms'.
 This option allows controlling where lock files are written.  It uses
index e49c2773357d740db84ece7e9830396e32bb87c0..c7e18646bfbe5b9dfe4581fbf122f6c512ab0c23 100644 (file)
@@ -3850,6 +3850,14 @@ Before insertion, process text properties according to
     (insert-buffer-substring buffer start end)
     (remove-yank-excluded-properties opoint (point))))
 
+(defun insert-into-buffer (buffer &optional start end)
+  "Insert the contents of the current buffer into BUFFER.
+If START/END, only insert that region from the current buffer.
+Point in BUFFER will be placed after the inserted text."
+  (let ((current (current-buffer)))
+    (with-current-buffer buffer
+      (insert-buffer-substring current start end))))
+
 (defun yank-handle-font-lock-face-property (face start end)
   "If `font-lock-defaults' is nil, apply FACE as a `face' property.
 START and END denote the start and end of the text to act on.