]> git.eshelyaron.com Git - emacs.git/commitdiff
Make set-process-buffer also update the process mark
authorLars Ingebrigtsen <larsi@gnus.org>
Thu, 24 Sep 2020 15:14:25 +0000 (17:14 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Thu, 24 Sep 2020 15:14:25 +0000 (17:14 +0200)
* src/process.c (Fset_process_buffer): Update the process mark
(bug#43573).

doc/lispref/processes.texi
etc/NEWS
src/process.c

index 4556f8aeb546457283cb1db2c1f091c6ad1064bd..855df4b9260cda137d57ae19f1f6d4a44aa5c02a 100644 (file)
@@ -1576,7 +1576,8 @@ from previous output.
 @defun set-process-buffer process buffer
 This function sets the buffer associated with @var{process} to
 @var{buffer}.  If @var{buffer} is @code{nil}, the process becomes
-associated with no buffer.
+associated with no buffer; if non-@code{nil}, the process mark will be
+set to point to the end of @var{buffer}.
 @end defun
 
 @defun get-buffer-process buffer-or-name
index fe2f5c37821c85922ce4c17371c70812e9e71d62..5cb31256ff42cb2b04e761b730c048a7c8086623 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1277,6 +1277,10 @@ directory instead of the default directory.
 \f
 * Incompatible Lisp Changes in Emacs 28.1
 
+
+** 'set-process-buffer' now updates the process mark.
+The mark will be set to point to the end of the new buffer.
+
 +++
 ** Some properties from completion tables are now preserved.
 If 'minibuffer-allow-text-properties' is non-nil, doing completion
index 948d13364687d5d80dde3cd4ce9d96c1e7ca7be4..ee8dcbbf749ae48aaf8bd7786ef6a62ae9a6b231 100644 (file)
@@ -1205,6 +1205,16 @@ not the name of the pty that Emacs uses to talk with that terminal.  */)
   return XPROCESS (process)->tty_name;
 }
 
+static void
+update_process_mark (struct Lisp_Process *p)
+{
+  Lisp_Object buffer = p->buffer;
+  if (BUFFERP (buffer))
+    set_marker_both (p->mark, buffer,
+                    BUF_ZV (XBUFFER (buffer)),
+                    BUF_ZV_BYTE (XBUFFER (buffer)));
+}
+
 DEFUN ("set-process-buffer", Fset_process_buffer, Sset_process_buffer,
        2, 2, 0,
        doc: /* Set buffer associated with PROCESS to BUFFER (a buffer, or nil).
@@ -1221,6 +1231,7 @@ Return BUFFER.  */)
   if (NETCONN1_P (p) || SERIALCONN1_P (p) || PIPECONN1_P (p))
     pset_childp (p, Fplist_put (p->childp, QCbuffer, buffer));
   setup_process_coding_systems (process);
+  update_process_mark (p);
   return buffer;
 }
 
@@ -1637,15 +1648,6 @@ DEFUN ("process-list", Fprocess_list, Sprocess_list, 0, 0, 0,
   return Fmapcar (Qcdr, Vprocess_alist);
 }
 \f
-static void
-update_process_mark (struct Lisp_Process *p)
-{
-  Lisp_Object buffer = p->buffer;
-  if (BUFFERP (buffer))
-    set_marker_both (p->mark, buffer,
-                    BUF_ZV (XBUFFER (buffer)),
-                    BUF_ZV_BYTE (XBUFFER (buffer)));
-}
 
 /* Starting asynchronous inferior processes.  */