[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/eglot c948713 035/139: Auto-reconnect on unexpected con
From: |
João Távora |
Subject: |
[elpa] externals/eglot c948713 035/139: Auto-reconnect on unexpected connection loss |
Date: |
Mon, 14 May 2018 09:54:49 -0400 (EDT) |
branch: externals/eglot
commit c948713b050fe209572b362799ae688d1c0629f6
Author: João Távora <address@hidden>
Commit: João Távora <address@hidden>
Auto-reconnect on unexpected connection loss
* eglot.el (eglot-reconnect): Only quit if indeed not quit
already.
(eglot-new-process): Burn the command in the bootstrap fn.
(eglot--process-sentinel): Automatically reconnect if closed
unexpectedly.
(eglot--warn): Also message to *Messages*
---
eglot.el | 23 ++++++++++++++---------
1 file changed, 14 insertions(+), 9 deletions(-)
diff --git a/eglot.el b/eglot.el
index aa23252..71dab80 100644
--- a/eglot.el
+++ b/eglot.el
@@ -162,7 +162,8 @@ Call SUCCESS-FN with no args if all goes well."
"Reconnect to PROCESS.
INTERACTIVE is t if called interactively."
(interactive (list (eglot--current-process-or-lose) t))
- (eglot-quit-server process 'sync interactive)
+ (when (process-live-p process)
+ (eglot-quit-server process 'sync interactive))
(eglot--connect (eglot--short-name process)
(eglot--bootstrap-fn process)
(lambda ()
@@ -174,7 +175,12 @@ INTERACTIVE is t if called interactively."
(interactive (list t))
(let ((project (project-current)))
(unless project (eglot--error "(new-process) Cannot work without a current
project!"))
- (let ((current-process (eglot--current-process)))
+ (let ((current-process (eglot--current-process))
+ (command (let ((probe (cdr (assoc major-mode eglot-executables))))
+ (unless probe
+ (eglot--error "Don't know how to start EGLOT for %s
buffers"
+ major-mode))
+ probe)))
(cond ((and current-process
(process-live-p current-process))
(eglot--message "(new-process) Reconnecting instead")
@@ -187,11 +193,7 @@ INTERACTIVE is t if called interactively."
(lambda (name)
(eglot-make-local-process
name
- (let ((probe (cdr (assoc major-mode eglot-executables))))
- (unless probe
- (eglot--error "Don't know how to start EGLOT for %s
buffers"
- major-mode))
- probe)))
+ command))
(lambda ()
(eglot--message "Connected")
(dolist (buffer (buffer-list))
@@ -221,8 +223,10 @@ INTERACTIVE is t if called interactively."
(eglot--message "(sentinel) Moribund process exited with status %s"
(process-exit-status process)))
(t
- (eglot--warn "(sentinel) Process unexpectedly changed to %s"
- change)))
+ (eglot--warn
+ "(sentinel) Reconnecting after process unexpectedly changed to %s."
+ change)
+ (eglot-reconnect process)))
(delete-process process)))
(defun eglot--process-filter (proc string)
@@ -633,6 +637,7 @@ running. INTERACTIVE is t if called interactively."
(defun eglot--warn (format &rest args)
"Warning message with FORMAT and ARGS."
+ (apply #'eglot--message (concat "(warning) " format) args)
(let ((warning-minimum-level :error))
(display-warning 'eglot
(apply #'format format args)
- [elpa] externals/eglot e1d36d2 014/139: Fix some byte-compilation warnings, (continued)
- [elpa] externals/eglot e1d36d2 014/139: Fix some byte-compilation warnings, João Távora, 2018/05/14
- [elpa] externals/eglot 6f6f01d 018/139: Doc fixes, João Távora, 2018/05/14
- [elpa] externals/eglot 7ec0dcf 029/139: Events buffer uses eglot-mode, source buffers use eglot-editing-mode, João Távora, 2018/05/14
- [elpa] externals/eglot 22dc2f7 034/139: Ready to start fixing flymake integration, João Távora, 2018/05/14
- [elpa] externals/eglot e8f859e 031/139: Rework commands for connecting and reconnecting, João Távora, 2018/05/14
- [elpa] externals/eglot 92bf3a0 038/139: Signal textDocument/didClose, João Távora, 2018/05/14
- [elpa] externals/eglot b511b7d 036/139: Redesign and simplify parser, João Távora, 2018/05/14
- [elpa] externals/eglot 328c7ae 025/139: Auto update mode-line after setting some process properties, João Távora, 2018/05/14
- [elpa] externals/eglot 2b61a3b 048/139: Delete two useless forward declarations, João Távora, 2018/05/14
- [elpa] externals/eglot 88e3655 040/139: Appease checkdoc.el, João Távora, 2018/05/14
- [elpa] externals/eglot c948713 035/139: Auto-reconnect on unexpected connection loss,
João Távora <=
- [elpa] externals/eglot 1dc2a9f 021/139: Implement spinners and RLS's window/progress, João Távora, 2018/05/14
- [elpa] externals/eglot 931093e 032/139: Don't clutter UI with warnings, João Távora, 2018/05/14
- [elpa] externals/eglot 95983c9 028/139: Change status to error everytime an error is found, João Távora, 2018/05/14
- [elpa] externals/eglot be52e1e 037/139: Rework connection restarting again, João Távora, 2018/05/14
- [elpa] externals/eglot d2eca65 045/139: Fix another Flymake sync bug, João Távora, 2018/05/14
- [elpa] externals/eglot f7f77e1 044/139: Make M-x eglot the main entry point, João Távora, 2018/05/14
- [elpa] externals/eglot d90efdf 001/139: Initial commit, João Távora, 2018/05/14
- [elpa] externals/eglot 1514e0f 052/139: Fix a couple of Rust-related edge cases, João Távora, 2018/05/14
- [elpa] externals/eglot b4dd4f8 022/139: Report server status in the mode-line, João Távora, 2018/05/14
- [elpa] externals/eglot 6689a15 026/139: Add eglot-clear-status interactive command, João Távora, 2018/05/14