If you work with a text editor like Microsoft Visual Studio (maybe also Eclipse, don&#39;t know), each text editor has its own undo/redo history.<div><br></div><div>However, when you perform refactoring - like renaming a function - this becomes an undo/redo on multiple files together, so in a sense these changes are part of a global history.</div>
<div><br></div><div>You can combine these two different kinds of mutations, and undo/redo still works as expected.</div><div><br></div><div>I don&#39;t know how hard this is to implement, but it looks like this problem is somehow is related to Darcs theory of patches (which I don&#39;t know yet :-)</div>
<div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><div><div><br><div><div><br></div></div></div></div></div>