[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/elpa c417eb4 009/139: Cancel timeouts when process dies
From: |
João Távora |
Subject: |
[elpa] externals/elpa c417eb4 009/139: Cancel timeouts when process dies unexpectedly |
Date: |
Mon, 14 May 2018 09:53:25 -0400 (EDT) |
branch: externals/elpa
commit c417eb4343ff76c18d323dd2a9861526940551f0
Author: João Távora <address@hidden>
Commit: João Távora <address@hidden>
Cancel timeouts when process dies unexpectedly
---
eglot.el | 53 ++++++++++++++++++++++++++++++++---------------------
1 file changed, 32 insertions(+), 21 deletions(-)
diff --git a/eglot.el b/eglot.el
index e3b288b..5699775 100644
--- a/eglot.el
+++ b/eglot.el
@@ -153,9 +153,16 @@
(with-current-buffer (process-buffer process)
(eglot--debug "Process state changed to %s" change)
(when (not (process-live-p process))
+ ;; Remember to cancel all timers
+ ;;
+ (maphash (lambda (id v)
+ (cl-destructuring-bind (_success _error timeout) v
+ (eglot--message "Cancelling timer for continuation %s" id)
+ (cancel-timer timeout)))
+ (eglot--pending-continuations process))
(cond ((process-get process 'eglot--moribund)
(eglot--message "Process exited with status %s"
- (process-exit-status process)))
+ (process-exit-status process)))
(t
(eglot--warn "Process unexpectedly changed to %s" change))))))
@@ -319,26 +326,30 @@
:method ,method
:params ,params))
(catch catch-tag
- (puthash id
- (list (if async-p
- success-fn
- (lambda (&rest args)
- (throw catch-tag (apply success-fn args))))
- (if async-p
- error-fn
- (lambda (&rest args)
- (throw catch-tag (apply error-fn args))))
- (run-with-timer 5 nil
- (if async-p
- timeout-fn
- (lambda ()
- (throw catch-tag (apply
timeout-fn))))))
- (eglot--pending-continuations process))
- (unless async-p
- (while t
- (unless (eq (process-status process) 'open)
- (eglot--error "Process %s died unexpectedly" process))
- (accept-process-output nil 0.01))))))
+ (let ((timeout-timer
+ (run-with-timer 5 nil
+ (if async-p
+ timeout-fn
+ (lambda ()
+ (throw catch-tag (apply timeout-fn)))))))
+ (puthash id
+ (list (if async-p
+ success-fn
+ (lambda (&rest args)
+ (throw catch-tag (apply success-fn args))))
+ (if async-p
+ error-fn
+ (lambda (&rest args)
+ (throw catch-tag (apply error-fn args))))
+ timeout-timer)
+ (eglot--pending-continuations process))
+ (unless async-p
+ (unwind-protect
+ (while t
+ (unless (process-live-p process)
+ (eglot--error "Process %s died unexpectedly" process))
+ (accept-process-output nil 0.01))
+ (cancel-timer timeout-timer)))))))
;;; Requests
- [elpa] externals/elpa ff5a03d 074/139: Very basic xref support, (continued)
- [elpa] externals/elpa ff5a03d 074/139: Very basic xref support, João Távora, 2018/05/14
- [elpa] externals/elpa b1554fc 055/139: * eglot.el (eglot--process-receive): Skip null method notifs., João Távora, 2018/05/14
- [elpa] externals/elpa 9882bf2 072/139: Cleanup mistake with TextDocumentItem and TextDocumentIdentifier, João Távora, 2018/05/14
- [elpa] externals/elpa fc6879f 084/139: Explain why didOpen on after-revert-hook is a bad idea, João Távora, 2018/05/14
- [elpa] externals/elpa fdb4de1 039/139: Simplify flymake integration, João Távora, 2018/05/14
- [elpa] externals/elpa 39e8b9e 081/139: Add (dummy) tests and Travis CI integration, João Távora, 2018/05/14
- [elpa] externals/elpa 1356844 097/139: Fix odd bugs, João Távora, 2018/05/14
- [elpa] externals/elpa 889ef20 085/139: Tweak the async request engine., João Távora, 2018/05/14
- [elpa] externals/elpa 1add335 078/139: Workaround two suspected Emacs bugs, João Távora, 2018/05/14
- [elpa] externals/elpa 9d404c9 054/139: Update README.md, João Távora, 2018/05/14
- [elpa] externals/elpa c417eb4 009/139: Cancel timeouts when process dies unexpectedly,
João Távora <=
- [elpa] externals/elpa 6689a15 026/139: Add eglot-clear-status interactive command, João Távora, 2018/05/14
- [elpa] externals/elpa 63f2208 030/139: Less obstrusive flymake stuff for now, João Távora, 2018/05/14
- [elpa] externals/elpa 3403f86 027/139: Correctly report what we currently are capable of, João Távora, 2018/05/14
- [elpa] externals/elpa 92bf3a0 038/139: Signal textDocument/didClose, João Távora, 2018/05/14
- [elpa] externals/elpa 7ec0dcf 029/139: Events buffer uses eglot-mode, source buffers use eglot-editing-mode, João Távora, 2018/05/14
- [elpa] externals/elpa 17e0ca4 047/139: Fix Flymake diagnostic positions, João Távora, 2018/05/14
- [elpa] externals/elpa 0e95167 042/139: Watch for files opened under umbrella of existing process, João Távora, 2018/05/14
- [elpa] externals/elpa 9665a3e 051/139: Fix textDocument/didChange, João Távora, 2018/05/14
- [elpa] externals/elpa 1514e0f 052/139: Fix a couple of Rust-related edge cases, João Távora, 2018/05/14
- [elpa] externals/elpa d90efdf 001/139: Initial commit, João Távora, 2018/05/14