It was an educational project that I used to introduce the children (12 - 16 years) of a friend into programming. It is fairly basic. The undo stack is based on an TObjectStack< T >. You can get the source code from here: https://bitbucket.org/mathias_burbach/undo/src/master/
I tried the same in Lazarus with FreePASCAL but the generic classes ported from Delphi did not work. In Lazarus I had to implement my own TObjectStack class returning TListAction items.
One of the more funny things of the generic implementation is that TObjectStack< T >.Pop is a procedure.
Thanks - I was hoping it would be a full command pattern style undo/redo? It’s been on my todo list for a long time to implement undo/redo in FianlBuilder, but it’s a huge task and never seem to find the time.
Yes, I can understand. And we did discuss the complexity of implementing something like this for MS Excel. Steve uploaded an Excel workbook to Office 365 and we both edited it. When we tried to undo certain changes we could only do it on our own changes, not the changes made by other users. In fact I was able to clobber a change done by Steve on the same cell by asking for an undo action in MS Excel 365.
This project was really meant for a group of smart children trying to dip their toes into programming. I enjoyed preparing it and in the end all 4 of them installed Delphi Community Edition and completed the project.