]> git.eshelyaron.com Git - emacs.git/commitdiff
Jsonrpc: prevent while-no-input messing with jsonrpc-request
authorJoão Távora <joaotavora@gmail.com>
Wed, 29 Nov 2023 00:47:09 +0000 (18:47 -0600)
committerJoão Távora <joaotavora@gmail.com>
Wed, 29 Nov 2023 00:47:09 +0000 (18:47 -0600)
'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

lisp/jsonrpc.el

index 3cba9636e02df537974d3750e46c3d0f71ce1090..849a8d8eaeec9a1ec13d2d766e47a1f6e1813eb1 100644 (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