y_of_schema1 = function(editor, loc) local result = 0 loc = {line=loc.line, pos=Text.pos_at_start_of_screen_line(editor, loc)} if loc.line == 1 and loc.pos == 1 then return result end for i=1,loc.line-1 do Text.populate_screen_line_starting_pos(editor, i) result = result + line_height(editor, i) end Text.populate_screen_line_starting_pos(editor, loc.line) for i,screen_line_starting_pos in ipairs(editor.line_cache[loc.line].screen_line_starting_pos) do if screen_line_starting_pos >= loc.pos then break end result = result + editor.line_height end return result end