]> git.eshelyaron.com Git - emacs.git/commitdiff
Make 'delete-process' into a command
authorLars Ingebrigtsen <larsi@gnus.org>
Sat, 7 May 2022 16:21:29 +0000 (18:21 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Sat, 7 May 2022 16:21:29 +0000 (18:21 +0200)
* doc/lispref/processes.texi (Deleting Processes): Document
missing PROCESS value.
* src/process.c (Fdelete_process): Allow calling interactively
(bug#10107).

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

index 18f446735bb773a8e9df79d8227bdb66061a4498..668a577870aba8dc065d20b2bce747d7111954cf 100644 (file)
@@ -1011,16 +1011,18 @@ terminated (due to calling @code{exit} or to a signal).  If it is
 they exit.
 @end defopt
 
-@defun delete-process process
+@defun delete-process &optional process
 This function deletes a process, killing it with a @code{SIGKILL}
 signal if the process was running a program.  The argument may be a
 process, the name of a process, a buffer, or the name of a buffer.  (A
 buffer or buffer-name stands for the process that
-@code{get-buffer-process} returns.)  Calling @code{delete-process} on
-a running process terminates it, updates the process status, and runs
-the sentinel immediately.  If the process has already terminated,
-calling @code{delete-process} has no effect on its status, or on the
-running of its sentinel (which will happen sooner or later).
+@code{get-buffer-process} returns, and a missing or @code{nil}
+@var{process} means that the current buffer's process should be
+killed.)  Calling @code{delete-process} on a running process
+terminates it, updates the process status, and runs the sentinel
+immediately.  If the process has already terminated, calling
+@code{delete-process} has no effect on its status, or on the running
+of its sentinel (which will happen sooner or later).
 
 If the process object represents a network, serial, or pipe
 connection, its status changes to @code{closed}; otherwise, it changes
index 6a60231b3aad69d114931665c373af4223ae28e9..ee7a127af0e95b9b842a0bdba3b77dd3598c3aee 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -248,6 +248,13 @@ removed some time after that.
 \f
 * Changes in Emacs 29.1
 
+---
+** 'delete-process' is now a command.
+When called interactively, it will kill the process running in the
+current buffer (if any).  This can be useful if you have runaway
+output in the current buffer (from a process or a network connection),
+and want to stop it.
+
 +++
 ** New command 'restart-emacs'.
 This is like 'save-buffers-kill-emacs', but instead of just killing
index 08a02ad94232a6626bd8fba20767d65d2629e1eb..2f8863aef25b77434dfad824ce798af489a4b7ee 100644 (file)
@@ -1071,13 +1071,24 @@ record_deleted_pid (pid_t pid, Lisp_Object filename)
 
 }
 
-DEFUN ("delete-process", Fdelete_process, Sdelete_process, 1, 1, 0,
+DEFUN ("delete-process", Fdelete_process, Sdelete_process, 0, 1,
+       "(list 'message)",
        doc: /* Delete PROCESS: kill it and forget about it immediately.
 PROCESS may be a process, a buffer, the name of a process or buffer, or
-nil, indicating the current buffer's process.  */)
+nil, indicating the current buffer's process.
+
+Interactively, it will kill the current buffer's process.  */)
   (register Lisp_Object process)
 {
   register struct Lisp_Process *p;
+  bool mess = false;
+
+  /* We use this to see whether we were called interactively.  */
+  if (EQ (process, Qmessage))
+    {
+      mess = true;
+      process = Qnil;
+    }
 
   process = get_process (process);
   p = XPROCESS (process);
@@ -1131,6 +1142,8 @@ nil, indicating the current buffer's process.  */)
        }
     }
   remove_process (process);
+  if (mess)
+    message ("Deleted process");
   return Qnil;
 }
 \f
@@ -8637,6 +8650,7 @@ sentinel or a process filter function has an error.  */);
 
   DEFSYM (Qnull, "null");
   DEFSYM (Qpipe_process_p, "pipe-process-p");
+  DEFSYM (Qmessage, "message");
 
   defsubr (&Sprocessp);
   defsubr (&Sget_process);