(eglot--managed-mode): Avoid calling track-changes unregistered
authorSean Whitton <spwhitton@spwhitton.name>
Wed, 15 May 2024 18:50:18 +0000 (14:50 -0400)
committerStefan Monnier <monnier@iro.umontreal.ca>
Wed, 15 May 2024 18:50:18 +0000 (14:50 -0400)
* 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)

lisp/progmodes/eglot.el

index 57a019e126df916209113e1d848415ab2e6e8b3b..0ba69f66f0d1b9881713068c8f2f1bfaf89f3f02 100644 (file)
@@ -2022,9 +2022,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)
@@ -2053,7 +2050,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."