branch: elpa/dart-mode
commit adef2a5b672d503ae3e92b30bb80095879b030d0
Author: Natalie Weizenbaum <[email protected]>
Commit: Natalie Weizenbaum <[email protected]>
Be more resilient to server crashes
Automatically restart the server when interacting with it after it
crashes.
---
dart-mode.el | 27 ++++++++++++++++++++++-----
1 file changed, 22 insertions(+), 5 deletions(-)
diff --git a/dart-mode.el b/dart-mode.el
index 041ffa7..d32f3bd 100644
--- a/dart-mode.el
+++ b/dart-mode.el
@@ -2,7 +2,7 @@
;; Author: Natalie Weizenbaum
;; URL: https://github.com/nex3/dart-mode
-;; Version: 1.0.1
+;; Version: 1.0.2
;; Package-Requires: ((emacs "24.5") (cl-lib "0.5") (dash "2.10.0") (flycheck
"0.23") (s "1.11"))
;; Keywords: language
@@ -791,11 +791,14 @@ directory or the current file directory to the analysis
roots."
(add-to-list 'flycheck-checkers 'dart-analysis-server))
(defun dart-start-analysis-server ()
- "Start the Dart analysis server."
+ "Start the Dart analysis server.
+
+Initializes analysis server support for all `dart-mode' buffers."
(when dart--analysis-server
- (kill-process
- (dart--analysis-server-process dart--analysis-server))
+ (-let [process (dart--analysis-server-process dart--analysis-server)]
+ (when (process-live-p process) (kill-process process)))
(kill-buffer (dart--analysis-server-buffer dart--analysis-server)))
+
(let* ((process-connection-type nil)
(dart-process
(start-process "dart-analysis-server"
@@ -805,7 +808,13 @@ directory or the current file directory to the analysis
roots."
"--no-error-notification")))
(set-process-query-on-exit-flag dart-process nil)
(setq dart--analysis-server
- (dart--analysis-server-create dart-process))))
+ (dart--analysis-server-create dart-process)))
+
+ (dolist (buffer (buffer-list))
+ (with-current-buffer buffer
+ (when (eq major-mode 'dart-mode)
+ (dart--start-analysis-server-for-current-buffer)
+ (when (buffer-modified-p buffer) (dart-add-analysis-overlay))))))
(defun dart--analysis-server-create (process)
"Create a Dart analysis server from PROCESS."
@@ -918,6 +927,14 @@ The constructed request will call METHOD with optional
PARAMS."
(or callback #'dart--analysis-server-on-error-callback))
dart--analysis-server-callbacks)
+ (cond
+ ((not dart--analysis-server)
+ (message "Starting Dart analysis server.")
+ (dart-start-analysis-server))
+ ((not (process-live-p (dart--analysis-server-process
dart--analysis-server)))
+ (message "Dart analysis server crashed, restarting.")
+ (dart-start-analysis-server)))
+
(dart-info (concat "Sent: " request))
(process-send-string (dart--analysis-server-process dart--analysis-server)
(concat request "\n"))))