[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/eglot 6874895 42/62: Close #73: Prompt for server in in
From: |
Stefan Monnier |
Subject: |
[elpa] externals/eglot 6874895 42/62: Close #73: Prompt for server in interactive eglot-shutdown |
Date: |
Sat, 29 Sep 2018 17:13:34 -0400 (EDT) |
branch: externals/eglot
commit 687489593ab1a639793327d9f060bf18f9e88ab5
Author: João Távora <address@hidden>
Commit: João Távora <address@hidden>
Close #73: Prompt for server in interactive eglot-shutdown
* eglot.el (eglot--read-server): New helper.
(eglot-shutdown): Use it.
---
eglot.el | 38 +++++++++++++++++++++++++++++++++++---
1 file changed, 35 insertions(+), 3 deletions(-)
diff --git a/eglot.el b/eglot.el
index 43334ad..88c6b45 100644
--- a/eglot.el
+++ b/eglot.el
@@ -261,12 +261,18 @@ let the buffer grow forever."
(defun eglot-shutdown (server &optional _interactive timeout preserve-buffers)
"Politely ask SERVER to quit.
+Interactively, read SERVER from the minibuffer unless there is
+only one and it's managing the current buffer.
+
Forcefully quit it if it doesn't respond within TIMEOUT seconds.
+Don't leave this function with the server still running.
+
If PRESERVE-BUFFERS is non-nil (interactively, when called with a
prefix argument), do not kill events and output buffers of
-SERVER. Don't leave this function with the server still
-running."
- (interactive (list (eglot--current-server-or-lose) t nil current-prefix-arg))
+SERVER. ."
+ (interactive (list (eglot--read-server "Shutdown which server"
+ (eglot--current-server))
+ t nil current-prefix-arg))
(eglot--message "Asking %s politely to terminate" (jsonrpc-name server))
(unwind-protect
(progn
@@ -737,6 +743,32 @@ If optional MARKERS, make markers."
(end (eglot--lsp-position-to-point (plist-get range :end) markers)))
(cons beg end)))
+(defun eglot--read-server (prompt &optional dont-if-just-the-one)
+ "Read a running Eglot server from minibuffer using PROMPT.
+If DONT-IF-JUST-THE-ONE and there's only one server, don't prompt
+and just return it. PROMPT shouldn't end with a question mark."
+ (let ((servers (cl-loop for servers
+ being hash-values of eglot--servers-by-project
+ append servers))
+ (name (lambda (srv)
+ (format "%s/%s" (eglot--project-nickname srv)
+ (eglot--major-mode srv)))))
+ (cond ((null servers)
+ (eglot--error "No servers!"))
+ ((or (cdr servers) (not dont-if-just-the-one))
+ (let* ((default (when-let ((current (eglot--current-server)))
+ (funcall name current)))
+ (read (completing-read
+ (if default
+ (format "%s (default %s)? " prompt default)
+ (concat prompt "? "))
+ (mapcar name servers)
+ nil t
+ nil nil
+ default)))
+ (cl-find read servers :key name :test #'equal)))
+ (t (car servers)))))
+
;;; Minor modes
;;;
- [elpa] externals/eglot 21886be 08/62: Close #44: Robustify in the face of manual mode changes, (continued)
- [elpa] externals/eglot 21886be 08/62: Close #44: Robustify in the face of manual mode changes, Stefan Monnier, 2018/09/29
- [elpa] externals/eglot 6b14711 18/62: * eglot.el (eglot-client-capabilities): Fix a typo., Stefan Monnier, 2018/09/29
- [elpa] externals/eglot 4c019bd 24/62: * eglot.el (eglot-initialization-options): Fix spurious typo., Stefan Monnier, 2018/09/29
- [elpa] externals/eglot a62c2da 25/62: Close #60: Notify server of recent changes before save notification, Stefan Monnier, 2018/09/29
- [elpa] externals/eglot c8191b2 32/62: Improve eglot-execute-command API to ease overriding by servers, Stefan Monnier, 2018/09/29
- [elpa] externals/eglot 991d129 34/62: * README.md (Build Status): Show status for master, Stefan Monnier, 2018/09/29
- [elpa] externals/eglot ae37c2a 35/62: Add a test for eglot-ensure. Make, Stefan Monnier, 2018/09/29
- [elpa] externals/eglot cac728a 33/62: Kill server's output and events buffers from eglot-shutdown (#66), Stefan Monnier, 2018/09/29
- [elpa] externals/eglot 9ae03af 39/62: Close #41: Control the size of the events buffer, Stefan Monnier, 2018/09/29
- [elpa] externals/eglot c25c0e3 40/62: Close #64: handle edits to same position in the correct order, Stefan Monnier, 2018/09/29
- [elpa] externals/eglot 6874895 42/62: Close #73: Prompt for server in interactive eglot-shutdown,
Stefan Monnier <=
- [elpa] externals/eglot dc26745 38/62: Update README.md, Stefan Monnier, 2018/09/29
- [elpa] externals/eglot e05360a 50/62: Actually add snippet example gif referenced in README.md, Stefan Monnier, 2018/09/29
- [elpa] externals/eglot c8cccee 52/62: Ignore extra keys in textDocument/publishDiagnostics (#81), Stefan Monnier, 2018/09/29
- [elpa] externals/eglot 6f1d64c 59/62: Close #100: Don't send other notifications before initialized, Stefan Monnier, 2018/09/29
- [elpa] externals/eglot f482c3e 60/62: Close #115: Don't block kill-buffer-hook if server somehow hangs, Stefan Monnier, 2018/09/29
- [elpa] externals/eglot 821b498 62/62: Correctly map DocumentSymbol's :kind to its name (#121), Stefan Monnier, 2018/09/29
- [elpa] externals/eglot bd6304d 57/62: Fix serious breakage introduced by #93, Stefan Monnier, 2018/09/29
- [elpa] externals/eglot 8e1a91b 31/62: Add a generic eglot-execute-command API, Stefan Monnier, 2018/09/29
- [elpa] externals/eglot d5167ea 29/62: Minor fixes to test infrastructure, Stefan Monnier, 2018/09/29
- [elpa] externals/eglot b0b16e2 37/62: Allow tests to be run with custom jsonrpc.el, Stefan Monnier, 2018/09/29