I'm getting rid of some code duplication at the cost of redundantly recomputing heights in duplicate panes.
P376DBJTKHBVGQ57PF7LQFZVUMBJPS4QKY2VKVN765FUCIPWL6QAC 7VI7WFVVS3DO7HXXEVT3PQSNIXTD25KLIMKDYEK7E4IYRQ6FKGEAC 3OMHSKUWZAJ7IRQ5HU44H6H345WZZMMKEC5NCALALKMHBEEIIBXQC SOWKJG6CUNU7ZON5XWWX7WULX5Q5BU2ZUTQ322KQYPKZVHEXMHCQC Z4KNS42NJZTQKUQZ7B5NYU2U4VOCUQCBFT2D7423MAXKF7NQ5ZJAC PH5UM6LIG4QKWG3C7GVHOXHYKDQCAWXBCGKSVSPRKBIYDQGSVGPAC OTIBCAUJ3KDQJLVDN3A536DLZGNRYMGJLORZVR3WLCGXGO6UGO6AC SYS77RM72TL7SLUQIJBN6D7DI5I6HSHCHXLPXREPADUNBBFM5TYAC EGS44RTAG7JVLLEA4KH63MBZAD4O5HNRSJQIOC6SRKHUG3G56R6QC J3ER7DFO2TXYUMJAXZUFEHQNLFDNIXSYDTE7HEFGQ2RYB3A6RFPAC F5FZLXTS63V6GG6RMKSZS3X4BPADVZY436VGVYKHALTIYUB6M65QC HEL54WE5OI5MS7VXNODYHFIWX4L4DO5CINWRKVBUV3GZ52AVX5KQC R2DITAZZJNA3QJ3QQ3Y6FB6VNFRP5UXDMNJ64SRYVXDAN5PIPWUAC BJ5X5O4ACBBJ56LRBBSTCW6IBQP4HAEOOOPNH3SKTA4F66YTOIDAC MGOQ5XAVFTWZPBG2O5ZTGSEKU6BRJKQZLDV6CM4737VD2FAEB5JQC LF7BWEG4DKQI7NMXMZC4LC2BE5PB42HK5PD6OYBNIDMAZBJASOKQC HC2KMIWE2KZFIVUBJPUYYB4ZCMEKBEQIJRPF2SJLNA6ZXGM5R2BAC O6T3TPXDUSZKH2JHNHWIMSEV3UADIHHF26IYA44X3RCRXNUXEKBQC AVQ5MC5DWNLI6LUUIPGBLGP4LKRPGWBY4THNY25OBT2FAVHC6MCAC N45SAKABARONIN3EJ3N5WOJENSDCQVE43JRI5IYXK7DVUJ34A3SAC 5HOB5Y6ZDNJ42XMHQ7YWZTUCK4DAJRPYRECDWTKFSXZWQ4ZMMSNAC OFRW3WZELPPJFDDEUVITJKYEBYHCK6HQ3QT2CCYOPSQQZSOC2EKAC UGEB2N5EVBSHMMJNDKYEHFYH2HHXEHJK3UWSXZB4BCVQR2N65OAAC JTDPO5WTXYGCACS6OGKLW4NV2XEDOVZK3UED3FAWCB242ZPGLKWAC AOVGO4PFCRRXU3JPQIVW36UPY6HAGMAH3HHA3E3J7QYZGDYA4B6QC RTG3J32S5SQX6KC74FFHSK2MAJCMISFUHANSDCIFQA7TGDGDORGAC MEBSNDGI2LWI56TYXWDQCAVNZOKJRQVVIFPNWHSIHK2A2B2QWKSAC VHWC2IGQD72ZZUIONIAEP45KPMPX2N6DXN6NU2QGBIWDUHP7INAAC 4A6GJRVUV7PVB62QCNDN7RN6NBHEDN6XPUFJXX22G2OCGNKLCTCAC 4R6FTCNUKS6IDJLNESSHZNPT5BNNZ64OEL3RBFCCZFZNP5OUSBQAC V6JHPHYNDGOBF3OKHPYJ6IQEU5PSLWNUCQBGVW4TG7TYL6OLF3QAC JQVKQLX3UAKKWRCBOMLBTQIVXRGJQDLSKXMNXFUSURJVYHY2ULPAC GQBUV2XOMEPMTXMPCBQWGGIUXGQDX77VTGPFIG6YT7G64ASOYHXQC function derive_file_height(file)local y = 0file.line_cache = {}for i=1,#file.lines dolocal line = file.lines[i]if line.mode == 'text' thenfile.line_cache[i] = {}Text.compute_fragments(file, i)Text.populate_screen_line_starting_pos(file, i)y = y + Line_height*#file.line_cache[i].screen_line_starting_posText.clear_screen_line_cache(file, i)elseif line.mode == 'drawing' then-- nothingy = y + Drawing.pixels(line.h, Display_settings.column_width) + Drawing_padding_heightelseprint(line.mode)assert(false)endendif file.links and not empty(file.links) theny = y + 5+Line_height+5 -- for crosslinksendfile.height = yend
Cache[id] = {id=id, filename=Directory..id, lines={{mode='text', data=''}}, line_cache={{}}, left=0, right=Display_settings.column_width, links={}, height=Line_height}
Cache[id] = {id=id, filename=Directory..id, lines={{mode='text', data=''}}, line_cache={{}}, left=0, right=Display_settings.column_width, links={}}