Merge upstream into main
[?]
Jul 13, 2022, 6:06 AM
7CEOB56DPV2VOG6BCO4YRGTDD3KOHVPAXBAUHO22747DRBKR2ZBQCDependencies
- [2]
XHGO5TGMswitch lines to digit shortcuts as well - [3]
DR5XD5JQper-polygon icons - [4]
CTK7YUFZMerge upstream into main - [5]
7TGTAVEEMerge upstream into main - [6]
BADSSEFMMerge upstream into main - [7]
UUTYRLLEMerge upstream into main - [8]
MXA3RZYKdeduce left/right from state where possible - [9]
P5QNVXSNdrop final mention of state global beyond main.lua - [10]
AJB4LFRBtry to maintain a reasonable line width - [11]
TLOAPLBJadd a license - [12]
HOSPP2ANcrisp font rendering - [13]
2ZYV7D3Whandle tab characters - [14]
HRWN5V6JDevine's suggestion to try to live with just freehand - [15]
66X36NZNa little more prose describing manual_tests - [16]
GK47BBCYstart passing left/right margins everywhere - [17]
APYPFFS3call edit rather than App callbacks in tests - [18]
QCQTMUZ7add args to some functions - [19]
DRFE3B3Zmouse buttons are integers, not strings - [20]
3QNOKBFMbeginnings of a test harness - [21]
F63Q4OV7several bugfixes - [22]
NX3DDSCZfix a variable name - [23]
DAENUOGVeliminate assumptions that line length == size in bytes - [24]
PX7DDEMOautosave slightly less aggressively - [25]
YGCT2D2Ostart loading settings as applicable - [26]
LFMI3D7Dstop scanning from start of file on every App.draw - [27]
NFCBIEZDaffordance to adjust width for word wrap - [28]
ZPUQSPQPextract a few methods - [29]
BERHYBXMfix help for rectangles and squares - [30]
JCSLDGAHbeginnings of support for multiple shapes - [31]
IDG26SXKbugfix in commit e51ce12969 - [32]
K2X6G75Zstart writing some tests for drawings - [33]
23DEB6JLmake sure to save right when quitting - [34]
5BJCYYHNconvert videos to gif so they render inline on GitHub - [35]
MTJEVRJRadd state arg to a few functions - [36]
2ENZW7TVselect text using mouse drag - [37]
3GFQP6IRstop saving the entire file when modifying drawings - [38]
2MA33THZfew more transitions between shapes - [39]
SHEGBK4Hwhile we're at it, undo naming points - [40]
7IKRRESBlonger names for indices in long loops - [41]
AD34IX2Zcouple more tests - [42]
OLZRJ4AXexperiment: use digits to draw regular polygons - [43]
AOIRVVJArevert selection logic to before commit 3ffc2ed8f - [44]
VC2CU2GGfaster paste - [45]
2CH77LZCadd args to some functions - [46]
OTIBCAUJlove2d scaffold - [47]
OWK3U6VDtests for drawing polygons - [48]
JRLBUB6Lmore intuitive point delete from polygons - [49]
BJ5X5O4Alet's prevent the text cursor from ever getting on a drawing - [50]
SQLVYKVJrename - [51]
HYEAFRZ2split mouse_pressed events between Text and Drawing - [52]
NYQ7HD4Dmove - [53]
YKRF5V3Zstarting to load/save - [54]
HMODUNJEscroll on backspace - [55]
OGUV4HSAremove some memory leaks from rendered fragments - [56]
TVM2WIHHbugfix: autosave and undo in a couple of cases - [57]
CPZGQT72go through and fix similar issues - [58]
CIQN2MDEbugfix: typing a capital letter deletes selection - [59]
2RXZ3PGObeginning of a new approach to scroll+wrap - [60]
5DOTWNVMright margin - [61]
2LC3BM2Nsupport other whitespace chars in word movements - [62]
3QQZ7W4Ebring couple more globals back to the app level - [63]
LNUHQOGHstart passing in Editor_state explicitly - [64]
23MA4T3Gadd state arg to Drawing.keychord_pressed - [65]
LS55YKGWswitch copy/paste to ctrl- hotkeys - [66]
DHCLUDCW. - [67]
WTDKUACNrectangle and square shapes - [68]
XNFTJHC4split keyboard handling between Text and Drawing - [69]
F3OOGMMEswitch freehand hotkey to eliminate conflict with search - [70]
CRYGI3LRmore drawing tests - [71]
EQP53UQVautosave slightly less aggressively - [72]
3TTAYXPPcleanup - [73]
CZB4CK2Rbugfix - [74]
S7ZZA3YEugh, handle absolute as well as relative paths - [75]
NUCZBE77bugfix: alignment of help screen - [76]
D2GCFTTTclean up repl functionality - [77]
W7JMT5V2rip out most support for polygons - [78]
FFBIY74Nbugfix: 'escape' to cancel a stroke - [79]
4KC7I3E2make colors easier to edit - [80]
LF7BWEG4group all editor globals - [81]
QW5KQQTDfix a comment - [82]
7M7LS7I2start saving some settings to disk on quit - [83]
DWZK32YDinclude CWD when saving filename - [84]
BJ2C6F2Bignore 'name' mode in a few places - [85]
NQWWTGXRswitch undo/redo to ctrl- hotkeys - [86]
NP7PIUBTbugfix: restore state after C-f (find) - [87]
4YDBYBA4clean up memory leak experiments - [88]
GXEM6FP6typos - [89]
IWYLK45Kclicking to the right of a line within line width - [90]
WOXIYUTLbugfix: manage screen_top and cursor when resizing - [91]
2L5MEZV3experiment: new edit namespace - [92]
2JLVAYHBstart decoupling editor tests from App - [93]
PTDO2SOTadd state arg to schedule_save - [94]
2H67P75Xswitch arg for a function - [95]
VUVH2XLFMerge upstream into main - [96]
R5QXEHUIsomebody stop me - [97]
WSXSEZQ2switch circles to 'o' to avoid conflicting with copy - [98]
3OKKTUT4up and down arrow now moving by screen line where possible - [99]
K464QQR4more defensive resize handling - [100]
4VKEE43Zbugfix - [101]
CE4LZV4Tdrop last couple of manual tests - [102]
AVLAYODPmuch simpler - [103]
T4FRZSYLdelete an ancient, unused file - [104]
BYG5CEMVsupport for naming points - [105]
Z5HLXU4Padd state arg to a few functions - [106]
SRVDX4I5local var - [107]
SN2QONLIautosave on cut/paste - [108]
FS2ITYYHrecord a known issue - [109]
KVHUFUFVreorg - [110]
L6XA5EY2test: moving a point - [111]
VG75U7IMbugfix: typing should delete highlighted text - [112]
SPSW74Y5add state arg to Text.keychord_pressed - [113]
VHQCNMARseveral more modules - [114]
PNGWLAFNMerge upstream into main - [115]
JFFUF5ALoverride mouse state lookups in tests - [116]
4447N732Merge upstream into main - [117]
LXTTOB33extract a couple of files - [118]
42LVB4DEtest: naming a point - [119]
DDXXXXBRnew mode for polygons - [120]
XX7G2FFJintermingle freehand line drawings with text - [121]
P4376EXKadd state arg to few functions - [122]
YCDYGEZUinclude drawing index in a few places - [123]
6J3NXBYGaffordance to adjust width for word wrap - [124]
RF5ALVNYallow the window to be resized - [125]
NONKKVVPupdate Readme for this fork - [126]
L5USRTY2inline - [127]
NQKFQSZEundo creating new drawings - [128]
IPW5MN2QMerge upstream into main - [129]
4PHDQ5L5correct commit f3abc2cbf2 - [130]
M6TH7VSZrip out notion of Line_width - [131]
4CXVIEBSadd args to some functions - [132]
BPWFKBXTnew test: dragging and dropping a file on lines.love - [133]
6LJZN727handle chords - [134]
VJ77YABHmore efficient undo/redo - [135]
IRCKL6VNextract scrolling logic out of insert_at_cursor - [136]
GY6LTMIJmore precise shape selection - [137]
DLQAEAC7add state arg to Drawing.mouse_pressed - [138]
QXVD2RIFadd state arg to Drawing.mouse_released - [139]
4CTZOJPCstop pretending globals are local - [140]
BULPIBEGbeginnings of a module for the text editor - [141]
WDMPH4ANdrop support for squares - [142]
FYS7TCDWbugfix - [143]
6DE7RBZ6move mouse_released events to Drawing - [144]
7Q6GKOOL. - [145]
7JH2ZT3Fadd state arg to Drawing.draw - [146]
27DROQW2Merge upstream into main - [147]
KTZQ57HVreplace globals with args in a few functions - [148]
EMHRPJ3Rno, that's not right - [149]
6VQIWTQUstandardize on ordering of cases - [150]
C6QTJYA4keep online help inside of drawing - [151]
DXT4QTAHa few more integer coordinates - [152]
TVCPXAAUrename - [153]
AM42E4Y6avoid redundant writes on exit - [154]
YT5P6TO6bugfix: save previous file when dropping a new one on - [155]
6UZ2JNZEyet another key conflict - [156]
NVSWVPW5move - [157]
WIDXZBNWexperiment: extremely precise scrolling on paste - [158]
SGMDI4TCbugfix: alignment of help screen - [159]
DHI6IJCNselecting text and deleting selections - [160]
73OCE2MCafter much struggle, a brute-force undo - [161]
WDWXNW7Vslightly strange way to move points - [162]
ESETRNLBbugfix: printing the first part of a line at the bottom made it seem non-wrapping - [163]
7LVK4KRDfix a failing test - [164]
OAHNWDYG. - [165]
7M5PGWKUdrop last couple of manual tests - [166]
BATTU6HWstop blanking screen while resizing - [167]
62PZGSUCoptimization: moving cursor to next word - [168]
IHHNPJ5Qmove - [169]
V3EABA35skip multiple consecutive whitespace - [170]
RT6EV6OPdelegate update events to drawings - [171]
T7IWZFL4more precise scroll on paste - [172]
PGZJ6NATensure Filename is writable when opened outside a terminal - [173]
AVTNUQYRbasic test-enabled framework - [174]
BTKAW76Lrename - [175]
J2SVGR2Eexperiment: blinking cursor - [176]
WPW3AVFSmore precise shape selection - [177]
LAW2O3NWextract variable Margin_left - [178]
DLQMM265scroll past first page - [179]
3TDOZESEextract scrolling logic out of insert_return - [180]
V366JSXAvideos - [181]
YW2GO3U4bugfix: crash in Text.up() after return - [182]
YIQYNVD2rip out the line-width slider - [183]
QCPXQ2E3add state arg to a few functions - [184]
R3JZDBI2drop heavyweight near check on file load/store - [185]
BLWAYPKVextract a module - [186]
VXORMHMEdelete experimental REPL - [187]
OYXDYPGSget rid of debug variables - [188]
VVXVV2D2change data model; text can now have metadata - [189]
KAUD3YIKtests: deleting points/shapes - [190]
RSZD5A7Gforgot to add json.lua - [191]
65XHTZEKregression: couldn't do many drawing operations because line.y was reset - [192]
MP2TBKU6bugfix: crash in Text.up() after return - [193]
OEUU62GMMerge upstream into main - [194]
AQQQNDTLyet another bugfix in selection management - [195]
ZUOL7X6Vmove - [196]
Z4XRNDTRfind text - [197]
7XKWT5Y5correct location of the line width slider - [198]
S2MISTTMadd state arg to a few functions - [199]
GSV7DABCmake online help fit within a drawing - [200]
VIU2FBNVmake sure to save right when quitting - [201]
UHB4GARJleft/right margin -> left/right coordinates - [202]
3HVBAZPAadd state arg to a few functions - [203]
AYE2VEGJextract a couple of methods - [204]
SR7L4QPZrevert previous commit
Change contents
- file deletion: main_tests.lua main_tests.lua
Editor_state.lines = load_array{'abc', 'def'}Editor_state.filename = 'foo'schedule_save(Editor_state)-- now drag a new file bar from the filesystemApp.filesystem['bar'] = 'abc\ndef\nghi\n'local fake_dropped_file = {opened = false,getFilename = function(self)return 'bar'end,open = function(self)self.opened = trueend,lines = function(self)assert(self.opened)return App.filesystem['bar']:gmatch('[^\n]+')end,close = function(self)self.opened = falseend,}App.filedropped(fake_dropped_file)-- filesystem now contains a file called foocheck_eq(App.filesystem['foo'], 'abc\ndef\n', 'F - test_drop_file_saves_previous')check_eq(#Editor_state.lines, 3, 'F - test_drop_file/#lines')check_eq(Editor_state.lines[1].data, 'abc', 'F - test_drop_file/lines:1')check_eq(Editor_state.lines[2].data, 'def', 'F - test_drop_file/lines:2')check_eq(Editor_state.lines[3].data, 'ghi', 'F - test_drop_file/lines:3')App.screen.init{width=Editor_state.left+300, height=300}-- initially editing a file called foo that hasn't been saved to filesystem yetendfunction test_drop_file_saves_previous()io.write('\ntest_drop_file_saves_previous')Editor_state.filename = 'foo'App.screen.init{width=Editor_state.left+300, height=300}check_eq(App.screen.width, Editor_state.left+300, 'F - test_resize_window/baseline/width')App.screen.init{width=Editor_state.left+300, height=300}App.filesystem['foo'] = 'abc\ndef\nghi\n'local fake_dropped_file = {opened = false,getFilename = function(self)return 'foo'end,open = function(self)self.opened = trueend,lines = function(self)assert(self.opened)return App.filesystem['foo']:gmatch('[^\n]+')end,close = function(self)self.opened = falseend,}App.filedropped(fake_dropped_file)check_eq(App.screen.height, 300, 'F - test_resize_window/baseline/height')App.resize(200, 400)check_eq(App.screen.width, 200, 'F - test_resize_window/width')check_eq(App.screen.height, 400, 'F - test_resize_window/height')-- TODO: how to make assertions about when App.update got past the early exit?end - resurrect zombie in text_tests.lua at line 443
end - edit in text_tests.lua at line 443
check_eq(Editor_state.cursor1.pos, 15, 'F - test_click_on_wrapping_line_containing_non_ascii/cursor') -- one more than the number of UTF-8 code-points - edit in text_tests.lua at line 446
check_eq(Editor_state.cursor1.pos, 15, 'F - test_click_on_wrapping_line_containing_non_ascii/cursor') -- one more than the number of UTF-8 code-points - resolve order conflict in text_tests.lua at line 446
- edit in text_tests.lua at line 453[10.335]→[10.335:404](∅→∅),[10.335]→[10.335:404](∅→∅),[10.404]→[10.722:769](∅→∅),[10.404]→[10.722:769](∅→∅),[10.769]→[10.423:505](∅→∅),[10.423]→[10.423:505](∅→∅),[10.769]→[10.423:505](∅→∅),[10.423]→[10.423:505](∅→∅),[10.769]→[10.423:505](∅→∅),[10.505]→[10.505:518](∅→∅),[10.505]→[10.505:518](∅→∅),[10.505]→[10.505:518](∅→∅),[10.518]→[10.518:541](∅→∅),[10.451]→[10.518:541](∅→∅),[10.518]→[10.518:541](∅→∅),[10.518]→[10.518:541](∅→∅)
Lines = load_array{'the quick brown fox jumped over the lazy dog'}Margin_right = 0; Margin_width = Margin_leftCursor1 = {line=1, pos=1}Screen_top1 = {line=1, pos=1}Screen_bottom1 = {}App.draw()local y = Margin_top - resurrect zombie in text_tests.lua at line 459[10.3934]→[10.541:654](∅→∅),[10.12631]→[10.541:654](∅→∅),[10.541]→[10.541:654](∅→∅),[10.541]→[10.541:654](∅→∅),[10.541]→[10.541:654](∅→∅)
App.screen.check(y, 'the quick brown fox ', 'F - test_click_past_end_of_word_wrapping_line/baseline/screen:1') - edit in text_tests.lua at line 460
y = y + Line_height - resurrect zombie in text_tests.lua at line 460
y = y + Editor_state.line_height - resurrect zombie in text_tests.lua at line 463[10.301]→[10.803:843](∅→∅),[10.1547]→[10.803:843](∅→∅),[10.803]→[10.803:843](∅→∅),[10.301]→[10.803:843](∅→∅),[10.803]→[10.803:843](∅→∅),[10.803]→[10.803:843](∅→∅)
-- cursor moves to end of screen line - edit in text_tests.lua at line 464[10.843]→[10.843:927](∅→∅),[10.843]→[10.843:927](∅→∅),[10.843]→[10.843:927](∅→∅),[10.843]→[10.843:927](∅→∅)
check_eq(Cursor1.pos, 20, 'F - test_click_past_end_of_word_wrapping_line/cursor') - resurrect zombie in text_tests.lua at line 464
end - edit in text_tests.lua at line 464
check_eq(Editor_state.cursor1.pos, 20, 'F - test_click_past_end_of_word_wrapping_line/cursor') - edit in text_tests.lua at line 1832
check_eq(Editor_state.cursor1.pos, 20, 'F - test_click_past_end_of_word_wrapping_line/cursor') - resolve order conflict in text_tests.lua at line 1832[10.43800]
- edit in text.lua at line 170
schedule_save() - resurrect zombie in text.lua at line 170[10.113]→[10.3:28](∅→∅),[10.113]→[10.3:28](∅→∅),[10.28]→[10.1211:1313](∅→∅),[10.28]→[10.1211:1313](∅→∅)
schedule_save(State)record_undo_event(State, {before=before, after=snapshot(State, before_line, State.cursor1.line)}) - edit in text.lua at line 181
schedule_save() - resurrect zombie in text.lua at line 181[10.814]→[10.29:54](∅→∅),[10.814]→[10.29:54](∅→∅),[10.54]→[10.1370:1459](∅→∅),[10.54]→[10.1370:1459](∅→∅)
schedule_save(State)record_undo_event(State, {before=before, after=snapshot(State, State.cursor1.line)}) - edit in text.lua at line 220
schedule_save() - resurrect zombie in text.lua at line 220[10.3000]→[10.2756:2865](∅→∅),[10.3000]→[10.2756:2865](∅→∅),[10.2865]→[10.83:108](∅→∅),[10.2865]→[10.83:108](∅→∅),[10.108]→[10.1586:1675](∅→∅),[10.108]→[10.1586:1675](∅→∅)
Text.clear_cache(State.lines[State.cursor1.line])assert(Text.le1(State.screen_top1, State.cursor1))schedule_save(State)record_undo_event(State, {before=before, after=snapshot(State, State.cursor1.line)}) - edit in text.lua at line 225[10.8503]→[7.3:75](∅→∅),[10.8503]→[7.3:75](∅→∅),[7.75]→[10.89:111](∅→∅),[10.8533]→[10.89:111](∅→∅),[10.111]→[7.77:77](∅→∅)
Text.delete_selection(Margin_left, App.screen.width-Margin_right)schedule_save() - resurrect zombie in text.lua at line 225[10.3066]→[10.2942:2976](∅→∅),[10.3066]→[10.2942:2976](∅→∅),[10.2976]→[10.15732:15792](∅→∅),[10.2976]→[10.15732:15792](∅→∅),[10.339]→[10.109:136](∅→∅),[10.15792]→[10.109:136](∅→∅),[10.3060]→[10.109:136](∅→∅),[10.3060]→[10.109:136](∅→∅)
if State.selection1.line thenText.delete_selection(State, State.left, State.right)schedule_save(State) - edit in text.lua at line 447[10.2441]→[10.362:479](∅→∅),[10.2441]→[10.362:479](∅→∅),[10.479]→[10.16:16](∅→∅),[10.479]→[10.16:16](∅→∅)
local new_screen_line_starting_byte_offset = Text.offset(Lines[Cursor1.line].data, new_screen_line_starting_pos) - edit in text.lua at line 551[10.5383]→[10.669:739](∅→∅),[10.5383]→[10.669:739](∅→∅),[10.5383]→[10.669:739](∅→∅),[10.739]→[10.18:18](∅→∅),[10.739]→[10.18:18](∅→∅)
local offset = Text.offset(Lines[Cursor1.line].data, Cursor1.pos) - edit in text.lua at line 890
print(Cursor1.line, Cursor1.pos, #Lines[Cursor1.line].data, Lines[Cursor1.line].data) - edit in text.lua at line 896
function Text.previous_screen_line(pos2, left, right) - resurrect zombie in text.lua at line 896
function Text.previous_screen_line(State, pos2) - replacement in main_tests.lua at line 3
Filename = 'foo'App.screen.init{width=Margin_left+300, height=300}check_eq(App.screen.width, Margin_left+300, 'F - test_resize_window/baseline/width')Editor_state.filename = 'foo'App.screen.init{width=Editor_state.left+300, height=300}check_eq(App.screen.width, Editor_state.left+300, 'F - test_resize_window/baseline/width') - replacement in main_tests.lua at line 15
App.screen.init{width=Margin_left+300, height=300}App.screen.init{width=Editor_state.left+300, height=300} - replacement in main_tests.lua at line 34
check_eq(#Lines, 3, 'F - test_drop_file/#lines')check_eq(Lines[1].data, 'abc', 'F - test_drop_file/lines:1')check_eq(Lines[2].data, 'def', 'F - test_drop_file/lines:2')check_eq(Lines[3].data, 'ghi', 'F - test_drop_file/lines:3')check_eq(#Editor_state.lines, 3, 'F - test_drop_file/#lines')check_eq(Editor_state.lines[1].data, 'abc', 'F - test_drop_file/lines:1')check_eq(Editor_state.lines[2].data, 'def', 'F - test_drop_file/lines:2')check_eq(Editor_state.lines[3].data, 'ghi', 'F - test_drop_file/lines:3') - replacement in main_tests.lua at line 42
App.screen.init{width=Margin_left+300, height=300}App.screen.init{width=Editor_state.left+300, height=300} - replacement in main_tests.lua at line 44
Lines = load_array{'abc', 'def'}Filename = 'foo'schedule_save()Editor_state.lines = load_array{'abc', 'def'}Editor_state.filename = 'foo'schedule_save(Editor_state) - edit in main.lua at line 17[10.405]→[10.7:52](∅→∅),[10.405]→[10.7:52](∅→∅),[10.41]→[10.53:103](∅→∅),[10.41]→[10.53:103](∅→∅),[10.109]→[10.7:37](∅→∅),[10.109]→[10.7:37](∅→∅),[10.63]→[10.137:153](∅→∅),[10.63]→[10.137:153](∅→∅),[10.153]→[10.31:31](∅→∅),[10.153]→[10.31:31](∅→∅)
-- an array vertices for mode 'rectangle'-- center, p1, num_vertices for mode 'polygon'Current_drawing_submode = nilNext_save = nil - edit in main.lua at line 25
- resurrect zombie in main.lua at line 25
- edit in main.lua at line 123[10.217]→[10.1274:1343](∅→∅),[10.217]→[10.1274:1343](∅→∅),[10.217]→[10.1274:1343](∅→∅),[10.1343]→[7.83:163](∅→∅),[10.1343]→[7.83:163](∅→∅),[7.163]→[10.8:43](∅→∅),[10.1380]→[10.8:43](∅→∅),[7.163]→[10.8:43](∅→∅),[10.1380]→[10.8:43](∅→∅)
Selection1 = {} -- no support for shift drag while we're resizingText.tweak_screen_top_and_cursor(Margin_left, App.screen.height-Margin_right)Last_resize_time = App.getTime() - resurrect zombie in main.lua at line 123[10.477]→[10.6094:6126](∅→∅),[10.477]→[10.6094:6126](∅→∅),[10.6126]→[10.86117:86199](∅→∅),[10.217]→[10.86117:86199](∅→∅),[10.217]→[10.86117:86199](∅→∅),[10.86199]→[10.18284:18372](∅→∅),[10.86199]→[10.18284:18372](∅→∅)
Text.redraw_all(Editor_state)Editor_state.selection1 = {} -- no support for shift drag while we're resizingText.tweak_screen_top_and_cursor(Editor_state, Editor_state.left, Editor_state.right) - edit in main.lua at line 126
Last_resize_time = App.getTime() - edit in main.lua at line 150[10.273]→[10.273:274](∅→∅),[10.273]→[10.273:274](∅→∅),[10.274]→[7.165:165](∅→∅),[10.274]→[7.165:165](∅→∅),[7.165]→[10.658:692](∅→∅),[10.261]→[10.658:692](∅→∅),[10.261]→[10.658:692](∅→∅),[10.679]→[10.306:331](∅→∅),[10.394]→[10.306:331](∅→∅),[10.679]→[10.306:331](∅→∅),[10.394]→[10.306:331](∅→∅),[10.679]→[10.306:331](∅→∅)
love.graphics.setColor(0, 0, 0)end - edit in main.lua at line 165[10.24]→[10.3:8](∅→∅),[10.178]→[10.3:8](∅→∅),[10.444]→[10.3:8](∅→∅),[10.444]→[10.3:8](∅→∅),[10.2384]→[10.3:8](∅→∅),[10.1683]→[10.3:8](∅→∅),[10.8]→[10.445:604](∅→∅)
endfunction schedule_save()if Next_save == nil thenNext_save = App.getTime() + 3 -- short enough that you're likely to still remember what you didend - edit in main.lua at line 168[10.66]→[10.47:47](∅→∅),[10.66]→[10.47:47](∅→∅),[10.1873]→[10.8:68](∅→∅),[10.66]→[10.8:68](∅→∅),[10.47]→[10.8:68](∅→∅),[10.66]→[10.8:68](∅→∅),[10.47]→[10.8:47](∅→∅),[10.66]→[10.8:47](∅→∅),[10.66]→[10.8:47](∅→∅)
if Next_save thensave_to_disk(Lines, Filename)end-- make sure to save before quitting - resurrect zombie in main.lua at line 168
-- save some important settingslocal x,y,displayindex = love.window.getPosition() - edit in main.lua at line 168
edit.quit(Editor_state) - edit in main.lua at line 171[10.135]→[4.9:9](∅→∅),[10.135]→[4.9:9](∅→∅),[4.9]→[10.8:36](∅→∅),[10.135]→[10.8:36](∅→∅),[10.135]→[10.8:36](∅→∅)
local filename = Filename - resurrect zombie in main.lua at line 171
local filename = Editor_state.filename - resolve order conflict in main.lua at line 171
- resurrect zombie in main.lua at line 172
if filename:sub(1,1) ~= '/' thenfilename = love.filesystem.getWorkingDirectory()..'/'..filename -- '/' should work even on Windowsend - resurrect zombie in main.lua at line 175
local settings = {x=x, y=y, displayindex=displayindex,width=App.screen.width, height=App.screen.height, - edit in main.lua at line 178
font_height=Font_height, - resurrect zombie in main.lua at line 178
font_height=Editor_state.font_height, - resolve order conflict in main.lua at line 178
- edit in main.lua at line 180[10.205]→[10.140:184](∅→∅),[10.140]→[10.140:184](∅→∅),[10.205]→[10.140:184](∅→∅),[10.140]→[10.140:184](∅→∅)
screen_top=Screen_top1, cursor=Cursor1} - resurrect zombie in main.lua at line 180
love.filesystem.write('config', json.encode(settings))end - edit in main.lua at line 180
screen_top=Editor_state.screen_top1, cursor=Editor_state.cursor1} - edit in main.lua at line 185
- edit in main.lua at line 190[10.365]→[10.610:630](∅→∅),[10.365]→[10.610:630](∅→∅),[10.365]→[10.610:630](∅→∅),[10.630]→[10.51:51](∅→∅),[10.630]→[10.51:51](∅→∅)
schedule_save() - edit in main.lua at line 195
schedule_save() - edit in main.lua at line 200[10.3421]→[10.1543:1599](∅→∅),[10.3421]→[10.1543:1599](∅→∅),[10.1599]→[10.55:55](∅→∅),[10.1599]→[10.55:55](∅→∅),[10.646]→[10.717:737](∅→∅),[10.646]→[10.717:737](∅→∅),[10.737]→[10.57:57](∅→∅),[10.737]→[10.57:57](∅→∅),[10.189]→[10.738:760](∅→∅),[10.189]→[10.738:760](∅→∅),[10.760]→[10.59:59](∅→∅),[10.760]→[10.59:59](∅→∅),[10.5055]→[10.868:874](∅→∅),[10.5055]→[10.868:874](∅→∅)
local byte_offset = Text.offset(Search_term, len)schedule_save()schedule_save()end - edit in main.lua at line 208[10.331]→[7.167:167](∅→∅),[10.205]→[10.86977:87047](∅→∅),[10.205]→[10.86977:87047](∅→∅),[10.66]→[10.2385:2411](∅→∅),[10.66]→[10.2385:2411](∅→∅),[10.66]→[10.2385:2411](∅→∅)
screen_top=Editor_state.screen_top1, cursor=Editor_state.cursor1}edit.quit(Editor_state) - resolve order conflict in main.lua at line 208[10.331]
- edit in icons.lua at line 3[10.882]→[10.882:1345](∅→∅),[10.1345]→[10.64:64](∅→∅),[10.64]→[10.881:882](∅→∅),[10.5334]→[10.881:882](∅→∅)
function icon.line_width(x, y)love.graphics.setColor(0.7,0.7,0.7)love.graphics.line(x+0,y+0, x+9,y+0)love.graphics.line(x+0,y+1, x+9,y+1)love.graphics.line(x+0,y+2, x+9,y+2)love.graphics.line(x+0,y+3, x+9,y+3)love.graphics.line(x+0,y+4, x+9,y+4)love.graphics.line(x+0,y+5, x+9,y+5)love.graphics.line(x+1,y+6, x+8,y+6)love.graphics.line(x+2,y+7, x+7,y+7)love.graphics.line(x+3,y+8, x+6,y+8)love.graphics.line(x+4,y+9, x+5,y+9)end - replacement in icons.lua at line 36
if Current_drawing_submode == 3 thenif Editor_state.current_drawing_submode == 3 then - replacement in icons.lua at line 38
elseif Current_drawing_submode == 4 thenelseif Editor_state.current_drawing_submode == 4 then - replacement in icons.lua at line 40
elseif Current_drawing_submode == 5 thenelseif Editor_state.current_drawing_submode == 5 then - replacement in icons.lua at line 42
elseif Current_drawing_submode == 6 thenelseif Editor_state.current_drawing_submode == 6 then - replacement in icons.lua at line 44
elseif Current_drawing_submode == 7 thenelseif Editor_state.current_drawing_submode == 7 then - replacement in icons.lua at line 47
elseif Current_drawing_submode == 8 thenelseif Editor_state.current_drawing_submode == 8 then - replacement in icons.lua at line 49
elseif Current_drawing_submode == 9 thenelseif Editor_state.current_drawing_submode == 9 then - replacement in icons.lua at line 53
print(Current_drawing_submode)print(Editor_state.current_drawing_submode) - edit in help.lua at line 4[10.6732]→[10.11:73](∅→∅),[10.6732]→[10.11:73](∅→∅),[10.73]→[10.67:67](∅→∅),[10.73]→[10.67:67](∅→∅),[10.5014]→[10.180:296](∅→∅),[10.5014]→[10.180:296](∅→∅),[10.296]→[10.69:69](∅→∅),[10.296]→[10.69:69](∅→∅),[10.5128]→[10.297:395](∅→∅),[10.5128]→[10.297:395](∅→∅),[10.395]→[10.71:71](∅→∅),[10.395]→[10.71:71](∅→∅),[10.5445]→[10.511:614](∅→∅),[10.5445]→[10.511:614](∅→∅),[10.614]→[10.73:73](∅→∅),[10.614]→[10.73:73](∅→∅),[10.7341]→[10.615:715](∅→∅),[10.7341]→[10.615:715](∅→∅),[10.715]→[10.75:75](∅→∅),[10.715]→[10.75:75](∅→∅)
love.graphics.print("Things you can do:", Margin_left+30,y)love.graphics.print("* Hover on a point and press 'ctrl+u' to pick it up and start moving it,", Margin_left+30,y)love.graphics.print("then press the mouse button to drop it", Margin_left+30+bullet_indent(),y)love.graphics.print("* Hover on a point or shape and press 'ctrl+d' to delete it", Margin_left+30,y)love.graphics.print("* Press 'ctrl+p' to switch to drawing freehand strokes", Margin_left+30,y) - replacement in help.lua at line 5[10.18438]→[10.138:166](∅→∅),[10.138]→[10.138:166](∅→∅),[10.166]→[10.18439:18548](∅→∅),[10.18548]→[10.282:310](∅→∅),[10.282]→[10.282:310](∅→∅)
y = y + State.line_heightlove.graphics.print("* Press the mouse button to start drawing a "..current_shape(State), State.left+30,y)y = y + State.line_heighty = y + Line_heightlove.graphics.print("* Press the mouse button to start drawing a "..current_shape(), State.left+30,y)y = y + Line_height - replacement in help.lua at line 9
y = y + State.line_heighty = y + Line_height - replacement in help.lua at line 11
y = y + State.line_heighty = y + Line_height - replacement in help.lua at line 13
y = y + State.line_heighty = y + Line_height - replacement in help.lua at line 15
y = y + State.line_heightif State.current_drawing_mode ~= 'freehand' theny = y + Line_heightif Current_drawing_mode ~= 'freehand' then - replacement in help.lua at line 18
y = y + State.line_heighty = y + Line_height - replacement in help.lua at line 20[10.7506]→[10.11:100](∅→∅),[10.7506]→[10.11:100](∅→∅),[10.100]→[10.77:77](∅→∅),[10.100]→[10.77:77](∅→∅),[10.7465]→[10.1065:1112](∅→∅),[10.1112]→[10.19080:19168](∅→∅),[10.19168]→[10.1207:1237](∅→∅),[10.1207]→[10.1207:1237](∅→∅)
love.graphics.print("* Press 'ctrl+2' to switch to drawing lines", Margin_left+30,y)if State.current_drawing_mode ~= 'line' thenlove.graphics.print("* Press 'ctrl+l' to switch to drawing lines", State.left+30,y)y = y + State.line_heightif Current_drawing_mode ~= 'line' thenlove.graphics.print("* Press 'ctrl+2' to switch to drawing lines", State.left+30,y)y = y + Line_height - replacement in help.lua at line 24[10.7665]→[10.806:915](∅→∅),[10.7665]→[10.806:915](∅→∅),[10.915]→[10.79:79](∅→∅),[10.915]→[10.79:79](∅→∅),[10.7619]→[10.1238:1290](∅→∅)
love.graphics.print("* Press 'ctrl+m' to switch to drawing horizontal/vertical lines", Margin_left+30,y)if State.current_drawing_mode ~= 'manhattan' thenif Current_drawing_mode ~= 'manhattan' then - replacement in help.lua at line 26
y = y + State.line_heighty = y + Line_height - replacement in help.lua at line 28
if State.current_drawing_mode ~= 'circle' thenif Current_drawing_mode ~= 'circle' then - replacement in help.lua at line 30
y = y + State.line_heighty = y + Line_height - replacement in help.lua at line 32[10.8005]→[10.1013:1119](∅→∅),[10.8005]→[10.1013:1119](∅→∅),[10.1119]→[10.81:81](∅→∅),[10.1119]→[10.81:81](∅→∅),[10.7961]→[10.1618:1668](∅→∅),[10.1668]→[10.19374:19465](∅→∅),[10.19465]→[10.1766:1796](∅→∅),[10.1766]→[10.1766:1796](∅→∅)
love.graphics.print("* Press 'ctrl+<digit>' to switch to drawing regular polygons", Margin_left+30,y)if State.current_drawing_mode ~= 'polygon' thenlove.graphics.print("* Press 'ctrl+g' to switch to drawing polygons", State.left+30,y)y = y + State.line_heightif Current_drawing_mode ~= 'polygon' thenlove.graphics.print("* Press 'ctrl+<digit>' to switch to drawing regular polygons", State.left+30,y)y = y + Line_height - replacement in help.lua at line 36[10.474]→[10.1120:1214](∅→∅),[10.474]→[10.1120:1214](∅→∅),[10.1214]→[10.83:83](∅→∅),[10.1214]→[10.83:83](∅→∅),[10.428]→[10.1797:1849](∅→∅)
love.graphics.print("* Press 'ctrl+r' to switch to drawing rectangles", Margin_left+30,y)if State.current_drawing_mode ~= 'rectangle' thenif Current_drawing_mode ~= 'rectangle' then - replacement in help.lua at line 38
y = y + State.line_heighty = y + Line_height - edit in help.lua at line 40[10.592]→[10.1215:1327](∅→∅),[10.592]→[10.1215:1327](∅→∅),[10.1327]→[10.85:85](∅→∅),[10.1327]→[10.85:85](∅→∅),[10.592]→[10.1980:2029](∅→∅),[10.592]→[10.1980:2029](∅→∅),[10.2029]→[10.19560:19650](∅→∅),[10.2029]→[10.19560:19650](∅→∅),[10.19650]→[10.2126:2156](∅→∅),[10.2126]→[10.2126:2156](∅→∅),[10.2126]→[10.2126:2156](∅→∅)
love.graphics.print("* Press 'ctrl+=' or 'ctrl+-' to zoom in or out, ctrl+0 to reset zoom", Margin_left+30,y)if State.current_drawing_mode ~= 'square' thenlove.graphics.print("* Press 'ctrl+s' to switch to drawing squares", State.left+30,y)y = y + State.line_height - resurrect zombie in help.lua at line 40[10.8121]→[10.19651:19762](∅→∅),[10.8121]→[10.19651:19762](∅→∅),[10.2303]→[10.19763:19842](∅→∅),[10.2303]→[10.19763:19842](∅→∅)
love.graphics.print("* Press 'ctrl+=' or 'ctrl+-' to zoom in or out, ctrl+0 to reset zoom", State.left+30,y)love.graphics.print("Press 'esc' now to hide this message", State.left+30,y) - replacement in help.lua at line 41
y = y + State.line_heighty = y + Line_height - replacement in help.lua at line 43[10.19842]→[10.2389:2417](∅→∅),[10.2389]→[10.2389:2417](∅→∅),[10.2389]→[10.2389:2417](∅→∅),[10.2417]→[10.314:349](∅→∅),[10.89653]→[10.314:349](∅→∅),[10.6670]→[10.314:349](∅→∅),[10.349]→[10.336:467](∅→∅)
y = y + State.line_heightApp.color(Help_background_color)love.graphics.rectangle('fill', State.left,drawing.y, State.width, math.max(Drawing.pixels(drawing.h, State.width),y-drawing.y))y = y + Line_heightlove.graphics.setColor(0,0.5,0, 0.1)love.graphics.rectangle('fill', State.left,drawing.y, State.right, math.max(Drawing.pixels(drawing.h),y-drawing.y)) - edit in help.lua at line 51[10.8689]→[10.1528:1631](∅→∅),[10.8689]→[10.1528:1631](∅→∅),[10.1631]→[10.87:87](∅→∅),[10.1631]→[10.87:87](∅→∅),[10.6787]→[10.1632:1698](∅→∅),[10.6787]→[10.1632:1698](∅→∅),[10.1698]→[10.89:89](∅→∅),[10.1698]→[10.89:89](∅→∅),[10.8935]→[10.1699:1800](∅→∅),[10.8935]→[10.1699:1800](∅→∅),[10.1800]→[10.91:91](∅→∅),[10.1800]→[10.91:91](∅→∅),[10.9138]→[10.1801:1900](∅→∅),[10.9138]→[10.1801:1900](∅→∅),[10.1900]→[10.93:93](∅→∅),[10.1900]→[10.93:93](∅→∅)
love.graphics.print("You're currently drawing a "..current_shape(drawing.pending), Margin_left+30,y)love.graphics.print('Things you can do now:', Margin_left+30,y)love.graphics.print('* Release the mouse button to finish drawing the stroke', Margin_left+30,y)love.graphics.print('* Release the mouse button to finish drawing the line', Margin_left+30,y) - edit in help.lua at line 63
love.graphics.print("* Press 'a' to draw just an arc of a circle", Margin_left+30,y) - edit in help.lua at line 67
love.graphics.print('* Release the mouse button to finish drawing the arc', Margin_left+30,y) - edit in help.lua at line 69[10.9744]→[10.2198:2308](∅→∅),[10.9744]→[10.2198:2308](∅→∅),[10.2308]→[10.99:99](∅→∅),[10.2308]→[10.99:99](∅→∅),[10.9678]→[10.3686:3770](∅→∅),[10.9678]→[10.3686:3770](∅→∅),[10.3770]→[10.20632:20733](∅→∅),[10.3770]→[10.20632:20733](∅→∅),[10.20733]→[10.3878:3908](∅→∅),[10.3878]→[10.3878:3908](∅→∅),[10.3878]→[10.3878:3908](∅→∅),[10.3908]→[10.20734:20821](∅→∅),[10.3908]→[10.20734:20821](∅→∅),[10.20821]→[10.4002:4088](∅→∅),[10.4002]→[10.4002:4088](∅→∅),[10.4002]→[10.4002:4088](∅→∅)
love.graphics.print('* Release the mouse button to finish drawing the regular polygon', Margin_left+30,y)y = y + State.line_heightelseif State.current_drawing_mode == 'polygon' thenlove.graphics.print('* Release the mouse button to finish drawing the polygon', State.left+30,y)y = y + State.line_heightlove.graphics.print("* Press 'p' to add a vertex to the polygon", State.left+30,y)y = y + State.line_heightelseif State.current_drawing_mode == 'rectangle' then - resurrect zombie in help.lua at line 69
elseif Current_drawing_mode == 'rectangle' thenif #drawing.pending.vertices < 2 then - edit in help.lua at line 69
y = y + Line_heightelseif Current_drawing_mode == 'polygon' thenlove.graphics.print('* Release the mouse button to finish drawing the regular polygon', State.left+30,y)y = y + Line_height - replacement in help.lua at line 75
love.graphics.print("* Press 'p' to add a vertex to the rectangle", Margin_left+30,y)y = y + Line_heightlove.graphics.print("* Press 'p' to add a vertex to the rectangle", State.left+30,y)y = y + State.line_height - replacement in help.lua at line 78
love.graphics.print('* Release the mouse button to finish drawing the rectangle', Margin_left+30,y)y = y + Line_heightlove.graphics.print("* Press 'p' to replace the second vertex of the rectangle", Margin_left+30,y)y = y + Line_heightlove.graphics.print('* Release the mouse button to finish drawing the rectangle', State.left+30,y)y = y + State.line_heightlove.graphics.print("* Press 'p' to replace the second vertex of the rectangle", State.left+30,y)y = y + State.line_height - edit in help.lua at line 84[10.9976]→[10.2309:2424](∅→∅),[10.9976]→[10.2309:2424](∅→∅),[10.2424]→[10.103:103](∅→∅),[10.2424]→[10.103:103](∅→∅),[10.10164]→[10.101:185](∅→∅),[10.10164]→[10.101:185](∅→∅),[10.185]→[10.105:105](∅→∅),[10.185]→[10.105:105](∅→∅)
love.graphics.print("* Press 'esc' then release the mouse button to cancel the current shape", Margin_left+30,y)love.graphics.print("* Press '2' to switch to drawing lines", Margin_left+30,y) - replacement in help.lua at line 85[10.21533]→[10.5093:5196](∅→∅),[10.5093]→[10.5093:5196](∅→∅),[10.5196]→[10.21534:21617](∅→∅),[10.21617]→[10.5286:5316](∅→∅),[10.5286]→[10.5286:5316](∅→∅)
y = y + State.line_heighty = y + State.line_heightif State.current_drawing_mode ~= 'line' thenlove.graphics.print("* Press 'l' to switch to drawing lines", State.left+30,y)y = y + State.line_heighty = y + Line_heighty = y + Line_heightif Current_drawing_mode ~= 'line' thenlove.graphics.print("* Press '2' to switch to drawing lines", State.left+30,y)y = y + Line_height - edit in help.lua at line 91
love.graphics.print("* Press other digits to switch to polygons with corresponding vertices", Margin_left+30,y) - resurrect zombie in help.lua at line 91
y = y + Line_height - edit in help.lua at line 91
love.graphics.print("* Press other digits to switch to polygons with corresponding vertices", State.left+30,y) - edit in help.lua at line 93
if State.current_drawing_mode ~= 'manhattan' then - resolve order conflict in help.lua at line 93[10.322]
- edit in help.lua at line 93
if Current_drawing_mode ~= 'manhattan' then - replacement in help.lua at line 95
y = y + State.line_heighty = y + Line_height - edit in help.lua at line 97[10.10489]→[10.2615:2706](∅→∅),[10.10489]→[10.2615:2706](∅→∅),[10.2706]→[10.107:107](∅→∅),[10.2706]→[10.107:107](∅→∅)
love.graphics.print("* Press 'o' to switch to drawing circles/arcs", Margin_left+30,y) - edit in help.lua at line 101[10.10604]→[10.5687:5737](∅→∅),[10.10604]→[10.5687:5737](∅→∅),[10.5737]→[10.21813:21899](∅→∅),[10.5737]→[10.21813:21899](∅→∅),[10.21899]→[10.5830:5860](∅→∅),[10.5830]→[10.5830:5860](∅→∅),[10.5830]→[10.5830:5860](∅→∅),[10.751]→[10.5861:5913](∅→∅),[10.751]→[10.5861:5913](∅→∅)
if State.current_drawing_mode ~= 'polygon' thenlove.graphics.print("* Press 'g' to switch to drawing polygons", State.left+30,y)y = y + State.line_heightif State.current_drawing_mode ~= 'rectangle' then - resurrect zombie in help.lua at line 101
love.graphics.print("* Press 'r' to switch to drawing rectangles", State.left+30,y) - edit in help.lua at line 101
if Current_drawing_mode ~= 'rectangle' then - replacement in help.lua at line 103
y = y + State.line_heighty = y + Line_height - replacement in help.lua at line 105[10.10759]→[10.375:410](∅→∅),[10.10759]→[10.375:410](∅→∅),[10.410]→[10.468:599](∅→∅),[10.410]→[10.468:599](∅→∅)
App.color(Help_background_color)love.graphics.rectangle('fill', State.left,drawing.y, State.width, math.max(Drawing.pixels(drawing.h, State.width),y-drawing.y))love.graphics.setColor(0,0.5,0, 0.1)love.graphics.rectangle('fill', State.left,drawing.y, State.right, math.max(Drawing.pixels(drawing.h),y-drawing.y)) - edit in help.lua at line 131[10.910]→[10.6039:6088](∅→∅),[10.910]→[10.6039:6088](∅→∅),[10.6088]→[10.21989:22074](∅→∅),[10.6088]→[10.21989:22074](∅→∅),[10.22074]→[10.6180:6210](∅→∅),[10.6180]→[10.6180:6210](∅→∅),[10.6180]→[10.6180:6210](∅→∅),[10.104]→[10.20822:20913](∅→∅),[10.104]→[10.20822:20913](∅→∅),[10.20913]→[10.4187:4219](∅→∅),[10.4187]→[10.4187:4219](∅→∅),[10.4187]→[10.4187:4219](∅→∅),[10.231]→[10.20914:21019](∅→∅),[10.231]→[10.20914:21019](∅→∅),[10.21019]→[10.4332:4364](∅→∅),[10.4332]→[10.4332:4364](∅→∅),[10.4332]→[10.4332:4364](∅→∅),[10.4364]→[10.21020:21124](∅→∅),[10.4364]→[10.21020:21124](∅→∅),[10.21124]→[10.4475:4507](∅→∅),[10.4475]→[10.4475:4507](∅→∅),[10.4475]→[10.4475:4507](∅→∅),[10.503]→[10.4508:4561](∅→∅),[10.503]→[10.4508:4561](∅→∅),[10.592]→[10.21125:21213](∅→∅),[10.592]→[10.21125:21213](∅→∅),[10.21213]→[10.4657:4689](∅→∅),[10.4657]→[10.4657:4689](∅→∅),[10.4657]→[10.4657:4689](∅→∅),[10.716]→[10.21214:21316](∅→∅),[10.716]→[10.21214:21316](∅→∅),[10.21316]→[10.4799:4831](∅→∅),[10.4799]→[10.4799:4831](∅→∅),[10.4799]→[10.4799:4831](∅→∅),[10.4831]→[10.21317:21418](∅→∅),[10.4831]→[10.21317:21418](∅→∅),[10.21418]→[10.4939:4971](∅→∅),[10.4939]→[10.4939:4971](∅→∅),[10.4939]→[10.4939:4971](∅→∅)
if State.current_drawing_mode ~= 'square' thenlove.graphics.print("* Press 's' to switch to drawing squares", State.left+30,y)y = y + State.line_heightlove.graphics.print("* Press 'p' to add a vertex to the rectangle", State.left+30,y)y = y + State.line_heightlove.graphics.print('* Release the mouse button to finish drawing the rectangle', State.left+30,y)y = y + State.line_heightlove.graphics.print("* Press 'p' to replace the second vertex of the rectangle", State.left+30,y)y = y + State.line_heightelseif State.current_drawing_mode == 'square' thenlove.graphics.print("* Press 'p' to add a vertex to the square", State.left+30,y)y = y + State.line_heightlove.graphics.print('* Release the mouse button to finish drawing the square', State.left+30,y)y = y + State.line_heightlove.graphics.print("* Press 'p' to replace the second vertex of the square", State.left+30,y)y = y + State.line_height - resolve order conflict in help.lua at line 131[10.11544]
- edit in geom.lua at line 1
geom = {} - edit in geom.lua at line 3
geom = {} - resolve order conflict in geom.lua at line 3
- replacement in edit.lua at line 51
-- an array vertices for mode 'polygon', 'rectangle', 'square'-- an array vertices for mode 'rectangle' - edit in edit.lua at line 54
-- center, p1, num_vertices for mode 'polygon' - edit in edit.lua at line 90
current_drawing_submode = nil, - edit in drawing_tests.lua at line 226[10.1415]→[10.406:500](∅→∅),[10.500]→[10.1468:1512](∅→∅),[10.1468]→[10.1468:1512](∅→∅),[10.86]→[10.1571:2612](∅→∅),[10.1571]→[10.1571:2612](∅→∅),[10.2612]→[10.88:88](∅→∅)
App.screen.init{width=Margin_width+256, height=300} -- drawing coordinates 1:1 with pixelsLines = load_array{'```lines', '```', ''}App.draw()check_eq(Current_drawing_mode, 'line', 'F - test_draw_polygon/baseline/drawing_mode')check_eq(#Lines, 2, 'F - test_draw_polygon/baseline/#lines')check_eq(Lines[1].mode, 'drawing', 'F - test_draw_polygon/baseline/mode')check_eq(Lines[1].y, Margin_top+Drawing_padding_top, 'F - test_draw_polygon/baseline/y')check_eq(Lines[1].h, 128, 'F - test_draw_polygon/baseline/y')check_eq(#Lines[1].shapes, 0, 'F - test_draw_polygon/baseline/#shapes')-- start a strokeApp.run_after_mouse_press(Margin_left+35, Margin_top+Drawing_padding_top+36, 1)-- switch to polygon modeApp.run_after_keychord('5')App.run_after_mouse_release(Margin_left+55, Margin_top+Drawing_padding_top+26, 1)local drawing = Lines[1]check_eq(#drawing.shapes, 1, 'F - test_draw_polygon/#shapes')check_eq(#drawing.points, 2, 'F - test_draw_polygon/vertices')local shape = drawing.shapes[1]check_eq(shape.mode, 'polygon', 'F - test_draw_polygon/shape_mode')check_eq(shape.num_vertices, 5, 'F - test_draw_polygon/vertices') - resurrect zombie in drawing_tests.lua at line 226[10.847]→[10.27367:27564](∅→∅),[10.847]→[10.27367:27564](∅→∅),[10.27564]→[10.112971:113028](∅→∅),[10.112971]→[10.112971:113028](∅→∅),[10.112971]→[10.112971:113028](∅→∅),[10.113028]→[10.9860:9886](∅→∅),[10.113028]→[10.9860:9886](∅→∅),[10.9886]→[10.113029:113295](∅→∅),[10.1462]→[10.113029:113295](∅→∅),[10.1462]→[10.113029:113295](∅→∅),[10.113295]→[10.27565:27688](∅→∅),[10.113295]→[10.27565:27688](∅→∅),[10.27688]→[10.113425:113589](∅→∅),[10.113425]→[10.113425:113589](∅→∅),[10.113425]→[10.113425:113589](∅→∅),[10.9673]→[10.113941:113981](∅→∅),[10.28028]→[10.113941:113981](∅→∅),[10.113941]→[10.113941:113981](∅→∅),[10.113941]→[10.113941:113981](∅→∅)
App.screen.init{width=Margin_left+256, height=300} -- drawing coordinates 1:1 with pixelsEditor_state = edit.initialize_state(Margin_top, Margin_left, App.screen.width) -- zero right marginEditor_state.lines = load_array{'```lines', '```', ''}edit.draw(Editor_state)check_eq(Editor_state.current_drawing_mode, 'line', 'F - test_draw_polygon/baseline/drawing_mode')check_eq(#Editor_state.lines, 2, 'F - test_draw_polygon/baseline/#lines')check_eq(Editor_state.lines[1].mode, 'drawing', 'F - test_draw_polygon/baseline/mode')check_eq(Editor_state.lines[1].y, Editor_state.top+Editor_state.drawing_padding_top, 'F - test_draw_polygon/baseline/y')check_eq(Editor_state.lines[1].h, 128, 'F - test_draw_polygon/baseline/y')check_eq(#Editor_state.lines[1].shapes, 0, 'F - test_draw_polygon/baseline/#shapes')local drawing = Editor_state.lines[1] - resolve order conflict in drawing_tests.lua at line 226
- replacement in drawing_tests.lua at line 236[10.1489]→[10.27689:27809](∅→∅),[10.1489]→[10.27689:27809](∅→∅),[10.27809]→[10.9412:9474](∅→∅),[10.9412]→[10.9412:9474](∅→∅),[10.9412]→[10.9412:9474](∅→∅),[10.1634]→[10.27810:27903](∅→∅),[10.1634]→[10.27810:27903](∅→∅),[10.27903]→[10.9475:9534](∅→∅),[10.113817]→[10.9475:9534](∅→∅),[10.113817]→[10.9475:9534](∅→∅),[10.1763]→[10.27904:28028](∅→∅),[10.1763]→[10.27904:28028](∅→∅)
edit.run_after_mouse_press(Editor_state, Editor_state.left+5, Editor_state.top+Editor_state.drawing_padding_top+6, 1)edit.run_after_keychord(Editor_state, 'g') -- polygon modeApp.mouse_move(Editor_state.left+65, Editor_state.top+Editor_state.drawing_padding_top+36)edit.run_after_keychord(Editor_state, 'p') -- add pointedit.run_after_mouse_release(Editor_state, Editor_state.left+35, Editor_state.top+Editor_state.drawing_padding_top+26, 1)-- start a strokeedit.run_after_mouse_press(Editor_state, Editor_state.left+35, Editor_state.top+Editor_state.drawing_padding_top+36, 1)-- switch to polygon modeedit.run_after_keychord(Editor_state, '5')edit.run_after_mouse_release(Editor_state, Editor_state.left+55, Editor_state.top+Editor_state.drawing_padding_top+26, 1) - edit in drawing_tests.lua at line 242
check_eq(#drawing.shapes, 1, 'F - test_draw_polygon/#shapes')check_eq(#drawing.points, 2, 'F - test_draw_polygon/vertices')local shape = drawing.shapes[1]check_eq(shape.mode, 'polygon', 'F - test_draw_polygon/shape_mode')check_eq(shape.num_vertices, 5, 'F - test_draw_polygon/vertices') - edit in drawing_tests.lua at line 329[10.7265]→[10.29437:29634](∅→∅),[10.7265]→[10.29437:29634](∅→∅),[10.29634]→[10.116524:116581](∅→∅),[10.116524]→[10.116524:116581](∅→∅),[10.116524]→[10.116524:116581](∅→∅),[10.116581]→[10.9941:9967](∅→∅),[10.116581]→[10.9941:9967](∅→∅),[10.9967]→[10.116582:116845](∅→∅),[10.1507]→[10.116582:116845](∅→∅),[10.1507]→[10.116582:116845](∅→∅),[10.116845]→[10.29635:29757](∅→∅),[10.116845]→[10.29635:29757](∅→∅),[10.29757]→[10.116974:117136](∅→∅),[10.116974]→[10.116974:117136](∅→∅),[10.116974]→[10.116974:117136](∅→∅),[10.7901]→[10.29758:29880](∅→∅),[10.7901]→[10.29758:29880](∅→∅),[10.29880]→[10.10535:10596](∅→∅),[10.10535]→[10.10535:10596](∅→∅),[10.10535]→[10.10535:10596](∅→∅),[10.8058]→[10.29881:29974](∅→∅),[10.8058]→[10.29881:29974](∅→∅),[10.29974]→[10.10597:10642](∅→∅),[10.117366]→[10.10597:10642](∅→∅),[10.117366]→[10.10597:10642](∅→∅),[10.8194]→[10.29975:30068](∅→∅),[10.8194]→[10.29975:30068](∅→∅),[10.30068]→[10.10643:10688](∅→∅),[10.117474]→[10.10643:10688](∅→∅),[10.117474]→[10.10643:10688](∅→∅),[10.8358]→[10.30069:30193](∅→∅),[10.8358]→[10.30069:30193](∅→∅),[10.10827]→[10.117598:117638](∅→∅),[10.30193]→[10.117598:117638](∅→∅),[10.117598]→[10.117598:117638](∅→∅),[10.117598]→[10.117598:117638](∅→∅)
App.screen.init{width=Margin_left+256, height=300} -- drawing coordinates 1:1 with pixelsEditor_state = edit.initialize_state(Margin_top, Margin_left, App.screen.width) -- zero right marginEditor_state.lines = load_array{'```lines', '```', ''}edit.draw(Editor_state)check_eq(Editor_state.current_drawing_mode, 'line', 'F - test_draw_square/baseline/drawing_mode')check_eq(#Editor_state.lines, 2, 'F - test_draw_square/baseline/#lines')check_eq(Editor_state.lines[1].mode, 'drawing', 'F - test_draw_square/baseline/mode')check_eq(Editor_state.lines[1].y, Editor_state.top+Editor_state.drawing_padding_top, 'F - test_draw_square/baseline/y')check_eq(Editor_state.lines[1].h, 128, 'F - test_draw_square/baseline/y')check_eq(#Editor_state.lines[1].shapes, 0, 'F - test_draw_square/baseline/#shapes')edit.run_after_mouse_press(Editor_state, Editor_state.left+35, Editor_state.top+Editor_state.drawing_padding_top+36, 1)edit.run_after_keychord(Editor_state, 's') -- square modeApp.mouse_move(Editor_state.left+42, Editor_state.top+Editor_state.drawing_padding_top+45)edit.run_after_keychord(Editor_state, 'p')App.mouse_move(Editor_state.left+65, Editor_state.top+Editor_state.drawing_padding_top+66)edit.run_after_keychord(Editor_state, 'p')edit.run_after_mouse_release(Editor_state, Editor_state.left+15, Editor_state.top+Editor_state.drawing_padding_top+26, 1)local drawing = Editor_state.lines[1] - edit in drawing_tests.lua at line 507[10.2844]→[10.33400:33597](∅→∅),[10.2844]→[10.33400:33597](∅→∅),[10.33597]→[10.122477:122579](∅→∅),[10.122477]→[10.122477:122579](∅→∅),[10.122477]→[10.122477:122579](∅→∅),[10.122579]→[10.10157:10183](∅→∅),[10.122579]→[10.10157:10183](∅→∅),[10.3062]→[10.33598:33718](∅→∅),[10.3062]→[10.33598:33718](∅→∅),[10.33718]→[10.13350:13412](∅→∅),[10.13350]→[10.13350:13412](∅→∅),[10.13350]→[10.13350:13412](∅→∅),[10.3207]→[10.33719:33812](∅→∅),[10.3207]→[10.33719:33812](∅→∅),[10.33812]→[10.13413:13472](∅→∅),[10.122807]→[10.13413:13472](∅→∅),[10.122807]→[10.13413:13472](∅→∅),[10.3336]→[10.33813:33906](∅→∅),[10.3336]→[10.33813:33906](∅→∅),[10.33906]→[10.13473:13532](∅→∅),[10.122915]→[10.13473:13532](∅→∅),[10.122915]→[10.13473:13532](∅→∅),[10.3466]→[10.33907:34031](∅→∅),[10.3466]→[10.33907:34031](∅→∅),[10.13671]→[10.123039:123079](∅→∅),[10.34031]→[10.123039:123079](∅→∅),[10.123039]→[10.123039:123079](∅→∅),[10.123039]→[10.123039:123079](∅→∅),[10.3893]→[10.34032:34125](∅→∅),[10.3893]→[10.34032:34125](∅→∅),[10.34125]→[10.13672:13719](∅→∅),[10.123187]→[10.13672:13719](∅→∅),[10.123187]→[10.13672:13719](∅→∅),[10.4357]→[10.34126:34323](∅→∅),[10.4357]→[10.34126:34323](∅→∅),[10.34323]→[10.123295:123397](∅→∅),[10.123295]→[10.123295:123397](∅→∅),[10.123295]→[10.123295:123397](∅→∅),[10.123397]→[10.10184:10210](∅→∅),[10.123397]→[10.10184:10210](∅→∅),[10.4575]→[10.34324:34444](∅→∅),[10.4575]→[10.34324:34444](∅→∅),[10.34444]→[10.13854:13916](∅→∅),[10.13854]→[10.13854:13916](∅→∅),[10.13854]→[10.13854:13916](∅→∅),[10.4720]→[10.34445:34538](∅→∅),[10.4720]→[10.34445:34538](∅→∅),[10.34538]→[10.13917:13976](∅→∅),[10.123625]→[10.13917:13976](∅→∅),[10.123625]→[10.13917:13976](∅→∅),[10.4849]→[10.34539:34663](∅→∅),[10.4849]→[10.34539:34663](∅→∅),[10.14115]→[10.123749:123789](∅→∅),[10.34663]→[10.123749:123789](∅→∅),[10.123749]→[10.123749:123789](∅→∅),[10.123749]→[10.123749:123789](∅→∅),[10.5276]→[10.34664:34757](∅→∅),[10.5276]→[10.34664:34757](∅→∅),[10.34757]→[10.14116:14163](∅→∅),[10.123897]→[10.14116:14163](∅→∅),[10.123897]→[10.14116:14163](∅→∅)
App.screen.init{width=Margin_left+256, height=300} -- drawing coordinates 1:1 with pixelsEditor_state = edit.initialize_state(Margin_top, Margin_left, App.screen.width) -- zero right marginEditor_state.lines = load_array{'```lines', '```', ''}Editor_state.current_drawing_mode = 'line'edit.draw(Editor_state)edit.run_after_mouse_press(Editor_state, Editor_state.left+5, Editor_state.top+Editor_state.drawing_padding_top+6, 1)edit.run_after_keychord(Editor_state, 'g') -- polygon modeApp.mouse_move(Editor_state.left+65, Editor_state.top+Editor_state.drawing_padding_top+36)edit.run_after_keychord(Editor_state, 'p') -- add pointApp.mouse_move(Editor_state.left+35, Editor_state.top+Editor_state.drawing_padding_top+26)edit.run_after_keychord(Editor_state, 'p') -- add pointedit.run_after_mouse_release(Editor_state, Editor_state.left+14, Editor_state.top+Editor_state.drawing_padding_top+16, 1)local drawing = Editor_state.lines[1]App.mouse_move(Editor_state.left+35, Editor_state.top+Editor_state.drawing_padding_top+26)edit.run_after_keychord(Editor_state, 'C-d')App.screen.init{width=Margin_left+256, height=300} -- drawing coordinates 1:1 with pixelsEditor_state = edit.initialize_state(Margin_top, Margin_left, App.screen.width) -- zero right marginEditor_state.lines = load_array{'```lines', '```', ''}Editor_state.current_drawing_mode = 'line'edit.draw(Editor_state)edit.run_after_mouse_press(Editor_state, Editor_state.left+5, Editor_state.top+Editor_state.drawing_padding_top+6, 1)edit.run_after_keychord(Editor_state, 'g') -- polygon modeApp.mouse_move(Editor_state.left+65, Editor_state.top+Editor_state.drawing_padding_top+36)edit.run_after_keychord(Editor_state, 'p') -- add pointedit.run_after_mouse_release(Editor_state, Editor_state.left+14, Editor_state.top+Editor_state.drawing_padding_top+16, 1)local drawing = Editor_state.lines[1]App.mouse_move(Editor_state.left+65, Editor_state.top+Editor_state.drawing_padding_top+36)edit.run_after_keychord(Editor_state, 'C-d') - replacement in drawing.lua at line 69
Drawing.draw_pending_shape(line, line.y, State.left,State.right)Drawing.draw_pending_shape(State, line, line.y, State.left,State.right) - resurrect zombie in drawing.lua at line 85
elseif shape.mode == 'rectangle' then - edit in drawing.lua at line 85
love.graphics.line(Drawing.pixels(p1.x, width)+left,Drawing.pixels(p1.y, width)+top, Drawing.pixels(p2.x, width)+left,Drawing.pixels(p2.y, width)+top) - edit in drawing.lua at line 87
love.graphics.line(Drawing.pixels(p1.x, width)+left,Drawing.pixels(p1.y, width)+top, Drawing.pixels(p2.x, width)+left,Drawing.pixels(p2.y, width)+top) - resolve order conflict in drawing.lua at line 87
- resurrect zombie in drawing.lua at line 97
elseif shape.mode == 'polygon' thenlocal center = drawing.points[shape.center] - edit in drawing.lua at line 97
love.graphics.line(Drawing.pixels(prev.x, width)+left,Drawing.pixels(prev.y, width)+top, Drawing.pixels(curr.x, width)+left,Drawing.pixels(curr.y, width)+top) - replacement in drawing.lua at line 100
local cx,cy = Drawing.pixels(center.x)+left, Drawing.pixels(center.y)+toplocal cx,cy = Drawing.pixels(center.x, width)+left, Drawing.pixels(center.y, width)+top - replacement in drawing.lua at line 102
local x,y = Drawing.pixels(p1.x)+left, Drawing.pixels(p1.y)+toplocal x,y = Drawing.pixels(p1.x, width)+left, Drawing.pixels(p1.y, width)+top - edit in drawing.lua at line 104
love.graphics.line(Drawing.pixels(prev.x, width)+left,Drawing.pixels(prev.y, width)+top, Drawing.pixels(curr.x, width)+left,Drawing.pixels(curr.y, width)+top) - resolve order conflict in drawing.lua at line 104
- replacement in drawing.lua at line 119
function Drawing.draw_pending_shape(drawing, top, left,right)function Drawing.draw_pending_shape(State, drawing, top, left,right) - edit in drawing.lua at line 146[10.3081]→[10.3228:3395](∅→∅),[10.3081]→[10.3228:3395](∅→∅),[10.3256]→[10.3396:3518](∅→∅),[10.3256]→[10.3396:3518](∅→∅)
love.graphics.line(Drawing.pixels(prev.x, width)+left,Drawing.pixels(prev.y, width)+top, Drawing.pixels(curr.x, width)+left,Drawing.pixels(curr.y, width)+top)love.graphics.line(Drawing.pixels(prev.x, width)+left,Drawing.pixels(prev.y, width)+top, App.mouse_x(),App.mouse_y()) - resurrect zombie in drawing.lua at line 156
elseif shape.mode == 'polygon' thenlocal center = drawing.points[shape.center] - edit in drawing.lua at line 156
love.graphics.line(Drawing.pixels(first.x, width)+left,Drawing.pixels(first.y, width)+top, Drawing.pixels(second.x, width)+left,Drawing.pixels(second.y, width)+top)love.graphics.line(Drawing.pixels(second.x, width)+left,Drawing.pixels(second.y, width)+top, Drawing.pixels(thirdx, width)+left,Drawing.pixels(thirdy, width)+top)love.graphics.line(Drawing.pixels(thirdx, width)+left,Drawing.pixels(thirdy, width)+top, Drawing.pixels(fourthx, width)+left,Drawing.pixels(fourthy, width)+top)love.graphics.line(Drawing.pixels(fourthx, width)+left,Drawing.pixels(fourthy, width)+top, Drawing.pixels(first.x, width)+left,Drawing.pixels(first.y, width)+top) - replacement in drawing.lua at line 162
local mx,my = Drawing.coord(App.mouse_x()-left), Drawing.coord(App.mouse_y()-top)local mx,my = Drawing.coord(App.mouse_x()-left, width), Drawing.coord(App.mouse_y()-top, width) - edit in drawing.lua at line 166[10.3198]→[10.3198:3362](∅→∅),[10.3198]→[10.3198:3362](∅→∅),[10.2380]→[10.3626:4294](∅→∅),[10.2380]→[10.3626:4294](∅→∅),[10.3115]→[10.4295:4401](∅→∅),[10.3115]→[10.4295:4401](∅→∅),[10.3281]→[9.400:480](∅→∅),[10.3281]→[9.400:480](∅→∅),[10.3457]→[10.4402:5070](∅→∅),[10.3457]→[10.4402:5070](∅→∅)
local cx,cy = Drawing.pixels(center.x)+left, Drawing.pixels(center.y)+topDrawing.draw_polygon(Current_drawing_submode, cx,cy, App.mouse_x(),App.mouse_y())love.graphics.line(Drawing.pixels(first.x, width)+left,Drawing.pixels(first.y, width)+top, Drawing.pixels(second.x, width)+left,Drawing.pixels(second.y, width)+top)love.graphics.line(Drawing.pixels(second.x, width)+left,Drawing.pixels(second.y, width)+top, Drawing.pixels(thirdx, width)+left,Drawing.pixels(thirdy, width)+top)love.graphics.line(Drawing.pixels(thirdx, width)+left,Drawing.pixels(thirdy, width)+top, Drawing.pixels(fourthx, width)+left,Drawing.pixels(fourthy, width)+top)love.graphics.line(Drawing.pixels(fourthx, width)+left,Drawing.pixels(fourthy, width)+top, Drawing.pixels(first.x, width)+left,Drawing.pixels(first.y, width)+top)love.graphics.line(Drawing.pixels(first.x, width)+left,Drawing.pixels(first.y, width)+top, pmx,pmy)local mx,my = Drawing.coord(pmx-left, width), Drawing.coord(pmy-top, width)love.graphics.line(Drawing.pixels(first.x, width)+left,Drawing.pixels(first.y, width)+top, Drawing.pixels(second.x, width)+left,Drawing.pixels(second.y, width)+top)love.graphics.line(Drawing.pixels(second.x, width)+left,Drawing.pixels(second.y, width)+top, Drawing.pixels(thirdx, width)+left,Drawing.pixels(thirdy, width)+top)love.graphics.line(Drawing.pixels(thirdx, width)+left,Drawing.pixels(thirdy, width)+top, Drawing.pixels(fourthx, width)+left,Drawing.pixels(fourthy, width)+top)love.graphics.line(Drawing.pixels(fourthx, width)+left,Drawing.pixels(fourthy, width)+top, Drawing.pixels(first.x, width)+left,Drawing.pixels(first.y, width)+top) - resolve order conflict in drawing.lua at line 166[10.3198]
- edit in drawing.lua at line 166
local cx,cy = Drawing.pixels(center.x, width)+left, Drawing.pixels(center.y, width)+topDrawing.draw_polygon(State.current_drawing_submode, cx,cy, App.mouse_x(),App.mouse_y()) - resurrect zombie in drawing.lua at line 195
function Drawing.draw_polygon(n, cx,cy, x1,y1)local r = geom.dist(cx,cy, x1,y1)local theta = 2*math.pi/nlocal prevx,prevy = x1,y1for i=1,n do - resurrect zombie in drawing.lua at line 201
x,y = geom.rotate(cx,cy, prevx,prevy, theta)love.graphics.line(prevx,prevy, x,y)prevx,prevy = x,yendend - edit in drawing.lua at line 206
- edit in drawing.lua at line 213[10.1252]→[10.239:289](∅→∅),[10.1252]→[10.239:289](∅→∅),[10.1464]→[10.3640:3895](∅→∅),[10.1464]→[10.3640:3895](∅→∅)
elseif Current_drawing_mode == 'rectangle' thenelseif Current_drawing_mode == 'polygon' thenlocal j = Drawing.insert_point(drawing.points, Drawing.coord(x-Margin_left), Drawing.coord(y-drawing.y))drawing.pending = {mode=Current_drawing_mode, num_vertices=Current_drawing_submode, center=j} - replacement in drawing.lua at line 217
local j = Drawing.find_or_insert_point(drawing.points, Drawing.coord(x-State.left, State.width), Drawing.coord(y-drawing.y, State.width), State.width)local j = Drawing.insert_point(drawing.points, Drawing.coord(x-State.left, State.width), Drawing.coord(y-drawing.y, State.width)) - replacement in drawing.lua at line 219
elseif State.current_drawing_mode == 'polygon' or State.current_drawing_mode == 'rectangle' or State.current_drawing_mode == 'square' thenlocal j = Drawing.find_or_insert_point(drawing.points, Drawing.coord(x-State.left, State.width), Drawing.coord(y-drawing.y, State.width), State.width)elseif State.current_drawing_mode == 'rectangle' thenlocal j = Drawing.insert_point(drawing.points, Drawing.coord(x-State.left, State.width), Drawing.coord(y-drawing.y, State.width)) - edit in drawing.lua at line 222
elseif State.current_drawing_mode == 'polygon' thenlocal j = Drawing.insert_point(drawing.points, Drawing.coord(x-State.left, State.width), Drawing.coord(y-drawing.y, State.width))drawing.pending = {mode=State.current_drawing_mode, num_vertices=State.current_drawing_submode, center=j} - replacement in drawing.lua at line 226
local j = Drawing.find_or_insert_point(drawing.points, Drawing.coord(x-State.left, State.width), Drawing.coord(y-drawing.y, State.width), State.width)local j = Drawing.insert_point(drawing.points, Drawing.coord(x-State.left, State.width), Drawing.coord(y-drawing.y, State.width)) - resurrect zombie in drawing.lua at line 264
endend - replacement in drawing.lua at line 337
local mx,my = Drawing.coord(x-Margin_left), Drawing.coord(y-drawing.y)drawing.pending.p1 = Drawing.insert_point(drawing.points, mx,my)local mx,my = Drawing.coord(x-State.left, State.width), Drawing.coord(y-drawing.y, State.width)drawing.pending.p1 = Drawing.find_or_insert_point(drawing.points, mx,my, State.width) - resurrect zombie in drawing.lua at line 368
elseif App.mouse_down(1) and chord == '2' then - edit in drawing.lua at line 368
State.current_drawing_mode = 'freehand' - replacement in drawing.lua at line 370
Current_drawing_mode = 'line'State.current_drawing_mode = 'line' - replacement in drawing.lua at line 381
Current_drawing_mode = 'line'State.current_drawing_mode = 'line' - replacement in drawing.lua at line 383
Current_drawing_mode = 'manhattan'local drawing = Drawing.select_drawing_at_mouse()State.current_drawing_mode = 'manhattan'local drawing = Drawing.select_drawing_at_mouse(State) - replacement in drawing.lua at line 386
drawing.pending.p1 = Drawing.insert_point(drawing.points, drawing.pending.points[1].x, drawing.pending.points[1].y)drawing.pending.p1 = Drawing.find_or_insert_point(drawing.points, drawing.pending.points[1].x, drawing.pending.points[1].y, State.width) - edit in drawing.lua at line 396
Current_drawing_mode = 'manhattan' - resurrect zombie in drawing.lua at line 396
State.current_drawing_mode = 'manhattan' - edit in drawing.lua at line 397[10.1721]→[10.331:374](∅→∅),[10.1721]→[10.331:374](∅→∅),[10.1771]→[10.375:418](∅→∅),[10.1771]→[10.375:418](∅→∅),[10.418]→[10.198:251](∅→∅),[10.418]→[10.198:251](∅→∅)
State.current_drawing_mode = 'polygon'State.current_drawing_mode = 'polygon'local _,drawing = Drawing.current_drawing(State) - edit in drawing.lua at line 412
State.current_drawing_mode = 'square' - resurrect zombie in drawing.lua at line 412
local _,drawing = Drawing.current_drawing(State) - edit in drawing.lua at line 412
elseif App.mouse_down(1) and chord == 'p' and State.current_drawing_mode == 'rectangle' then - edit in drawing.lua at line 414[10.7998]→[10.597:690](∅→∅),[10.7998]→[10.597:690](∅→∅),[10.7998]→[10.597:690](∅→∅),[10.690]→[10.360:413](∅→∅),[10.690]→[10.360:413](∅→∅),[10.690]→[10.360:413](∅→∅),[10.9759]→[10.650:739](∅→∅),[10.9759]→[10.650:739](∅→∅),[10.9759]→[10.797:936](∅→∅),[10.9759]→[10.797:936](∅→∅),[10.936]→[10.414:467](∅→∅),[10.936]→[10.414:467](∅→∅)
elseif App.mouse_down(1) and chord == 'p' and State.current_drawing_mode == 'polygon' thenlocal _,drawing = Drawing.current_drawing(State)elseif App.mouse_down(1) and chord == 'p' and Current_drawing_mode == 'rectangle' thenelseif App.mouse_down(1) and chord == 'p' and (State.current_drawing_mode == 'rectangle' or State.current_drawing_mode == 'square') thenlocal _,drawing = Drawing.current_drawing(State) - resurrect zombie in drawing.lua at line 414[10.467]→[9.2537:2661](∅→∅),[10.467]→[9.2537:2661](∅→∅),[9.2661]→[10.7963:8042](∅→∅),[10.39140]→[10.7963:8042](∅→∅),[10.39140]→[10.7963:8042](∅→∅)
local mx,my = Drawing.coord(App.mouse_x()-State.left, State.width), Drawing.coord(App.mouse_y()-drawing.y, State.width)local j = Drawing.find_or_insert_point(drawing.points, mx,my, State.width) - replacement in drawing.lua at line 421
Current_drawing_mode = 'polygon'Current_drawing_submode = 3State.current_drawing_mode = 'polygon'State.current_drawing_submode = 3 - replacement in drawing.lua at line 424
Current_drawing_mode = 'polygon'Current_drawing_submode = 4State.current_drawing_mode = 'polygon'State.current_drawing_submode = 4 - replacement in drawing.lua at line 427
Current_drawing_mode = 'polygon'Current_drawing_submode = 5State.current_drawing_mode = 'polygon'State.current_drawing_submode = 5 - replacement in drawing.lua at line 430
Current_drawing_mode = 'polygon'Current_drawing_submode = 6State.current_drawing_mode = 'polygon'State.current_drawing_submode = 6 - replacement in drawing.lua at line 433
Current_drawing_mode = 'polygon'Current_drawing_submode = 7State.current_drawing_mode = 'polygon'State.current_drawing_submode = 7 - replacement in drawing.lua at line 436
Current_drawing_mode = 'polygon'Current_drawing_submode = 8State.current_drawing_mode = 'polygon'State.current_drawing_submode = 8 - replacement in drawing.lua at line 439
Current_drawing_mode = 'polygon'Current_drawing_submode = 9State.current_drawing_mode = 'polygon'State.current_drawing_submode = 9 - replacement in drawing.lua at line 442
Current_drawing_mode = 'polygon'Current_drawing_submode = 3Drawing.switch_current_drawing_pending_to_polygon()State.current_drawing_mode = 'polygon'State.current_drawing_submode = 3Drawing.switch_current_drawing_pending_to_polygon(State) - replacement in drawing.lua at line 446
Current_drawing_mode = 'polygon'Current_drawing_submode = 4Drawing.switch_current_drawing_pending_to_polygon()State.current_drawing_mode = 'polygon'State.current_drawing_submode = 4Drawing.switch_current_drawing_pending_to_polygon(State) - replacement in drawing.lua at line 450
Current_drawing_mode = 'polygon'Current_drawing_submode = 5Drawing.switch_current_drawing_pending_to_polygon()State.current_drawing_mode = 'polygon'State.current_drawing_submode = 5Drawing.switch_current_drawing_pending_to_polygon(State) - replacement in drawing.lua at line 454
Current_drawing_mode = 'polygon'Current_drawing_submode = 6Drawing.switch_current_drawing_pending_to_polygon()State.current_drawing_mode = 'polygon'State.current_drawing_submode = 6Drawing.switch_current_drawing_pending_to_polygon(State) - replacement in drawing.lua at line 458
Current_drawing_mode = 'polygon'Current_drawing_submode = 7Drawing.switch_current_drawing_pending_to_polygon()State.current_drawing_mode = 'polygon'State.current_drawing_submode = 7Drawing.switch_current_drawing_pending_to_polygon(State) - replacement in drawing.lua at line 462
Current_drawing_mode = 'polygon'Current_drawing_submode = 8Drawing.switch_current_drawing_pending_to_polygon()State.current_drawing_mode = 'polygon'State.current_drawing_submode = 8Drawing.switch_current_drawing_pending_to_polygon(State) - replacement in drawing.lua at line 466
Current_drawing_mode = 'polygon'Current_drawing_submode = 9Drawing.switch_current_drawing_pending_to_polygon()State.current_drawing_mode = 'polygon'State.current_drawing_submode = 9Drawing.switch_current_drawing_pending_to_polygon(State) - replacement in drawing.lua at line 540
function Drawing.switch_current_drawing_pending_to_polygon()local _,drawing = Drawing.current_drawing()function Drawing.switch_current_drawing_pending_to_polygon(State)local _,drawing = Drawing.current_drawing(State) - replacement in drawing.lua at line 543
drawing.pending.center = Drawing.insert_point(drawing.points, drawing.pending.points[1].x, drawing.pending.points[1].y)drawing.pending.center = Drawing.find_or_insert_point(drawing.points, drawing.pending.points[1].x, drawing.pending.points[1].y, State.width) - replacement in drawing.lua at line 552
drawing.pending.num_vertices = Current_drawing_submodedrawing.pending.num_vertices = State.current_drawing_submode - edit in drawing.lua at line 714[10.413]→[9.2412:2536](∅→∅),[10.413]→[9.2412:2536](∅→∅),[10.413]→[9.2412:2536](∅→∅),[9.2536]→[10.7883:7962](∅→∅),[10.39041]→[10.7883:7962](∅→∅),[10.39041]→[10.7883:7962](∅→∅),[10.39041]→[10.7883:7962](∅→∅),[10.7486]→[10.7731:7882](∅→∅),[10.7486]→[10.7731:7882](∅→∅),[10.6139]→[10.7427:7578](∅→∅),[10.6139]→[10.7427:7578](∅→∅),[10.1665]→[10.112:156](∅→∅),[10.1665]→[10.112:156](∅→∅),[10.64]→[10.157:197](∅→∅),[10.64]→[10.157:197](∅→∅),[10.197]→[10.84:137](∅→∅),[10.197]→[10.84:137](∅→∅),[10.724]→[10.198:238](∅→∅),[10.724]→[10.198:238](∅→∅),[10.807]→[10.239:284](∅→∅),[10.807]→[10.239:284](∅→∅),[10.284]→[10.138:197](∅→∅),[10.284]→[10.138:197](∅→∅),[10.193]→[10.7139:7282](∅→∅),[10.193]→[10.7139:7282](∅→∅),[10.947]→[10.7283:7426](∅→∅),[10.947]→[10.7283:7426](∅→∅),[10.6000]→[10.6886:7138](∅→∅),[10.6000]→[10.6886:7138](∅→∅),[10.2366]→[9.2095:2201](∅→∅),[10.2366]→[9.2095:2201](∅→∅),[10.1369]→[10.6517:6632](∅→∅),[10.1369]→[10.6517:6632](∅→∅),[10.1231]→[9.1883:1987](∅→∅),[10.1231]→[9.1883:1987](∅→∅),[10.1231]→[9.1883:1987](∅→∅)
local mx,my = Drawing.coord(App.mouse_x()-State.left, State.width), Drawing.coord(App.mouse_y()-drawing.y, State.width)local j = Drawing.find_or_insert_point(drawing.points, mx,my, State.width)drawing.pending.vertices = {Drawing.find_or_insert_point(drawing.points, drawing.pending.points[1].x, drawing.pending.points[1].y, State.width)}drawing.pending.vertices = {Drawing.find_or_insert_point(drawing.points, drawing.pending.points[1].x, drawing.pending.points[1].y, State.width)}State.current_drawing_mode = 'freehand'State.current_drawing_mode = 'line'local _,drawing = Drawing.current_drawing(State)State.current_drawing_mode = 'line'State.current_drawing_mode = 'manhattan'local drawing = Drawing.select_drawing_at_mouse(State)drawing.pending.p1 = Drawing.find_or_insert_point(drawing.points, drawing.pending.points[1].x, drawing.pending.points[1].y, State.width)drawing.pending.p1 = Drawing.find_or_insert_point(drawing.points, drawing.pending.points[1].x, drawing.pending.points[1].y, State.width)table.insert(drawing.pending.vertices, Drawing.find_or_insert_point(drawing.points, thirdx,thirdy, State.width))table.insert(drawing.pending.vertices, Drawing.find_or_insert_point(drawing.points, fourthx,fourthy, State.width))local mx,my = Drawing.coord(x-State.left, State.width), Drawing.coord(y-drawing.y, State.width)table.insert(drawing.pending.vertices, Drawing.find_or_insert_point(drawing.points, mx,my, State.width))local mx,my = Drawing.coord(x-State.left, State.width), Drawing.coord(y-drawing.y, State.width) - resolve order conflict in drawing.lua at line 714[10.1525]