Mercurial Hosting > editor
changeset 9:9d8440e0aecc
add undo
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Wed, 02 Apr 2025 17:45:24 -0600 |
parents | ba302f81b38c |
children | a83c8842ca3b |
files | editor.luan |
diffstat | 1 files changed, 30 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/editor.luan Mon Mar 31 22:42:44 2025 -0600 +++ b/editor.luan Wed Apr 02 17:45:24 2025 -0600 @@ -65,6 +65,36 @@ do local edit_menu = new_menu() edit_menu.text = "Edit" + local document = window.text_area.document + local undo, redo + local function update_undo_redo() + undo.set_enabled(document.can_undo()) + redo.set_enabled(document.can_redo()) + end + edit_menu.update_undo_redo = update_undo_redo -- prevent gc + do + undo = new_menu_item() + undo.text = "Undo" + undo.accelerator = "meta Z" + undo.add_action_listener(function() + document.undo() + update_undo_redo() + end) + edit_menu.add(undo) + end + do + redo = new_menu_item() + redo.text = "Redo" + redo.accelerator = "meta shift Z" + redo.add_action_listener(function() + document.redo() + update_undo_redo() + end) + edit_menu.add(redo) + end + update_undo_redo() + document.add_undoable_edit_listener(update_undo_redo) + edit_menu.add_separator() do local cut = new_menu_item() cut.text = "Cut"