[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)))