]> git.eshelyaron.com Git - emacs.git/commitdiff
(eglot--managed-mode): Avoid calling track-changes unregistered
authorSean Whitton <spwhitton@spwhitton.name>
Wed, 15 May 2024 18:50:18 +0000 (14:50 -0400)
committerEshel Yaron <me@eshelyaron.com>
Thu, 16 May 2024 08:22:31 +0000 (10:22 +0200)
* lisp/progmodes/eglot.el (eglot--managed-mode): Unregister from
track-changes after `eglot-shutdown` since that function may
call `eglot--signal-textDocument/didChange`.  (bug#70927)

(cherry picked from commit c85294a6132e57bc0d24e39589b2c6163c11ca87)

lisp/progmodes/eglot.el

index 1f2e31ed0facb785959a6729fe65722b430391ee..4da18845edce910c322dedf7f8d86907ad1e906f 100644 (file)
@@ -2023,9 +2023,6 @@ Use `eglot-managed-p' to determine if current buffer is managed.")
       (eldoc-mode 1))
     (cl-pushnew (current-buffer) (eglot--managed-buffers (eglot-current-server))))
    (t
-    (when eglot--track-changes
-      (track-changes-unregister eglot--track-changes)
-      (setq eglot--track-changes nil))
     (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)
@@ -2054,7 +2051,10 @@ Use `eglot-managed-p' to determine if current buffer is managed.")
               (delq (current-buffer) (eglot--managed-buffers server)))
         (when (and eglot-autoshutdown
                    (null (eglot--managed-buffers server)))
-          (eglot-shutdown server)))))))
+          (eglot-shutdown server))))
+    (when eglot--track-changes
+      (track-changes-unregister eglot--track-changes)
+      (setq eglot--track-changes nil)))))
 
 (defun eglot--managed-mode-off ()
   "Turn off `eglot--managed-mode' unconditionally."