I wish I had my old log setup for the source side. We'll get there.
GYAC2MUOXZZKO5CKVXRS7YZLULNRNJMEHFT3WPWKV6O3HREELIOQC schema1_of_y = function(editor, y)-- return line/pos of screen line starting near a given y offset,-- and the (negative) offset remaining after the calculation-- invariants:-- - 0 >= y_offset >= -Line_height-- - let loc, y_offset = schema1_of_y(pane, y)-- y + y_offset == y_of_schema1(pane, loc)assert(y >= 0)local y_offset = yfor i=1,#editor.lines doText.populate_screen_line_starting_pos(editor, i)local height = line_height(editor, i)if y_offset < height thenlocal line = editor.lines[i]local nlines = math.floor(y_offset/editor.line_height)assert(nlines >= 0 and nlines < #editor.line_cache[i].screen_line_starting_pos)local pos = editor.line_cache[i].screen_line_starting_pos[nlines+1] -- switch to 1-indexingy_offset = y_offset - nlines*editor.line_heightreturn {line=i, pos=pos}, -y_offsetendy_offset = y_offset - heightend-- y is below the panereturn {line=#editor.lines+1, pos=1}, y_offset -- positive valueend
{"Surface":422,"tick_spec":660,"mouse_cursor":558,"on.draw":565,"vy":546,"Viewport":604,"set_mouse_cursor":562,"draw_ticks":663,"Manifest":494,"on.mouse_release":554,"load_manifest":496,"order_of_magnitude":573,"get_manifest":497,"approximate":579,"Page":475,"get_definition_from_app":624,"Definitions":503,"update_editor_box":570,"reset_manifest_navigator":621,"approximate_up":658,"scale":7,"schema1_of_y":667,"on.update":561,"box_height":345,"compute_layout":385,"on.code_change":306,"parent":666,"initialize_editor":450,"Menu_background_color":611,"Menu_border_color":612,"Menu_command_color":613,"Menu_highlight_color":614,"draw_menu_bar":641,"add_hotkey_to_menu":616,"draw_manifest_navigator":618,"num_lines_for_manifest_navigator":619,"manifest_navigator_up":628,"manifest_navigator_down":635,"on":1,"font":353,"delete_definition":631,"draw_cursor":639,"line_height":365,"keychord_press_on_manifest_navigator":633,"Manifest_navigator":495,"text_input_on_manifest_navigator":634,"move_candidate_to_front_of_manifest":632,"maybe_update_key_in_definitions":529,"manifest_coord":636,"on_handle":547,"manifest_index":637,"A":507,"manifest_navigator_candidates":638,"on.keychord_press":666,"on_text":539,"add_def_to_menu":640,"on.text_input":521,"on.mouse_press":617,"copy_shape":396,"y_of_schema1":364,"sx":544,"on.initialize":506,"vx":545,"sy":469,"Mouse_cursor":559,"Ticks_font":594,"Cursor_node":172,"B":379,"on.key_release":552,"new_definition":504,"load_from_iterator":623,"add_thick_line":400}