Being smart about the y coordinate is difficult, so they just bounce to top of column for now. That way we're guaranteed the cursor pane will be on screen.
R4O525CXK4IYQNXKIOAE6AI32AUP3MDQ3A7S5PANJKUX4RSKALAAC XD43MI5HTDBO7HD4D2KD4U3UUAOJEMDVSJXJR54ZPW2FHCFB7X5AC 6AOE67ORA4UISCORG7NRSUMCFYRVLGY3FBQHQOPZFXG3CN6JDMFQC JMUE7GSN6QDQZ6NDRB55MRJMKJN6LBD6MVQPKROYPDOIXM7I3XNQC KKMFQDR43ZWVCDRHQLWWX3FCWCFA3ZSXYOBRJNPHUQZR2XPKWULAC AUE2Y6HE5AIZVFO6EGLYNXKBDXGXJKDURTA4CFAEX6ZWRZKUCMUQC VU32RUBVDALKOIZIBYU5HFDFFBP476UZNCNFBMZERMDVSLBGGU3AC GQBUV2XOMEPMTXMPCBQWGGIUXGQDX77VTGPFIG6YT7G64ASOYHXQC 5O356ZWY6DCM3Y6VFZPYQY5AIHIN6JGZDGLXU5DL6LWTFNDDFPFQC RQ37HOBMOPOATWRTCEYIRSSGO6P63SQTGFUQM32QFJXKQI5NYDMQC T62BH5VBLTDYHIEGFPJ7PB77J4JDX3D7RRI3RALZ2PWHJXW5TW3AC D3FRDRWOY6VGMAOGR35GPX7QYBEHDT6J4JKUZCGDEFDPWXGHD3YQC QWWOAZ3P73XN74JBLI23YKM7KKRUCH55EMD7I6VPKG7B6DWZXB2QC -- imperfect commands for left/right navigation-- these can be improvedfunction command.right_one_column()if Cursor_pane.col >= #Surface thenreturnendCursor_pane.col = Cursor_pane.col + 1Cursor_pane.row = 1 -- always bounce back to top of columnDisplay_settings.y = 0local xlo = left_edge_sx(Cursor_pane.col) - Margin_left - Padding_horizontalDisplay_settings.x = math.max(xlo, Display_settings.x)local xmax = left_edge_sx(Cursor_pane.col+1) - App.screen.widthDisplay_settings.x = math.min(xmax, Display_settings.x)Display_settings.x = math.max(0, Display_settings.x)plan_draw()endfunction command.left_one_column()if Cursor_pane.col <= 1 thenreturnendCursor_pane.col = Cursor_pane.col - 1Cursor_pane.row = 1 -- always bounce back to top of columnDisplay_settings.y = 0local xlo = left_edge_sx(Cursor_pane.col) - Margin_left - Padding_horizontalDisplay_settings.x = math.min(xlo, Display_settings.x)plan_draw()end
local result = {}table.insert(result, id..' -- ')if Links[id] thenfor rel,val in pairs(Links[id]) dotable.insert(result, rel)table.insert(result, ':')if type(val) == 'table' thentable.insert(result, '[')for _,dest in ipairs(val) dotable.insert(result, dest)table.insert(result, ' ')endtable.insert(result, ']')elsetable.insert(result, val)endtable.insert(result, '|')endendreturn table.concat(result)
local result = {}table.insert(result, id..' -- ')if Links[id] thenfor rel,val in pairs(Links[id]) dotable.insert(result, rel)table.insert(result, ':')if type(val) == 'table' thentable.insert(result, '[')for _,dest in ipairs(val) dotable.insert(result, dest)table.insert(result, ' ')endtable.insert(result, ']')elsetable.insert(result, val)endtable.insert(result, '|')endendreturn table.concat(result)