let's prevent the text cursor from ever getting on a drawing
[?]
May 18, 2022, 2:15 AM
BJ5X5O4ACBBJ56LRBBSTCW6IBQP4HAEOOOPNH3SKTA4F66YTOIDACDependencies
- [2]
PWHZPJJMalways show current filename in window title - [3]
2INHXC3Kposition cursor by clicking on text - [4]
62ST7SV3bugfix typo - [5]
OTIBCAUJlove2d scaffold - [6]
VVXVV2D2change data model; text can now have metadata - [7]
7Q4B6M2Desc to cancel a shape mid-click - [8]
RJGZD4INbinary search to most natural up/down with proportional fonts - [9]
6PUNJS5Bbackspace - [10]
UTF73CBLreorg - [11]
GVOFXXITdelete drawing using backspace - [12]
IYW7X3WLleft/right cursor movement, deleting characters - [13]
3CS5KKCIup/down cursor movement - [14]
3D5RFWHVstop handling drawings in cursor_pos computations - [15]
6LJZN727handle chords - [*]
R5QXEHUIsomebody stop me - [*]
QCQHLMSTalways have a filename - [*]
5T2E3PDVcouple of bugfixes to file-handling - [*]
XX7G2FFJintermingle freehand line drawings with text
Change contents
- file addition: manual_tests[17.2]
file load:cursor_line = 1first line is a drawing -> cursor_line = 2create drawing -> cursor bumps down below drawingbackspacecursor_pos == 0, previous line is a drawing -> delete drawing, cursor still visible at start of linecursor_pos == 0, previous line is text -> join lines, cursor still at same character - edit in main.lua at line 75
for i,line in ipairs(lines) doif line.mode == 'text' thencursor_line = iendend - edit in main.lua at line 88
for i,line in ipairs(lines) doif line.mode == 'text' thencursor_line = iendend - edit in main.lua at line 110[5.428][20.588]
if cursor_line >= i thencursor_line = cursor_line+1end - replacement in main.lua at line 531
if cursor_line > 1 and lines[cursor_line].data == '' thentable.remove(lines, cursor_line)cursor_line = cursor_line-1if lines[cursor_line].mode == 'text' thencursor_pos = #lines[cursor_line].data+1if cursor_pos > 1 thenlocal byte_start = utf8.offset(lines[cursor_line].data, cursor_pos-1)local byte_end = utf8.offset(lines[cursor_line].data, cursor_pos)if byte_start thenif byte_end thenlines[cursor_line].data = string.sub(lines[cursor_line].data, 1, byte_start-1)..string.sub(lines[cursor_line].data, byte_end)elselines[cursor_line].data = string.sub(lines[cursor_line].data, 1, byte_start-1)endcursor_pos = cursor_pos-1endelseif cursor_line > 1 thenif lines[cursor_line-1].mode == 'drawing' thentable.remove(lines, cursor_line-1) - replacement in main.lua at line 546
cursor_pos = 1-- join linescursor_pos = utf8.len(lines[cursor_line-1].data)+1lines[cursor_line-1].data = lines[cursor_line-1].data..lines[cursor_line].datatable.remove(lines, cursor_line) - edit in main.lua at line 551
elseif lines[cursor_line].mode == 'drawing' thentable.remove(lines, cursor_line) -- we'll add undo soon - edit in main.lua at line 552[5.1571]→[5.1571:1711](∅→∅),[5.99]→[5.139:148](∅→∅),[5.1711]→[5.139:148](∅→∅),[5.139]→[5.139:148](∅→∅),[5.148]→[5.776:805](∅→∅),[5.805]→[5.1712:1864](∅→∅),[5.1864]→[5.947:1001](∅→∅),[5.947]→[5.947:1001](∅→∅),[5.1001]→[5.1865:2003](∅→∅),[5.2003]→[5.1124:1139](∅→∅),[5.1124]→[5.1124:1139](∅→∅),[5.1139]→[5.2004:2095](∅→∅),[5.2095]→[5.1220:1292](∅→∅),[5.1220]→[5.1220:1292](∅→∅)
if lines[cursor_line].mode == 'text' thencursor_pos = #lines[cursor_line].data+1elsecursor_pos = 1endelseif cursor_pos > 1 thenlocal byte_start = utf8.offset(lines[cursor_line].data, cursor_pos-1)local byte_end = utf8.offset(lines[cursor_line].data, cursor_pos)if byte_start thenif byte_end thenlines[cursor_line].data = string.sub(lines[cursor_line].data, 1, byte_start-1)..string.sub(lines[cursor_line].data, byte_end)elselines[cursor_line].data = string.sub(lines[cursor_line].data, 1, byte_start-1)endcursor_pos = cursor_pos-1endend - replacement in main.lua at line 580
if cursor_line > 1 thenif lines[cursor_line].mode == 'text' and lines[cursor_line-1].mode == 'text' thenlocal old_x = cursor_x(lines[cursor_line].data, cursor_pos)cursor_line = cursor_line-1assert(lines[cursor_line].mode == 'text')local new_cursor_line = cursor_linewhile new_cursor_line > 1 donew_cursor_line = new_cursor_line-1if lines[new_cursor_line].mode == 'text' thenlocal old_x = cursor_x(lines[new_cursor_line].data, cursor_pos)cursor_line = new_cursor_line - replacement in main.lua at line 588
elsecursor_line = cursor_line-1break - replacement in main.lua at line 592
if cursor_line < #lines thenif lines[cursor_line].mode == 'text' and lines[cursor_line+1].mode == 'text' thenlocal old_x = cursor_x(lines[cursor_line].data, cursor_pos)cursor_line = cursor_line+1assert(lines[cursor_line].mode == 'text')local new_cursor_line = cursor_linewhile new_cursor_line < #lines donew_cursor_line = new_cursor_line+1if lines[new_cursor_line].mode == 'text' thenlocal old_x = cursor_x(lines[new_cursor_line].data, cursor_pos)cursor_line = new_cursor_line - replacement in main.lua at line 600
elsecursor_line = cursor_line+1break