I’m an Emacs newbie (using Doom Emacs with GNU Emacs 29.1). I came from vim, and battling with undo there was crazy enough, but I won using this:
inoremap u
inoremap u
inoremap u
inoremap u
inoremap u
inoremap u
inoremap u
inoremap , ,u
inoremap . .u
inoremap ( (u
inoremap [ [u
inoremap = =u
inoremap \" \"u
inoremap u
inoremap u
Also, I had autogroup that breaks undo every 4 seconds.
Basically, this configuration breaks undo on almost every possible type command, every Spacebar, Enter, comma, bracket, moving up, down, everything. This is because I hate when undo deletes the whole screen of text.
How do I replicate this in Emacs? I read this, but it doesn’t say what is considered a “recent change”.
the paragraph here gives some useful details: https://www.gnu.org/software/emacs/manual/html_node/elisp/Undo.html#index-undo_002dauto_002damalgamate
this means emacs will group together a certain number of inserted characters into an atomic unit; it’s that unit which is undone by the
undo
command. if you want character-by-character undo then you will need to tell emacs to not perform this grouping. one thing to try would be to add advice to theinsert-char
function to set that undo boundary for you upon each keystroke; I’m sure there are other ways to do this as well.The following paragraph from what you quote has the heavy handed approach whereby no changes are amalgamated and undo would work character by character.