There's quite possibly more bugs here.
MV6W5JMDU7HP2MBMYGPAIXSF6TSZPSCFIA4MW5VXHDFRIQR4WPPAC
{"Menu_background_color":611,"Menu_border_color":612,"Definitions":503,"Menu_command_color":613,"new_definition":681,"Menu_highlight_color":614,"draw_menu_bar":641,"add_hotkey_to_menu":616,"draw_manifest_navigator":677,"num_lines_for_manifest_navigator":676,"box_height":680,"compute_layout":385,"maybe_update_key_in_definitions":529,"on.code_change":306,"get_definition_from_app":624,"vy":546,"manifest_navigator_up":628,"manifest_navigator_down":635,"line_height":365,"delete_definition":673,"move_candidate_to_front_of_manifest":632,"keychord_press_on_manifest_navigator":675,"on_handle":547,"text_input_on_manifest_navigator":634,"manifest_coord":636,"on_text":539,"manifest_index":637,"on.mouse_press":617,"manifest_navigator_candidates":638,"sy":469,"add_def_to_menu":640,"sx":544,"vx":545,"initialize_editor":678,"on.key_release":552,"schema1_of_y":667,"Manifest_navigator":495,"y_of_schema1":364,"mouse_cursor":558,"Cursor_node":172,"Mouse_cursor":559,"tick_spec":660,"set_mouse_cursor":562,"Manifest":494,"load_manifest":694,"get_manifest":706,"order_of_magnitude":573,"load_definition":682,"approximate":579,"Surface":422,"on.update":561,"on.save_settings":702,"on.load_settings":700,"add_thick_line":400,"Viewport":604,"copy_shape":396,"on":1,"Ticks_font":669,"table_and_array_both_empty":689,"draw_ticks":663,"reset_manifest_navigator":621,"update_editor_box":711,"on.mouse_release":554,"scale":712,"on.initialize":695,"font":353,"on.keychord_press":666,"A":713,"approximate_up":658,"load_from_iterator":670,"Page":475,"on.draw":565,"fw_parent":712,"B":379,"fw_app":"driver","draw_cursor":639,"on.text_input":521}
A = function(preserve_screen_top_of_cursor_node)
love.graphics.setFont(love.graphics.newFont(scale(20))) -- editor objects implicitly depend on current font
-- translate Definitions to Surface
Surface = {}
for _,node in pairs(Definitions) do
compute_layout(node, node.x,node.y, Surface, preserve_screen_top_of_cursor_node)
end
-- continue the pipeline
B(preserve_screen_top_of_cursor_node)
-- TODO: ugly that we're manipulating editor objects twice
end