comparison editor.luan @ 9:9d8440e0aecc

add undo
author Franklin Schmidt <fschmidt@gmail.com>
date Wed, 02 Apr 2025 17:45:24 -0600
parents ce4233ff5ce8
children a83c8842ca3b
comparison
equal deleted inserted replaced
8:ba302f81b38c 9:9d8440e0aecc
63 menu_bar.add(file_menu) 63 menu_bar.add(file_menu)
64 end 64 end
65 do 65 do
66 local edit_menu = new_menu() 66 local edit_menu = new_menu()
67 edit_menu.text = "Edit" 67 edit_menu.text = "Edit"
68 local document = window.text_area.document
69 local undo, redo
70 local function update_undo_redo()
71 undo.set_enabled(document.can_undo())
72 redo.set_enabled(document.can_redo())
73 end
74 edit_menu.update_undo_redo = update_undo_redo -- prevent gc
75 do
76 undo = new_menu_item()
77 undo.text = "Undo"
78 undo.accelerator = "meta Z"
79 undo.add_action_listener(function()
80 document.undo()
81 update_undo_redo()
82 end)
83 edit_menu.add(undo)
84 end
85 do
86 redo = new_menu_item()
87 redo.text = "Redo"
88 redo.accelerator = "meta shift Z"
89 redo.add_action_listener(function()
90 document.redo()
91 update_undo_redo()
92 end)
93 edit_menu.add(redo)
94 end
95 update_undo_redo()
96 document.add_undoable_edit_listener(update_undo_redo)
97 edit_menu.add_separator()
68 do 98 do
69 local cut = new_menu_item() 99 local cut = new_menu_item()
70 cut.text = "Cut" 100 cut.text = "Cut"
71 cut.accelerator = "meta X" 101 cut.accelerator = "meta X"
72 cut.add_action_listener(window.text_area.cut) 102 cut.add_action_listener(window.text_area.cut)