[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/eglot 7f9784c 11/54: Merge -onoff proxy code into minor
From: |
João Távora |
Subject: |
[elpa] externals/eglot 7f9784c 11/54: Merge -onoff proxy code into minor mode function |
Date: |
Thu, 16 Apr 2020 05:31:46 -0400 (EDT) |
branch: externals/eglot
commit 7f9784c658aa5a7373af7da16ae49eb8ac0fc8aa
Author: Ingo Lohmar <address@hidden>
Commit: Ingo Lohmar <address@hidden>
Merge -onoff proxy code into minor mode function
This simplifies bookkeeping and keeping the state of locally cached
servers, their managed buffers, and the buffer-local mode consistent.
The "on" case of the -onoff code now expects that
`eglot--cached-current-server' has been set already, the "off" case uses
the same value.
* eglot.el (eglot--managed-mode-onoff): Remove.
(eglot--managed-mode): Adopt code.
(eglot--managed-mode-off): New minimal wrapper.
---
eglot.el | 56 +++++++++++++++++++++++++-------------------------------
1 file changed, 25 insertions(+), 31 deletions(-)
diff --git a/eglot.el b/eglot.el
index bce4ee0..c4b83a0 100644
--- a/eglot.el
+++ b/eglot.el
@@ -588,7 +588,7 @@ SERVER. ."
(ignore-errors (jsonrpc-request server :exit nil :timeout 1)))
;; Turn off `eglot--managed-mode' where appropriate.
(dolist (buffer (eglot--managed-buffers server))
- (eglot--with-live-buffer buffer (eglot--managed-mode-onoff server nil)))
+ (eglot--with-live-buffer buffer (eglot--managed-mode-off)))
;; Now ask jsonrpc.el to shut down the server (which under normal
;; conditions should return immediately).
(jsonrpc-shutdown server (not preserve-buffers))
@@ -598,7 +598,7 @@ SERVER. ."
"Called by jsonrpc.el when SERVER is already dead."
;; Turn off `eglot--managed-mode' where appropriate.
(dolist (buffer (eglot--managed-buffers server))
- (eglot--with-live-buffer buffer (eglot--managed-mode-onoff server nil)))
+ (eglot--with-live-buffer buffer (eglot--managed-mode-off)))
;; Kill any expensive watches
(maphash (lambda (_id watches)
(mapcar #'file-notify-rm-watch watches))
@@ -1217,7 +1217,7 @@ For example, to keep your Company customization use
(eglot--managed-mode
(add-hook 'after-change-functions 'eglot--after-change nil t)
(add-hook 'before-change-functions 'eglot--before-change nil t)
- (add-hook 'kill-buffer-hook 'eglot--managed-mode-onoff nil t)
+ (add-hook 'kill-buffer-hook #'eglot--managed-mode-off nil t)
;; Prepend "didClose" to the hook after the "onoff", so it will run first
(add-hook 'kill-buffer-hook 'eglot--signal-textDocument/didClose nil t)
(add-hook 'before-revert-hook 'eglot--signal-textDocument/didClose nil t)
@@ -1226,7 +1226,7 @@ For example, to keep your Company customization use
(add-hook 'after-save-hook 'eglot--signal-textDocument/didSave nil t)
(add-hook 'xref-backend-functions 'eglot-xref-backend nil t)
(add-hook 'completion-at-point-functions #'eglot-completion-at-point nil t)
- (add-hook 'change-major-mode-hook 'eglot--managed-mode-onoff nil t)
+ (add-hook 'change-major-mode-hook #'eglot--managed-mode-off nil t)
(add-hook 'post-self-insert-hook 'eglot--post-self-insert-hook nil t)
(add-hook 'pre-command-hook 'eglot--pre-command-hook nil t)
(eglot--setq-saving eldoc-documentation-function #'eglot-eldoc-function)
@@ -1236,10 +1236,12 @@ For example, to keep your Company customization use
(eglot--setq-saving company-tooltip-align-annotations t)
(eglot--setq-saving imenu-create-index-function #'eglot-imenu)
(flymake-mode 1)
- (eldoc-mode 1))
+ (eldoc-mode 1)
+ (cl-pushnew (current-buffer) (eglot--managed-buffers
eglot--cached-current-server)))
(t
(remove-hook 'after-change-functions 'eglot--after-change t)
(remove-hook 'before-change-functions 'eglot--before-change t)
+ (remove-hook 'kill-buffer-hook #'eglot--managed-mode-off t)
(remove-hook 'kill-buffer-hook 'eglot--signal-textDocument/didClose t)
(remove-hook 'before-revert-hook 'eglot--signal-textDocument/didClose t)
(remove-hook 'after-revert-hook 'eglot--after-revert-hook t)
@@ -1247,37 +1249,28 @@ For example, to keep your Company customization use
(remove-hook 'after-save-hook 'eglot--signal-textDocument/didSave t)
(remove-hook 'xref-backend-functions 'eglot-xref-backend t)
(remove-hook 'completion-at-point-functions #'eglot-completion-at-point t)
- (remove-hook 'change-major-mode-hook #'eglot--managed-mode-onoff t)
+ (remove-hook 'change-major-mode-hook #'eglot--managed-mode-off t)
(remove-hook 'post-self-insert-hook 'eglot--post-self-insert-hook t)
(remove-hook 'pre-command-hook 'eglot--pre-command-hook t)
(cl-loop for (var . saved-binding) in eglot--saved-bindings
do (set (make-local-variable var) saved-binding))
- (setq eglot--current-flymake-report-fn nil))))
+ (setq eglot--current-flymake-report-fn nil)
+ (let ((server eglot--cached-current-server))
+ (setq eglot--cached-current-server nil)
+ (when server
+ (setf (eglot--managed-buffers server)
+ (delq (current-buffer) (eglot--managed-buffers server)))
+ (when (and eglot-autoshutdown
+ (not (eglot--shutdown-requested server))
+ (not (eglot--managed-buffers server)))
+ (eglot-shutdown server)))))))
-(defvar-local eglot--cached-current-server nil
- "A cached reference to the current EGLOT server.
-Reset in `eglot--managed-mode-onoff'.")
+(defun eglot--managed-mode-off ()
+ "Turn off `eglot--managed-mode' unconditionally."
+ (eglot--managed-mode -1))
-(defun eglot--managed-mode-onoff (&optional server turn-on)
- "Proxy for function `eglot--managed-mode' with TURN-ON and SERVER."
- (let ((buf (current-buffer)))
- (cond ((and server turn-on)
- (eglot--managed-mode 1)
- (setq eglot--cached-current-server server)
- (cl-pushnew buf (eglot--managed-buffers server)))
- (t
- (eglot--managed-mode -1)
- (let ((server
- (or server
- eglot--cached-current-server)))
- (setq eglot--cached-current-server nil)
- (when server
- (setf (eglot--managed-buffers server)
- (delq buf (eglot--managed-buffers server)))
- (when (and eglot-autoshutdown
- (not (eglot--shutdown-requested server))
- (not (eglot--managed-buffers server)))
- (eglot-shutdown server))))))))
+(defvar-local eglot--cached-current-server nil
+ "A cached reference to the current EGLOT server.")
(defun eglot--current-server ()
"Find the current logical EGLOT server."
@@ -1318,7 +1311,8 @@ Please report this as a possible bug.")
(server (or (and (null server) cur) (and server (eq server cur)
cur))))
(when server
(setq eglot--unreported-diagnostics `(:just-opened . nil))
- (eglot--managed-mode-onoff server t)
+ (setq eglot--cached-current-server server)
+ (eglot--managed-mode)
(eglot--signal-textDocument/didOpen)))))
- [elpa] externals/eglot 179a56d 13/54: Only set eglot--cached-current-server by (more aggressive) caching, (continued)
- [elpa] externals/eglot 179a56d 13/54: Only set eglot--cached-current-server by (more aggressive) caching, João Távora, 2020/04/16
- [elpa] externals/eglot 146108a 15/54: Fix #342: Provide stable eglot-current-server helper, João Távora, 2020/04/16
- [elpa] externals/eglot 8c9078e 19/54: Fix #343: Let other imenu functions work if LSP server's doesn't, João Távora, 2020/04/16
- [elpa] externals/eglot 4bd8773 23/54: Fix #339: fail when eglot-find-* finds no references, João Távora, 2020/04/16
- [elpa] externals/eglot 76d8f49 10/54: Per #50: use completionItem/resolve more abundantly, João Távora, 2020/04/16
- [elpa] externals/eglot a6fa773 25/54: Resolve compilation warnings, João Távora, 2020/04/16
- [elpa] externals/eglot b2e4687 29/54: Close #376: add metals as the language server for Scala, João Távora, 2020/04/16
- [elpa] externals/eglot 097eed5 31/54: Close #382: new eglot-confirm-server-initiated-edits defcustom, João Távora, 2020/04/16
- [elpa] externals/eglot 2ab8b59 08/54: Don't run mode hooks in eglot--format-markup, João Távora, 2020/04/16
- [elpa] externals/eglot 88311a2 12/54: Simplify "maybe"-activation, dump "server" arg, João Távora, 2020/04/16
- [elpa] externals/eglot 7f9784c 11/54: Merge -onoff proxy code into minor mode function,
João Távora <=
- [elpa] externals/eglot 9eac9de 16/54: Fix #341: protect against empty-string insertText in completions, João Távora, 2020/04/16
- [elpa] externals/eglot b406818 07/54: Fix #326: support workspace/configuration, João Távora, 2020/04/16
- [elpa] externals/eglot ef34797 14/54: Fix #340: Don't choke on workspace/configuration with no scopeUri, João Távora, 2020/04/16
- [elpa] externals/eglot 27fb0c6 18/54: Support serverInfo of LSP 3.15.0, João Távora, 2020/04/16
- [elpa] externals/eglot 893a05a 20/54: Fix #330: ensure process starts in project's root, João Távora, 2020/04/16
- [elpa] externals/eglot 678feb9 21/54: * eglot.el (eglot-completion-at-point): Remove spurious unrelated change., João Távora, 2020/04/16
- [elpa] externals/eglot 53056a5 22/54: Fix #349: waste less space in completion annotations, João Távora, 2020/04/16
- [elpa] externals/eglot 02f71fd 26/54: Make Travis run company-specific tests, João Távora, 2020/04/16
- [elpa] externals/eglot a7a2b52 27/54: Fix #362: unbreak window/showMessageRequest, João Távora, 2020/04/16
- [elpa] externals/eglot add568b 28/54: Fix #357: allow non-standard keys in textDocument/publishDiagnostics., João Távora, 2020/04/16