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

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

[elpa] 1.2 d1cfc9e 008/101: Work around Emacs bugs 32237, 32278 (#53)


From: Christian Johansson
Subject: [elpa] 1.2 d1cfc9e 008/101: Work around Emacs bugs 32237, 32278 (#53)
Date: Thu, 29 Apr 2021 15:08:50 -0400 (EDT)

tag: 1.2
commit d1cfc9e63c5f5cf4f4ef017be13cfbe01b451f4c
Author: mkcms <k.michal@zoho.com>
Commit: João Távora <joaotavora@gmail.com>

    Work around Emacs bugs 32237, 32278 (#53)
    
    See:
    https://debbugs.gnu.org/cgi/bugreport.cgi?bug=32237
    https://debbugs.gnu.org/cgi/bugreport.cgi?bug=32278
    
    * eglot.el (eglot--apply-text-edits): Inhibit modification hooks and
      call them manually for the changed region.
---
 eglot.el | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/eglot.el b/eglot.el
index 695db49..1ca7b6d 100644
--- a/eglot.el
+++ b/eglot.el
@@ -1438,7 +1438,23 @@ If SKIP-SIGNATURE, don't try to send 
textDocument/signatureHelp."
                       (save-excursion
                         (save-restriction
                           (narrow-to-region beg end)
-                          (replace-buffer-contents temp)))
+
+                          ;; On emacs versions < 26.2,
+                          ;; `replace-buffer-contents' is buggy - it calls
+                          ;; change functions with invalid arguments - so we
+                          ;; manually call the change functions here.
+                          ;;
+                          ;; See emacs bugs #32237, #32278:
+                          ;; 
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=32237
+                          ;; 
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=32278
+                          (let ((inhibit-modification-hooks t)
+                                (length (- end beg)))
+                            (run-hook-with-args 'before-change-functions
+                                                beg end)
+                            (replace-buffer-contents temp)
+                            (run-hook-with-args 'after-change-functions
+                                                beg (+ beg (length newText))
+                                                length))))
                       (progress-reporter-update reporter (cl-incf done)))))))
             (mapcar (jsonrpc-lambda (&key range newText)
                       (cons newText (eglot--range-region range 'markers)))



reply via email to

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