MPLM5UH7A4SBA5O7KM42GSRKVG7MZ6H6CETAXMTDIZP4PJFLIYIAC 4NFSODHHLYE7XW5PCHGTVUXDYURCACP6VUKQRD5ARA5BHNKDBLKAC OV6FE23R76E357CRUDGHKSXYF5N3KO5NE62QL6OECX5SV3V4JCYQC BTX7AFAILMIYVRAQRXRY56RFROCWB6EZX5IUSVMEEDAGGRLJYKFQC 2O4OXP5X5V4356WU4PVWE42P3ARDSOQ2LUYJZ7BQHX2L6OQ4K7IAC CRBLAWBOTECOU5MFURWCRBR43OO7NWIHP5LC35IMGTQKN73AUS6AC LF7BWEG4DKQI7NMXMZC4LC2BE5PB42HK5PD6OYBNIDMAZBJASOKQC CZQ3NJ4NQYNXUV5GLD4RI5ISNDDWTUZIL5UA366M6WBHL6SA2EUAC LXTTOB33N2HCUZFIUDRQGGBVHK2HODRG4NBLH6RXRQZDCHF27BSAC ZS5IYZH5EXXPSVIFWS7XW5POEVRRCK6XV6PB36D3EJXJRT22LKOQC GZ2OYPSHZU3FNO5HYP53EABOLM4C3TFPB5RGTIW2CJAWT6D2QXYQC CYGNFOA5CP46F5A4JHWLLE2Y7IYTYUQ52XRYWTECTCUMT7PPL2NAC WAR3HXHTN7JZVV6TFMU2F3QYAG6NDH7DN7KKPTM2ICEHRNQYP6PAC 6RYLD5ONDIQFWU5CNL4NGHJQ2LNAZZFGTPXQJDNJGLNYAUOTUI7QC UFOVVX3ZFH3QBAGBUPNY7CO6WXC4LRD2E54YQVADK2LHKXKC7X4QC 2TCIWW6ZC73FHPZLO5QOBUFZCIL74U2MBYTPNXFYYFJ7IH4YAGUQC YFW4MNNPY452RIUIGW6NO7WAUWPBXXOKOJJBNZGU727PUBZFATSAC GJ4LBCIEKDJDYV7OFSHZZY4R62CR7LWOPWHGDY3P5DCT6FYXNRHQC 6XCJX4DZB6UEAXEXXUGVVPBCF5SNDYOJGU3Q6BPB4ZMI5DZH4MYQC ZLJGZYQGQ2S4UFWTVF4PQDSGMP6A4IS4GDHCMBAAA5SK2N2NWR3QC RMKMPFT5L67WIFWIO4GTC6XESX6UPKNL4GPNQLOBC5CXSUZABEHQC 7RKFA3VAGK73SLC3NCOKHVMOWLTC4EUQYS47P3LVVKDVLBVGBEHAC Y4SPXCM3PKARGUU22FNBEDRU7S6CJSNYVAA76JYH4I4EMMMKP6LQC FZBXBUFFNRE5ZJO5DLRU375HOXT2B7FO35XD7BTHHUXSARVWDFLQC LLAOOMULEBXFMIGRBY6LRVEK4RXQGPNTFVWMCZNUEJZHWC7UGUEAC MSOQI3A5BC5PY2MZXZQAQ4EQDT4KICQJPN3YUZVDYTWXSPZWBLIAC AMOPICKVRHMQERJLFPMAAEBV7TL5QACGGSBJWRCMV5R5O3KDVETAC P6SYWBLBN2KAYQ6VJBPYZQNCD2WQHOZGC6XOKWW4SLAMFFGH3ZYQC BW2IUB3KA4AKD35DYLCUCUM4Z32FMKGZNUBQBAEDIQJJYPA547MAC 4GYPLUDYEF4NPB3HUGSOXAMCZ3UEV5ODM35IRA4DYL5IPDVDHD3QC G2SVT3ROXEAPJRZA4TFVBAPOXV5RIBIYPQRL3VHLKTWPGXUTZFEQC BULPIBEGL7TMK6CVIE7IS7WGAHGOSUJBGJSFQK542MOWGHP2ADQQC 3ZSUBI574IYW3BKS6OFPDD6UY2IJBNOQIGA4YFGQSF4VZ3PPATYQC PLKNHYZ4KXWWKC2DHXCI4WVO23I7VMEVYT5H2J6JDE4S3D3CHDJQC R2ASHK5CEE3PTRLS37GP4PXJ7HIGJ6UD72KKBI57UDJI7VRROQGQC 2L5MEZV344TOZLVY3432RHJFIRVXFD6O3GWLL5O4CV66BGAFTURQC 3QNOKBFMKBGXBVJIRHR2444JRRMBTABHE4674NR3DT67RRM2X6GAC ORRSP7FVCHI2TF5GXBRGQYYJAA3JFYXZBM3T663BKSBV22FCZVCAC TSV3KPBRNEPLBTIHZFUCRV53VLQXNVOPCZ5L2RB7FH4RUYQJ6PZQC A3Z3S62K7DVN5F4J46A6A4FE6AMBBCGT2A44L6F34GSTM5EFOTBAC NSHI3CH54UBZRFBZG2YYXAMCPIQXJQI42TZVC2NMGECEZEPHGO7QC edit.draw(Editor_state, Text_color) -- populate line_cache.starty for each line Editor_state.line_cacheedit.draw(Editor_state) -- populate line_cache.startpos for each line
edit.draw(Editor_state, Text_color) -- populate line_cache.startpos for each line
edit.draw(Editor_state, Text_color) -- populate line_cache.starty for each line Editor_state.line_cacheedit.draw(Editor_state) -- populate line_cache.startpos for each line
edit.draw(Editor_state, Text_color) -- populate line_cache.startpos for each line
Editor_state.lines = load_array{'abc', 'defgh', 'xyz'}Text.redraw_all(Editor_state)Editor_state.cursor1 = {line=2, pos=5}Editor_state.screen_top1 = {line=2, pos=3}-- press mouse above first line of textedit.draw(Editor_state, Text_color)edit.run_after_mouse_press(Editor_state, Editor_state.left+8,5, 1)-- selection is at screen topcheck(Editor_state.selection1.line ~= nil, 'selection:line-not-nil')check_eq(Editor_state.selection1.line, 2, 'selection:line')check_eq(Editor_state.selection1.pos, 3, 'selection:pos')
Editor_state.lines = load_array{'abc', 'defgh', 'xyz'}Text.redraw_all(Editor_state)Editor_state.cursor1 = {line=2, pos=5}Editor_state.screen_top1 = {line=2, pos=3}-- press mouse above first line of textedit.draw(Editor_state, Text_color)edit.run_after_mouse_press(Editor_state, Editor_state.left+8,5, 1)-- selection is at screen topcheck(Editor_state.selection1.line ~= nil, 'selection:line-not-nil')check_eq(Editor_state.selection1.line, 2, 'selection:line')check_eq(Editor_state.selection1.pos, 3, 'selection:pos')
-- I'd like to test what happens when a mouse click is below some page of-- text, potentially even in the middle of a line.-- However, it's brittle to set up a text line boundary just right.-- So I'm going to just check things below the bottom of the final line of-- text when it's in the middle of the screen.-- final screen line ends in the middle of screenApp.screen.init{width=50, height=60}Editor_state = edit.initialize_test_state()Editor_state.lines = load_array{'abcde'}Text.redraw_all(Editor_state)Editor_state.cursor1 = {line=1, pos=1}Editor_state.screen_top1 = {line=1, pos=1}
-- I'd like to test what happens when a mouse click is below some page of-- text, potentially even in the middle of a line.-- However, it's brittle to set up a text line boundary just right.-- So I'm going to just check things below the bottom of the final line of-- text when it's in the middle of the screen.-- final screen line ends in the middle of screenApp.screen.init{width=50, height=60}Editor_state = edit.initialize_test_state()Editor_state.lines = load_array{'abcde'}Text.redraw_all(Editor_state)Editor_state.cursor1 = {line=1, pos=1}Editor_state.screen_top1 = {line=1, pos=1}
edit.draw(Editor_state, Text_color) -- populate line_cache.starty for each line Editor_state.line_cacheedit.draw(Editor_state) -- populate line_cache.startpos for each line
edit.draw(Editor_state, Text_color) -- populate line_cache.startpos for each line
edit.draw(Editor_state, Text_color) -- populate line_cache.starty for each line Editor_state.line_cacheedit.draw(Editor_state) -- populate line_cache.startpos for each line
edit.draw(Editor_state, Text_color) -- populate line_cache.startpos for each line
local stack_trace = debug.traceback('', --[[stack frame]]5) -- most likely to be useful, but set to 0 for a complete stack trace-- uncomment this line for a complete stack trace