]> git.eshelyaron.com Git - emacs.git/commitdiff
Remove :stop key from make-process.
authorPhilipp Stephani <phst@google.com>
Fri, 19 Apr 2019 11:03:40 +0000 (13:03 +0200)
committerPhilipp Stephani <phst@google.com>
Fri, 19 Apr 2019 12:03:16 +0000 (14:03 +0200)
This has never worked and caused issues such as Bug#30460.

* src/process.c (Fmake_process): Don't accept :stop key any more.
(syms_of_process): Define needed symbol 'null'.

* test/src/process-tests.el (make-process/stop): New unit test.

* doc/lispref/processes.texi (Asynchronous Processes): Remove :stop
key from manual.

doc/lispref/processes.texi
etc/NEWS
src/process.c
test/src/process-tests.el

index 6be311b5639413ae3f9c4712d777d46dcacc215b..43009b35b2a4221e5c965a0023b8fd4cbde68e41 100644 (file)
@@ -678,7 +678,9 @@ Initialize the process query flag to @var{query-flag}.
 @xref{Query Before Exit}.
 
 @item :stop @var{stopped}
-If @var{stopped} is non-@code{nil}, start the process in the
+@var{stopped} must be @code{nil}.  The @code{:stop} key is ignored
+otherwise and is retained for compatibility with other process types
+such as pipe processes.  Asynchronous subprocesses never start in the
 stopped state.
 
 @item :filter @var{filter}
index 3e3454bd939bc79b5c53aaca95be7cefb757de5f..4d76143b134722d14535fdb81222b21bae38af7a 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1515,6 +1515,9 @@ The global value of 'indent-line-function', which defaults to
 To get back the old behavior, add a function to 'text-mode-hook' which
 performs (setq-local indent-line-function #'indent-relative).
 
+** 'make-process' no longer accepts a non-nil ':stop' key.  This has
+never worked reliably, and now causes an error.
+
 \f
 * Lisp Changes in Emacs 27.1
 
index 0c4403716282bacfb4fdbd7d8f0a536fb2e7acf0..6717ccb41870d7e8c8816175561aff5c704faec6 100644 (file)
@@ -1643,10 +1643,11 @@ ENCODING is used for writing.
 :noquery BOOL -- When exiting Emacs, query the user if BOOL is nil and
 the process is running.  If BOOL is not given, query before exiting.
 
-:stop BOOL -- Start process in the `stopped' state if BOOL non-nil.
-In the stopped state, a process does not accept incoming data, but you
-can send outgoing data.  The stopped state is cleared by
-`continue-process' and set by `stop-process'.
+:stop BOOL -- BOOL must be nil.  The `:stop' key is ignored otherwise
+and is retained for compatibility with other process types such as
+pipe processes.  Asynchronous subprocesses never start in the
+`stopped' state.  Use `stop-process' and `continue-process' to send
+signals to stop and continue a process.
 
 :connection-type TYPE -- TYPE is control type of device used to
 communicate with subprocesses.  Values are `pipe' to use a pipe, `pty'
@@ -1746,8 +1747,10 @@ usage: (make-process &rest ARGS)  */)
 
   if (!query_on_exit)
     XPROCESS (proc)->kill_without_query = 1;
-  if (tem = Fplist_get (contact, QCstop), !NILP (tem))
-    pset_command (XPROCESS (proc), Qt);
+  tem = Fplist_get (contact, QCstop);
+  /* Normal processes can't be started in a stopped state, see
+     Bug#30460.  */
+  CHECK_TYPE (NILP (tem), Qnull, tem);
 
   tem = Fplist_get (contact, QCconnection_type);
   if (EQ (tem, Qpty))
@@ -8300,6 +8303,8 @@ returns non-`nil'.  */);
          "internal-default-interrupt-process");
   DEFSYM (Qinterrupt_process_functions, "interrupt-process-functions");
 
+  DEFSYM (Qnull, "null");
+
   defsubr (&Sprocessp);
   defsubr (&Sget_process);
   defsubr (&Sdelete_process);
index 0bb7ebe50a8b7a2f566e67bd1c8a3849bbf761be..b853f77946ddca145811cb19e63db18e77d99e6d 100644 (file)
@@ -284,5 +284,14 @@ file name handler."
 (put #'process-tests--file-handler 'operations
      '(unhandled-file-name-directory make-process))
 
+(ert-deftest make-process/stop ()
+  "Check that `make-process' doesn't accept a `:stop' key.
+See Bug#30460."
+  (should-error
+   (make-process :name "test"
+                 :command (list (expand-file-name invocation-name
+                                                  invocation-directory))
+                 :stop t)))
+
 (provide 'process-tests)
 ;; process-tests.el ends here.