Recently, when coding on a new Emacs (compiled from source), I stumbled upon a strange behavior of
save-excursion: it didn’t restore the mark status. I was quite sure that it should do that, but – for lack of better ideas – I
C-h f‘d it. And here is what I learned:
Before Emacs 25.1, ‘save-excursion’ used to save the mark state. To save the marker state as well as the point and buffer, use ‘save-mark-and-excursion’.
It turns out that the new
save-mark-and-excursion is a macro defined in
I’d expect a few strange behaviors of my code now unless I replace some of
save-mark-and-excursion‘s. I just counted the occurrences of
save-excursion in my files (using
M-x how-many) and it was about 70. I guess I’ll have something to do soon…
Edit: as suggested by one of the readers in private email, this is most probably not something you should worry about too much – a vast majority of uses of
save-excursion didn’t rely on it saving the mark position anyway. So please don’t panic, just remember that if your code starts to act weird, this might be a reason (which is possible, though rather unlikely).