В таких языках как Javа, где существуют уже готовые компоненты(javax.swing.*) работы с текстовыми данными - добавление таких полезных и простейших операций, как "undo" и "redo" может быть выполнено довольно просто.