I don't think we would want to implement undo by making a snapshot, even if the data makes snapshots possible, because this would take up a lot more space than the current undo data.I don't think it would necessarily take up significantly more memory. In some cases it'll use up less memory. OTOH it might make it difficult to implement undo-elt-in-region.
Stefan