aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
authorJoão Távora2026-01-14 09:37:06 +0000
committerJoão Távora2026-01-21 12:26:24 +0000
commitff5bab955288d2cacb77eecbbc0ea65de50dbdbb (patch)
tree471694f951870b250def7555971210792ca953b5 /lisp
parent81b7e8e927dc2739aba3cd3f6a0592bf8de9685e (diff)
downloademacs-ff5bab955288d2cacb77eecbbc0ea65de50dbdbb.tar.gz
emacs-ff5bab955288d2cacb77eecbbc0ea65de50dbdbb.zip
Eglot: advertise cancellation on eglot--request quits
* lisp/progmodes/eglot.el (eglot--request): Pass CANCEL-ON-QUIT to jsonrpc-request.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/progmodes/eglot.el31
1 files changed, 16 insertions, 15 deletions
diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el
index 6137c292534..ce32e542b8f 100644
--- a/lisp/progmodes/eglot.el
+++ b/lisp/progmodes/eglot.el
@@ -1959,21 +1959,22 @@ in project `%s'."
1959 "Like `jsonrpc-request', but for Eglot LSP requests. 1959 "Like `jsonrpc-request', but for Eglot LSP requests.
1960Unless IMMEDIATE, send pending changes before making request." 1960Unless IMMEDIATE, send pending changes before making request."
1961 (unless immediate (eglot--signal-textDocument/didChange)) 1961 (unless immediate (eglot--signal-textDocument/didChange))
1962 (condition-case oops 1962 (cl-flet ((cancel (id)
1963 (jsonrpc-request 1963 (jsonrpc-notify server '$/cancelRequest `(:id ,id))))
1964 server method params 1964 (condition-case oops
1965 :timeout timeout 1965 (jsonrpc-request server method params
1966 :cancel-on-input 1966 :timeout timeout
1967 (cond ((and cancel-on-input 1967 :cancel-on-input
1968 eglot-advertise-cancellation) 1968 (if (and cancel-on-input eglot-advertise-cancellation)
1969 (lambda (id) 1969 #'cancel
1970 (jsonrpc-notify server '$/cancelRequest `(:id ,id)))) 1970 cancel-on-input)
1971 (cancel-on-input)) 1971 :cancel-on-quit
1972 :cancel-on-input-retval cancel-on-input-retval) 1972 (and eglot-advertise-cancellation #'cancel)
1973 (jsonrpc-error 1973 :cancel-on-input-retval cancel-on-input-retval)
1974 (let* ((data (cddr oops)) (code (alist-get 'jsonrpc-error-code data))) 1974 (jsonrpc-error
1975 (if (zerop code) (eglot--message (alist-get 'jsonrpc-error-message data)) 1975 (let* ((data (cddr oops)) (ec (alist-get 'jsonrpc-error-code data)))
1976 (signal 'jsonrpc-error (cdr oops))))))) 1976 (if (zerop ec) (eglot--message (alist-get 'jsonrpc-error-message data))
1977 (signal 'jsonrpc-error (cdr oops))))))))
1977 1978
1978(defvar-local eglot--inflight-async-requests nil 1979(defvar-local eglot--inflight-async-requests nil
1979 "An plist of symbols to lists of JSONRPC ids. 1980 "An plist of symbols to lists of JSONRPC ids.