Jsonrpc: prevent while-no-input messing with jsonrpc-request

'jsonrpc-request' already has its "interrupt on user input" mechanism
base on 'sit-for'.  If called from a situation that uses
while-no-input to do basically the same, that mechanism may become
confused, so it's important to prevent that interfence.

This was confirmed to be a problem when using the Corfu completion
front-end.

See also
https://github.com/joaotavora/eglot/discussions/1127#discussioncomment-7277567

Many thanks to JD Smith <jdtsmith@gmail.com> for helping me debug this
and pointing in the right direction.

* lisp/jsonrpc.el (Version): Bump to 1.0.18
(jsonrpc-request): Bind throw-on-input to nil
This commit is contained in:
João Távora 2023-11-28 18:47:09 -06:00
parent 02d88e36e9
commit 5a0250f766

View file

@ -4,7 +4,7 @@
;; Author: João Távora <joaotavora@gmail.com>
;; Keywords: processes, languages, extensions
;; Version: 1.0.17
;; Version: 1.0.18
;; Package-Requires: ((emacs "25.2"))
;; This is a GNU ELPA :core package. Avoid functionality that is not
@ -288,6 +288,7 @@ CANCEL-ON-INPUT-RETVAL. Any future replies (normal or error) are
ignored."
(let* ((tag (cl-gensym "jsonrpc-request-catch-tag")) id-and-timer
canceled
(throw-on-input nil)
(retval
(unwind-protect
(catch tag