]> git.eshelyaron.com Git - emacs.git/commitdiff
Add a new variable 'process-error-pause-time'
authorLars Ingebrigtsen <larsi@gnus.org>
Thu, 2 Dec 2021 11:53:59 +0000 (12:53 +0100)
committerLars Ingebrigtsen <larsi@gnus.org>
Thu, 2 Dec 2021 12:21:53 +0000 (13:21 +0100)
* doc/lispref/processes.texi (Asynchronous Processes): Document it.
* lisp/cus-start.el (standard): Customize.

* src/process.c (read_process_output_error_handler)
(exec_sentinel_error_handler): Use it.
(syms_of_process): New variable process-error-pause-time (bug#19457).

doc/lispref/processes.texi
etc/NEWS
lisp/cus-start.el
src/process.c

index 8a9cb2a8f88ade56a9cf9b31476802ee471d4f9e..ac5d4d16277403498e36faa31be3aef0279735c3 100644 (file)
@@ -966,6 +966,15 @@ use the function @code{process-tty-name} (@pxref{Process
 Information}).
 @end defvar
 
+@defvar process-error-pause-time
+If a process sentinel/filter function has an error, Emacs will (by
+default) pause Emacs for @code{process-error-pause-time} seconds after
+displaying this error, so that users will see the error in question.
+However, this can lead to situations where Emacs becomes unresponsive
+(if there's a lot of these errors happening), so this can be disabled
+by setting @code{process-error-pause-time} to 0.
+@end defvar
+
 @node Deleting Processes
 @section Deleting Processes
 @cindex deleting processes
index d783fc019cf1d92f73f37106993683a37dbb33b1..55733c6895d49c9acc64941295240a58d7165470 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -75,6 +75,10 @@ time.
 \f
 * Changes in Emacs 29.1
 
+** New user option 'process-error-pause-time'.
+This determines how long to pause Emacs after a process
+filter/sentinel error has been handled.
+
 +++
 ** New face 'variable-pitch-text'.
 This face is like 'variable-pitch' (from which it inherits), but is
index 53cad99692c68bed9d7b38538599d4758b32e472..579beae123fe5112736fe6de45eac6266eababc5 100644 (file)
@@ -575,6 +575,7 @@ Leaving \"Default\" unchecked is equivalent with specifying a default of
              (ns-scroll-event-delta-factor ns float "29.1")
             ;; process.c
             (delete-exited-processes processes-basics boolean)
+             (process-error-pause-time processes-basics integer "29.1")
             ;; syntax.c
             (parse-sexp-ignore-comments editing-basics boolean)
             (words-include-escapes editing-basics boolean)
index 241ffe9a8ddf79299a48641feaaff4417fbfc30c..483da4d7e4f39996fc886197466c7bdf5f8d9ba1 100644 (file)
@@ -5994,7 +5994,8 @@ read_process_output_error_handler (Lisp_Object error_val)
   cmd_error_internal (error_val, "error in process filter: ");
   Vinhibit_quit = Qt;
   update_echo_area ();
-  Fsleep_for (make_fixnum (2), Qnil);
+  if (process_error_pause_time > 0)
+    Fsleep_for (make_fixnum (process_error_pause_time), Qnil);
   return Qt;
 }
 
@@ -7421,7 +7422,8 @@ exec_sentinel_error_handler (Lisp_Object error_val)
   cmd_error_internal (error_val, "error in process sentinel: ");
   Vinhibit_quit = Qt;
   update_echo_area ();
-  Fsleep_for (make_fixnum (2), Qnil);
+  if (process_error_pause_time > 0)
+    Fsleep_for (make_fixnum (process_error_pause_time), Qnil);
   return Qt;
 }
 
@@ -8577,6 +8579,12 @@ Enlarge the value only if the subprocess generates very large (megabytes)
 amounts of data in one go.  */);
   read_process_output_max = 4096;
 
+  DEFVAR_INT ("process-error-pause-time", process_error_pause_time,
+             doc: /* The number of seconds to pause after handling process errors.
+This isn't used for all process-related errors, but is used when a
+sentinel or a process filter function has an error.  */);
+  process_error_pause_time = 1;
+
   DEFSYM (Qinternal_default_interrupt_process,
          "internal-default-interrupt-process");
   DEFSYM (Qinterrupt_process_functions, "interrupt-process-functions");