Left/right movements seem more challenging to get right. We should pan by pixel. What if the target column is too short? Should we also pane up? Anyways, left/right seems less useful given our column-oriented metaphor, so punt on it for now.
5PKJBN4VVCNWTWQAYWXYOHUUUUUENC6SJMFTQI3QFA2BHKS7EQ2AC F7MP5BERVKCYMWFWQ7EBOJFYY3FYWFVLYENXTWKPREGDLFRESPBAC DUQDA3U7VNWZSKRVACS6G3FTEB5VXRR7FJQU5NYZ4EFSGL3XUU5QC TZ3ZNGRMZ3DG33VVEZI74W5W5T73JYMEIYQ3SO6Y4A6FN3OUZIKQC OTIBCAUJ3KDQJLVDN3A536DLZGNRYMGJLORZVR3WLCGXGO6UGO6AC IZAQ4C7DZ3OTGUPDYVRYJPHO6HT67HL7DZLPNIPWINBHNNLK42OAC GQBUV2XOMEPMTXMPCBQWGGIUXGQDX77VTGPFIG6YT7G64ASOYHXQC GWS6ZSRN42IR33F5MKX7XQM4EREIZKPUM73EBZUFEZACDIMNUIGQC J3YDSRMTV44CILD443Y36LHYII2ZI43DFAWJZG6PERP35DEVYXRQC endfunction command.down_one_pane()if Cursor_pane.row < #Surface[Cursor_pane.col] thenCursor_pane.row = Cursor_pane.row + 1Display_settings.y = up_edge_sy(Cursor_pane.col, Cursor_pane.row) - Padding_verticalupdate_pane_bounds()endendfunction command.up_one_pane()if Cursor_pane.row > 1 thenCursor_pane.row = Cursor_pane.row - 1Display_settings.y = up_edge_sy(Cursor_pane.col, Cursor_pane.row) - Padding_verticalupdate_pane_bounds()endendfunction command.bottom_pane_of_column()if Cursor_pane.row < #Surface[Cursor_pane.col] thenCursor_pane.row = #Surface[Cursor_pane.col]Display_settings.y = up_edge_sy(Cursor_pane.col, Cursor_pane.row) - Padding_verticalupdate_pane_bounds()end