Function: eca-api-request-while-no-input
eca-api-request-while-no-input is a natively compiled function defined
in eca-api.el.
Signature
(eca-api-request-while-no-input SESSION &key METHOD PARAMS)
Documentation
Request sync the ECA server SESSION passing METHOD and PARAMS.
Waits until there is no input.
Source Code
;; Defined in /nix/store/jklqzw6pzz6j4jrbv8wy0iwgi7jlrbld-emacs-packages-deps/share/emacs/site-lisp/elpa/eca-20260928.1827/eca-api.el
(cl-defun eca-api-request-while-no-input (session &key method params)
"Request sync the ECA server SESSION passing METHOD and PARAMS.
Waits until there is no input."
(if (or non-essential (not eca-api-request-while-no-input-may-block))
(let* ((send-time (float-time))
;; max time by which we must get a response
(expected-time (and
eca-api-response-timeout
(+ send-time eca-api-response-timeout)))
resp-result resp-error)
(eca-api-request-async
session
:method method
:params params
:success-callback (lambda (res) (setf resp-result (or res :finished)) (throw 'eca-done '_))
:error-callback (lambda (err) (setf resp-error err) (throw 'eca-done '_)))
(let ((req-id eca--last-id))
(unwind-protect
(progn
(while (not (or resp-error resp-result (input-pending-p)))
(catch 'eca-done
(sit-for
(if expected-time (- expected-time send-time) 1)))
(setq send-time (float-time))
(when (and expected-time (< expected-time send-time))
(error "Timeout while waiting for response. Method: %s" method)))
(cond
((eq resp-result :finished) nil)
(resp-result resp-result)
(resp-error (error "%s" resp-error))))
;; Cleanup: remove stale handler on non-local exit
;; (input interrupt, timeout, C-g, etc.)
(unless (or resp-result resp-error)
(setf (eca--session-response-handlers session)
(plist-put (eca--session-response-handlers session)
req-id nil)))
(when (and (input-pending-p) eca-api--throw-on-input)
(throw 'input :interrupted)))))
(eca-api-request-sync session :method method :params params)))