emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/eglot 06e6dd6693 2/2: Fix #704: Prefer documentChanges


From: ELPA Syncer
Subject: [elpa] externals/eglot 06e6dd6693 2/2: Fix #704: Prefer documentChanges to changes in server-initiated edits
Date: Fri, 9 Sep 2022 17:57:37 -0400 (EDT)

branch: externals/eglot
commit 06e6dd6693123a737fb883dcf277432d63d6518e
Author: Theodor Thornhill <theo@thornhill.no>
Commit: GitHub <noreply@github.com>

    Fix #704: Prefer documentChanges to changes in server-initiated edits
    
    Some servers return both.
    
    PR: #949
    
    * eglot.el (eglot--apply-workspace-edit): When both documentChanges
    and changes are present, prefer the documentChanges.  By doing that we
    ensure that we don't double edit, rendering the document in an
    unusable state.
---
 eglot.el | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/eglot.el b/eglot.el
index 80f0b65470..e399b29f09 100644
--- a/eglot.el
+++ b/eglot.el
@@ -3016,8 +3016,12 @@ Returns a list as described in docstring of 
`imenu--index-alist'."
                          textDocument
                        (list (eglot--uri-to-path uri) edits version)))
                    documentChanges)))
-      (cl-loop for (uri edits) on changes by #'cddr
-               do (push (list (eglot--uri-to-path uri) edits) prepared))
+      (unless (and changes documentChanges)
+        ;; We don't want double edits, and some servers send both
+        ;; changes and documentChanges.  This unless ensures that we
+        ;; prefer documentChanges over changes.
+        (cl-loop for (uri edits) on changes by #'cddr
+                 do (push (list (eglot--uri-to-path uri) edits) prepared)))
       (if (or confirm
               (cl-notevery #'find-buffer-visiting
                            (mapcar #'car prepared)))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]