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

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

bug#60143: 29.0.60; command `undo-redo` don't restore cursor position


From: Stefan Monnier
Subject: bug#60143: 29.0.60; command `undo-redo` don't restore cursor position
Date: Mon, 19 Dec 2022 11:09:09 -0500
User-agent: Gnus/5.13 (Gnus v5.13)

Eli Zaretskii [2022-12-19 05:35:49] wrote:

>> From: Stefan Monnier <monnier@iro.umontreal.ca>
>> Cc: yinz Liu <liuyinz95@gmail.com>,  60143@debbugs.gnu.org
>> Date: Sun, 18 Dec 2022 20:42:31 -0500
>> 
>> > So I very much hesitate to change this.  Stefan, any comments?
>> 
>> Changing that code is likely wrong, indeed.  If the undo doesn't get
>> you where you expected, it should usually be changed by adding an
>> additional record to the undo log.
>> 
>> That "record" is a simple integer indicating the position of point at
>> that moment (citing `C-h o buffer-undo-list`):
>> 
>>     An entry of the form POSITION indicates that point was at the buffer
>>     location given by the integer.  Undoing an entry of this form places
>>     point at POSITION.
>> 
>> As for whether we should add such a record in the OP's scenario, and how
>> to do that, I haven't looked at his scenario in enough detail to have
>> much to say about it.
>
> I don't think we record position of point before deletion.

I think we do, at least sometimes:

    record_delete (ptrdiff_t beg, Lisp_Object string, bool record_markers)
    {
      [...]
      record_point (beg);


-- Stefan






reply via email to

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