[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: |
Eli Zaretskii |
Subject: |
bug#60143: 29.0.60; command `undo-redo` don't restore cursor position |
Date: |
Sun, 18 Dec 2022 13:03:43 +0200 |
> From: yinz Liu <liuyinz95@gmail.com>
> Date: Sat, 17 Dec 2022 09:42:28 +0800
>
> aaaa ! bbbb @ cccc #
>
> 1. when cursor at position "#", call `undo', cursor jump to "@"
>
> 2. when cursor at position "@", call `undo-redo', text "cccc" restore,
> but cursor still remain in "@", don't move to "#".
>
> my workaround fow now:
>
> in function primitive-undo :
>
> change L3624 to : `(goto-char (+ pos (length string)))`
That code is there for almost 10 years, and before that the C
implementation did the same. The way the code is written, viz.:
(goto-char pos)
(insert string)
(goto-char pos))
it is clear that the second goto-char is on purpose, since if we
delete it, we get the effect that you want; no need to goto anywhere
else, because 'insert' leaves point after the inserted text.
So I very much hesitate to change this. Stefan, any comments? do you
happen to know why we return point to before the insertion?