[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/eat e0fa65c225 2/3: Don't let 'eat--process-input-queue' t
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/eat e0fa65c225 2/3: Don't let 'eat--process-input-queue' to recurse |
Date: |
Tue, 17 Oct 2023 04:00:16 -0400 (EDT) |
branch: elpa/eat
commit e0fa65c22592e30c0d9aa1e3578077802af385ff
Author: Akib Azmain Turja <akib@disroot.org>
Commit: Akib Azmain Turja <akib@disroot.org>
Don't let 'eat--process-input-queue' to recurse
* eat.el (eat--defer-input-processing): New variable.
* eat.el (eat-mode, eat--eshell-local-mode): Make
'eat--defer-input-processing' buffer-local.
* eat.el (eat--process-input-queue): If
'eat--defer-input-processing' is non-nil, do nothing, otherwise
bind it to non-nil while sending input.
---
eat.el | 18 ++++++++++++++----
1 file changed, 14 insertions(+), 4 deletions(-)
diff --git a/eat.el b/eat.el
index b9072bdbd1..328d909bcb 100644
--- a/eat.el
+++ b/eat.el
@@ -6572,6 +6572,7 @@ END if it's safe to do so."
isearch-push-state-function
eat--pending-input-chunks
eat--process-input-queue-timer
+ eat--defer-input-processing
eat--pending-output-chunks
eat--output-queue-first-chunk-time
eat--process-output-queue-timer
@@ -6711,6 +6712,9 @@ The input chunks are pushed, so last input appears
first.")
(defvar eat--process-input-queue-timer nil
"Timer to process input queue.")
+(defvar eat--defer-input-processing nil
+ "Non-nil meaning process input later.")
+
(defvar eat--shell-prompt-annotation-correction-timer nil
"Timer to correct shell prompt annotations.")
@@ -6755,10 +6759,15 @@ OS's."
(proc (eat-term-parameter terminal 'eat--process))
((process-live-p proc)))
(with-current-buffer buffer
- (let ((chunks (nreverse eat--pending-input-chunks)))
- (setq eat--pending-input-chunks nil)
- (dolist (str chunks)
- (eat--send-string proc str))))))
+ ;; We don't want to recurse this function.
+ (unless eat--defer-input-processing
+ (let ((inhibit-quit t) ; Don't disturb!
+ (eat--defer-input-processing t))
+ (while eat--pending-input-chunks
+ (let ((chunks (nreverse eat--pending-input-chunks)))
+ (setq eat--pending-input-chunks nil)
+ (dolist (str chunks)
+ (eat--send-string proc str)))))))))
(defun eat--process-output-queue (buffer)
"Process the output queue on BUFFER."
@@ -7541,6 +7550,7 @@ symbol `buffer', in which case the point of current
buffer is set."
eat--mouse-grabbing-type
eat--pending-input-chunks
eat--process-input-queue-timer
+ eat--defer-input-processing
eat--pending-output-chunks
eat--output-queue-first-chunk-time
eat--process-output-queue-timer