bug-gnu-emacs
[Top][All Lists]
Advanced

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

bug#64989: 29.1; Comment or uncomment lines in elisp-mode will show mess


From: Stefan Monnier
Subject: bug#64989: 29.1; Comment or uncomment lines in elisp-mode will show message in minibuffer
Date: Sat, 26 Aug 2023 11:09:21 -0400
User-agent: Gnus/5.13 (Gnus v5.13)

>> When update to the new released Emacs 29.1, I found that when comment or
>> uncomment lines in emacs-lisp-mode will show message in minibuffer as
>> below:
>> ```
>> combine-change-calls: buffer-undo-list broken
>> ```
>> Steps to reproduce:
>> 1. create a test.el file with any Elisp code. such as:
>> ```
>> (message "Test")
>> ```
>> 2. start emacs and open the test.el file with `emacs -Q ~/test.el`
>> 3. Use C-x C-; (comment-line) to comment the code in test.el
>> 4. Now you will see the message mentioned above.
>
> Thanks.
>
> Stefan, I think this is due to the commit below:

Yup.  The message is just wrong in this case: (cdr ptr) is nil simply
because `buffer-undo-list` was nil initially, not because the
`buffer-undo-list` has been shortened by the GC.

> If indeed this is the culprit, can we perhaps backport the "better
> fix" from master to the emacs-29 branch?

That would work as well.  The patch below should do the trick, tho, if
you prefer to keep changes to a minimum.


        Stefan


diff --git a/lisp/subr.el b/lisp/subr.el
index 28473f1d38c..ec30637b526 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -5002,7 +5002,7 @@ combine-change-calls-1
                        ;; Don't include a timestamp entry.
                        (setcdr ptr (cddr ptr))
                      (setq ptr (cdr ptr))))
-                 (unless (cdr ptr)
+                 (unless (or (cdr ptr) (null old-bul))
                    (message "combine-change-calls: buffer-undo-list broken"))
                  (setcdr ptr nil)
                  (push ap-elt buffer-undo-list)






reply via email to

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