[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/elpa b69302c 060/139: Make M-x eglot's interactive spec
From: |
João Távora |
Subject: |
[elpa] externals/elpa b69302c 060/139: Make M-x eglot's interactive spec a separate function |
Date: |
Mon, 14 May 2018 09:53:34 -0400 (EDT) |
branch: externals/elpa
commit b69302c4795be8d783f853488824626a08241778
Author: João Távora <address@hidden>
Commit: João Távora <address@hidden>
Make M-x eglot's interactive spec a separate function
* eglot.el (eglot--interactive): New function.
(eglot): Rework a little.
---
eglot.el | 104 ++++++++++++++++++++++++++++++++-------------------------------
1 file changed, 53 insertions(+), 51 deletions(-)
diff --git a/eglot.el b/eglot.el
index 3d0c044..ec7f3e6 100644
--- a/eglot.el
+++ b/eglot.el
@@ -234,6 +234,39 @@ SUCCESS-FN with no args if all goes well."
(defvar eglot--command-history nil
"History of COMMAND arguments to `eglot'.")
+(defun eglot--interactive ()
+ "Helper for `eglot'."
+ (let* ((managed-major-mode
+ (cond
+ ((or current-prefix-arg
+ (not buffer-file-name))
+ (intern
+ (completing-read
+ "[eglot] Start a server to manage buffers of what major mode? "
+ (mapcar #'symbol-name
+ (eglot--all-major-modes)) nil t
+ (symbol-name major-mode) nil
+ (symbol-name major-mode) nil)))
+ (t major-mode)))
+ (guessed-command
+ (cdr (assoc managed-major-mode eglot-executables))))
+ (list
+ managed-major-mode
+ (let ((prompt
+ (cond (current-prefix-arg
+ "[eglot] Execute program (or connect to <host>:<port>) ")
+ ((null guessed-command)
+ (format "[eglot] Sorry, couldn't guess for `%s'!\n\
+Execute program (or connect to <host>:<port>) "
+ managed-major-mode)))))
+ (if prompt
+ (split-string-and-unquote
+ (read-shell-command prompt
+ (combine-and-quote-strings guessed-command)
+ 'eglot-command-history))
+ guessed-command))
+ t)))
+
(defun eglot (managed-major-mode command &optional interactive)
"Start a Language Server Protocol server.
Server is started with COMMAND and manages buffers of
@@ -251,64 +284,33 @@ With a prefix arg, prompt for MANAGED-MAJOR-MODE and
COMMAND,
else guess them from current context and `eglot-executables'.
INTERACTIVE is t if called interactively."
- (interactive
- (let* ((managed-major-mode
- (cond
- ((or current-prefix-arg
- (not buffer-file-name))
- (intern
- (completing-read
- "[eglot] Start a server to manage buffers of what major mode? "
- (mapcar #'symbol-name
- (eglot--all-major-modes)) nil t
- (symbol-name major-mode) nil
- (symbol-name major-mode) nil)))
- (t major-mode)))
- (guessed-command
- (cdr (assoc managed-major-mode eglot-executables))))
- (list
- managed-major-mode
- (let ((prompt
- (cond (current-prefix-arg
- "[eglot] Execute program (or connect to <host>:<port>) ")
- ((null guessed-command)
- (format "[eglot] Sorry, couldn't guess for `%s'!\n\
-Execute program (or connect to <host>:<port>) "
- managed-major-mode)))))
- (if prompt
- (split-string-and-unquote
- (read-shell-command prompt
- (combine-and-quote-strings guessed-command)
- 'eglot-command-history))
- guessed-command))
- t)))
+ (interactive (eglot--interactive))
(let* ((project (project-current))
(short-name (eglot--project-short-name project)))
(unless project (eglot--error "Cannot work without a current project!"))
(unless command (eglot--error "Don't know how to start EGLOT for %s
buffers"
major-mode))
(let ((current-process (eglot--current-process)))
- (cond ((and (process-live-p current-process)
- interactive
- (y-or-n-p "[eglot] Live process found, reconnect instead? "))
- (eglot-reconnect current-process interactive))
- (t
- (when (process-live-p current-process)
- (eglot-shutdown current-process 'sync))
- (eglot--connect
- project
- managed-major-mode
- short-name
- command
- (lambda (proc)
- (eglot--message "Connected! Process `%s' now managing `%s' \
+ (if (and (process-live-p current-process)
+ interactive
+ (y-or-n-p "[eglot] Live process found, reconnect instead? "))
+ (eglot-reconnect current-process interactive)
+ (when (process-live-p current-process)
+ (eglot-shutdown current-process 'sync))
+ (eglot--connect
+ project
+ managed-major-mode
+ short-name
+ command
+ (lambda (proc)
+ (eglot--message "Connected! Process `%s' now managing `%s' \
buffers in project %s."
- proc
- managed-major-mode
- short-name)
- (dolist (buffer (buffer-list))
- (with-current-buffer buffer
- (eglot--maybe-activate-editing-mode proc))))))))))
+ proc
+ managed-major-mode
+ short-name)
+ (dolist (buffer (buffer-list))
+ (with-current-buffer buffer
+ (eglot--maybe-activate-editing-mode proc)))))))))
(defun eglot-reconnect (process &optional interactive)
"Reconnect to PROCESS.
- [elpa] externals/elpa 4d4b85d 061/139: eglot-editing-mode becomes eglot--managed-mode, (continued)
- [elpa] externals/elpa 4d4b85d 061/139: eglot-editing-mode becomes eglot--managed-mode, João Távora, 2018/05/14
- [elpa] externals/elpa 4f246b5 017/139: * eglot.el (eglot-mode-map): Move up before minor mode., João Távora, 2018/05/14
- [elpa] externals/elpa a4f99e0 005/139: Introduce and use `eglot--current-process-or-lose', João Távora, 2018/05/14
- [elpa] externals/elpa 8e6488f 023/139: Don't switch to possibly dead buffer in sentinel, João Távora, 2018/05/14
- [elpa] externals/elpa be52e1e 037/139: Rework connection restarting again, João Távora, 2018/05/14
- [elpa] externals/elpa cc183a6 043/139: Fix assorted bugs, João Távora, 2018/05/14
- [elpa] externals/elpa e8f859e 031/139: Rework commands for connecting and reconnecting, João Távora, 2018/05/14
- [elpa] externals/elpa b511b7d 036/139: Redesign and simplify parser, João Távora, 2018/05/14
- [elpa] externals/elpa b4dd4f8 022/139: Report server status in the mode-line, João Távora, 2018/05/14
- [elpa] externals/elpa 46bb1c0 049/139: Reorganize file, João Távora, 2018/05/14
- [elpa] externals/elpa b69302c 060/139: Make M-x eglot's interactive spec a separate function,
João Távora <=
- [elpa] externals/elpa b657b32 068/139: Use rootUri instead of rootPath, João Távora, 2018/05/14
- [elpa] externals/elpa eebd32b 059/139: When user declines to reconnect, first quit existing server, João Távora, 2018/05/14
- [elpa] externals/elpa f1b6485 053/139: Trim some edges and add a bunch of boring RPC methods, João Távora, 2018/05/14
- [elpa] externals/elpa df5d76d 065/139: Reply to client/registerCapability (don't handle it yet), João Távora, 2018/05/14
- [elpa] externals/elpa f76f04e 057/139: More correctly keep track of didOpen/didClose per buffer, João Távora, 2018/05/14
- [elpa] externals/elpa a199c8e 070/139: Honour textDocumentSync, João Távora, 2018/05/14
- [elpa] externals/elpa 79a2a1e 069/139: Be quite explicit about our lack of capabilities right now, João Távora, 2018/05/14
- [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