diff options
| author | João Távora | 2026-01-14 09:37:06 +0000 |
|---|---|---|
| committer | João Távora | 2026-01-21 12:26:24 +0000 |
| commit | ff5bab955288d2cacb77eecbbc0ea65de50dbdbb (patch) | |
| tree | 471694f951870b250def7555971210792ca953b5 /lisp | |
| parent | 81b7e8e927dc2739aba3cd3f6a0592bf8de9685e (diff) | |
| download | emacs-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.el | 31 |
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. |
| 1960 | Unless IMMEDIATE, send pending changes before making request." | 1960 | Unless 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. |