Mercurial Hosting > editor
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) |