I was reading the latest edition of Alan Cooper's book on Interaction Design. While I tend to disagree with many of the solutions proposed in the book, he and his coauthors do a fantastic job of highlighting some of the major limitations of current interaction design in operating systems, software apps, and web sites.
My thoughts today are his ideas on the limitations of undo. How many times has the undo function failed to do what you wanted it to do? One of the problems is the LIFO and stack design. In order to undo a past action, you have to undo everything that happened since. And if you do, you can't redo them if you make any changes. What if the system stored the past actions in an independent list that could be independently applied? Perhaps it maintained a clipboard-like buffer where the user could see text (in the case of Word) that had previously been deleted and access it however he/she wants?
Or perhaps the user actions can be stored along with the file. So when you save or close a file, they are not lost. The user could reopen the file and still undo. As Cooper wisely notes - the extra storage required to do this would not be a significant constraint given the large hard drives we all have now.
Another idea they propose is to have different categories of undo. Currently, one can undo text edits, but not document formats. Why not have separate lists so that users can choose to undo recent text changes, formatting changes, or other types of user actions?
I recommend the book. Just this chapter alone highlights many ideas for improving the design of common office productivity suites. I hope the folks at Microsoft read it too.