resolve conflicts

akkartik
Nov 12, 2025, 7:02 PM
PT7ICD7ZAB4IT6K5B4LURL5LUXHSN4ML5YWCG52YFLE2IBNZ53UAC

Dependencies

  • [2] ZC7UBMKI pijul bug
  • [3] G2LAMLBU resolve conflicts
  • [4] K55LM3DP resolve conflicts
  • [5] BKX2TYUG use cmd key on Mac OS for some idiomatic shortcuts
  • [6] GYPLUBXN add idiomatic home/end on Mac OS
  • [7] 4SR3Z4Y3 document the version of LÖVE I've been using
  • [8] CQVWNL4M resolve conflicts
  • [9] 7YGYHOEO Merge lines.love
  • [10] UUTUPEOJ extract a function
  • [11] SGMA5JLE save the list of tests in repo
  • [12] HWTLXESC Merge lines.love
  • [13] 2JBAEQHU Merge lines.love
  • [14] LWPFEZBI Merge lines.love
  • [15] 66X36NZN a little more prose describing manual_tests
  • [16] ZLJYLPOT Merge lines.love
  • [17] ATQO62TF Merge lines.love
  • [18] BH7BT36L ctrl+a: select entire buffer
  • [19] LXTTOB33 extract a couple of files
  • [20] O4RRXNOK bugfix: disallow font size of 0
  • [21] AVTNUQYR basic test-enabled framework
  • [22] LNUHQOGH start passing in Editor_state explicitly
  • [23] G54H3YG2 get rid of all bifold text
  • [24] XX7G2FFJ intermingle freehand line drawings with text
  • [25] RU4HIK43 Merge lines.love
  • [26] FPY4LO2W make a few names consistent with snake_case
  • [27] ORKN6EOB Merge lines.love
  • [28] MBAJPTDJ resolve conflicts
  • [29] 3QNOKBFM beginnings of a test harness
  • [30] 7ZXZGVHM purge obsolete term 'fragment'
  • [31] OXIU3SJ2 bugfix #3, attempt #2 in search UI
  • [32] S2MISTTM add state arg to a few functions
  • [33] F4RUTOND split up editor tests between LÖVE 11 and LÖVE 12
  • [34] MHOUX5JF experiment: turn off JIT
  • [35] K2X6G75Z start writing some tests for drawings
  • [36] D4B52CQ2 Merge lines.love
  • [37] VXORMHME delete experimental REPL
  • [38] JKENJ2UG Merge lines.love
  • [39] TLOAPLBJ add a license
  • [40] VHQCNMAR several more modules
  • [41] 2L5MEZV3 experiment: new edit namespace
  • [42] N2NUGNN4 include a brief reference enabling many useful apps
  • [43] FHZ5AG3M resolve conflicts
  • [44] JOPVPUSA editing source code from within the app
  • [45] UZQ2LGHQ bugfix: preserve window position
  • [46] TVCPXAAU rename
  • [47] LF7BWEG4 group all editor globals
  • [48] CE4LZV4T drop last couple of manual tests
  • [49] UTDSCN3G Merge lines.love
  • [50] MTJEVRJR add state arg to a few functions
  • [51] VP5KC4XZ Merge lines.love
  • [52] OGUV4HSA remove some memory leaks from rendered fragments
  • [53] KFEUQWHX resolve conflicts
  • [54] 6PRGXS6X bugfix #3 in search UI
  • [55] VHUNJHXB Merge lines.love
  • [56] 6LJZN727 handle chords
  • [57] TMWSQNZD bugfix in source editor: don't clear selection on M-arrow
  • [58] R5QXEHUI somebody stop me
  • [59] FYJXSWXV resolve conflicts
  • [60] S7CSVBHZ resolve conflicts
  • [61] 5ZA3BRNY add state arg to a few functions
  • [62] 5RDWSYK2 consistently use App names for methods everywhere
  • [63] 4J3Y3DJW pijul bug: redo upstream change
  • [64] H6QZ7GRR more precise name
  • [65] FBBHEUQN resolve conflicts
  • [66] ED4Z6ORC cleaner API for file-system access
  • [67] KKMFQDR4 editing source code from within the app
  • [68] SCOXD4EO Merge lines.love
  • [69] T42Y5MLO explicitly specify app name
  • [70] T4FRZSYL delete an ancient, unused file
  • [71] 5GHT3LUX copy correct warning message
  • [72] 73OCE2MC after much struggle, a brute-force undo
  • [73] JZR3QMTN Merge lines.love
  • [74] WKXJNESI resolve conflicts
  • [75] GX236KZG Revert "deemphasize the source editor"
  • [76] 3XNFQDDN Merge lines.love
  • [77] 4FTOQOPZ bugfix #2 in search UI
  • [78] YXQOITYS Merge lines.love
  • [79] OTIBCAUJ love2d scaffold
  • [80] TFUNIT6M resolve conflicts
  • [81] Z3IQ6A4R bugfix
  • [82] Z3BQO2RK typo
  • [83] QCPXQ2E3 add state arg to a few functions
  • [84] S3PNFXTB handle missing cursors in settings
  • [85] 2CTN2IEF Merge lines.love
  • [86] GVJEOWYQ resolve conflicts
  • [87] QMRQL2FO resolve conflicts
  • [88] FS2ITYYH record a known issue
  • [89] VZPH3XJK update source editor
  • [90] TYLURRX3 resolve conflicts
  • [91] A42EMHOQ plumb through all supported args in LÖVE handlers
  • [92] 2TQUKHBC Merge lines.love
  • [93] VPRGENLA hide some details within the 'warning' state
  • [94] QZUFJMD5 resolve conflicts
  • [95] KKQKPGCI resolve conflicts
  • [96] JUU6KXPC bugfix: don't clear selection on M-arrow
  • [97] RUB7L6GY resolve conflicts
  • [98] RXMHAZ6V resolve conflicts
  • [99] RSZD5A7G forgot to add json.lua
  • [100] PTDO2SOT add state arg to schedule_save
  • [101] CRBLAWBO resolve conflicts
  • [102] PV2YA7KS subsection headings in a long switch
  • [103] 6TBU3VTN explicitly state when operations manage undo
  • [104] BLWAYPKV extract a module
  • [105] EVMVBLXD bugfix: preserve window position
  • [106] 4YDBYBA4 clean up memory leak experiments
  • [107] KMSL74GA support selections in the source editor
  • [108] Z2VZTIXY redo version checks
  • [109] BJ5X5O4A let's prevent the text cursor from ever getting on a drawing
  • [110] 2EELKVO2 resolve conflicts
  • [111] D2GCFTTT clean up repl functionality
  • [112] OB5XOXVC deemphasize the source editor
  • [113] BULPIBEG beginnings of a module for the text editor
  • [114] 3PSFWAIL Merge lines.love
  • [115] SDO4DHNU source: load cursor position from settings
  • [116] 2CK5QI7W make love event names consistent
  • [117] WK6UK5AJ enhance bugfix of commit a9aa3436f (Dec 2024)
  • [118] R2ASHK5C fix a bad merge
  • [119] 6VJTQKW7 start supporting LÖVE v12
  • [*] YGCT2D2O start loading settings as applicable

Change contents

  • file deletion: source_text.lua (----------)source_text.lua (----------)
    [7.2][7.147062:147101](),[7.2][7.147062:147101](),[7.147101][7.83723:83723]()
    elseif chord == 'home' or (OS == 'OS X' and chord == 's-left') then
    elseif chord == 'end' or (OS == 'OS X' and chord == 's-right') then
    Text.end_of_line(State)
    Text.start_of_line(State)
  • file deletion: source_edit.lua (----------)source_edit.lua (----------)
    [7.2][7.165725:165764](),[7.2][7.165725:165764](),[7.165764][7.152440:152440]()
    local dm = App.default_modifier
    chord ~= dm('a') and chord ~= dm('c') and chord ~= dm('x') and chord ~= 'backspace' and chord ~= 'delete' and chord ~= dm('z') and chord ~= dm('y') and not App.is_cursor_movement(key) then
    elseif chord == dm('f') then
    elseif chord == dm('=') then
    elseif chord == dm('-') then
    elseif chord == dm('0') then
    elseif chord == dm('z') then
    elseif chord == dm('y') then
    elseif chord == dm('a') then
    elseif chord == dm('c') then
    elseif chord == dm('x') then
    elseif chord == dm('v') then
    -- We don't have a good sense of when to scroll, so we'll be conservative
    -- and sometimes scroll when we didn't quite need to.
    local before_line = State.cursor1.line
    local before = snapshot(State, before_line)
    local s = Text.cut_selection_and_record_undo_event(State)
    local s = Text.selection(State)
    if s then
    State.selection1 = {line=1, pos=1}
    local event = redo_event(State)
    if event then
    local src = event.after
    State.screen_top1 = deepcopy(src.screen_top)
    State.cursor1 = deepcopy(src.cursor)
    local event = undo_event(State)
    if event then
    local src = event.before
    State.screen_top1 = deepcopy(src.screen_top)
    State.cursor1 = deepcopy(src.cursor)
    edit.update_font_settings(State, 20)
    Text.redraw_all(State)
    -- undo
    if State.font_height > 2 then
    edit.update_font_settings(State, State.font_height-2)
    Text.redraw_all(State)
    end
    edit.update_font_settings(State, State.font_height+2)
    Text.redraw_all(State)
    State.search_term = ''
    State.search_backup = {
    Text.delete_selection_and_record_undo_event(State)
    if State.selection1.line and
    not State.lines.current_drawing and
    -- printable character created using shift key => delete selection
    -- (we're not creating any ctrl-shift- or alt-shift- combinations using regular/printable keys)
    (not App.shift_down() or utf8.len(key) == 1) and
  • file deletion: source.lua (----------)source.lua (----------)
    [7.2][7.177652:177686](),[7.2][7.177652:177686](),[7.177686][7.165766:165766]()
    if OS == 'Linux' then
    -- love.window.setPosition doesn't quite seem to do what is asked of it on Linux.
    App.screen.move(settings.x, settings.y-37, settings.displayindex)
    else
    App.screen.move(settings.x, settings.y, settings.displayindex)
    end
  • file deletion: run.lua (----------)run.lua (----------)
    [7.2][7.184046:184077](),[7.2][7.184046:184077](),[7.184077][7.178044:178044]()
    if OS == 'Linux' then
    -- love.window.setPosition doesn't quite seem to do what is asked of it on Linux.
    App.screen.move(settings.x, settings.y-37, settings.displayindex)
    else
    App.screen.move(settings.x, settings.y, settings.displayindex)
    end
  • replacement in source_text.lua at line 389
    [7.106063][7.106063:106093]()
    elseif chord == 'home' then
    [7.106063]
    [7.106093]
    elseif chord == 'home' or (OS == 'OS X' and chord == 's-left') then
  • replacement in source_text.lua at line 392
    [7.22256][7.106123:106152](),[7.106123][7.106123:106152]()
    elseif chord == 'end' then
    [7.22256]
    [7.106152]
    elseif chord == 'end' or (OS == 'OS X' and chord == 's-right') then
  • edit in source_edit.lua at line 398
    [7.455]
    [7.25356]
    local dm = App.default_modifier
  • replacement in source_edit.lua at line 404
    [7.25659][7.8283:8468]()
    chord ~= 'C-a' and chord ~= 'C-c' and chord ~= 'C-x' and chord ~= 'backspace' and chord ~= 'delete' and chord ~= 'C-z' and chord ~= 'C-y' and not App.is_cursor_movement(key) then
    [7.25659]
    [7.173]
    chord ~= dm('a') and chord ~= dm('c') and chord ~= dm('x') and chord ~= 'backspace' and chord ~= 'delete' and chord ~= dm('z') and chord ~= dm('y') and not App.is_cursor_movement(key) then
  • replacement in source_edit.lua at line 433
    [7.159233][7.159233:159262]()
    elseif chord == 'C-f' then
    [7.159233]
    [7.159262]
    elseif chord == dm('f') then
  • replacement in source_edit.lua at line 440
    [7.160465][7.160465:160494]()
    elseif chord == 'C-=' then
    [7.160465]
    [7.160494]
    elseif chord == dm('=') then
  • replacement in source_edit.lua at line 443
    [7.160579][7.160579:160608]()
    elseif chord == 'C--' then
    [7.160579]
    [7.9553]
    elseif chord == dm('-') then
  • replacement in source_edit.lua at line 448
    [7.9684][7.160693:160722](),[7.160693][7.160693:160722]()
    elseif chord == 'C-0' then
    [7.9684]
    [7.160722]
    elseif chord == dm('0') then
  • replacement in source_edit.lua at line 452
    [7.160800][7.160800:160829]()
    elseif chord == 'C-z' then
    [7.160800]
    [7.160936]
    elseif chord == dm('z') then
  • replacement in source_edit.lua at line 465
    [7.161374][7.161374:161403]()
    elseif chord == 'C-y' then
    [7.161374]
    [7.161510]
    elseif chord == dm('y') then
  • replacement in source_edit.lua at line 479
    [7.161892][7.165:194]()
    elseif chord == 'C-a' then
    [7.161892]
    [7.194]
    elseif chord == dm('a') then
  • replacement in source_edit.lua at line 482
    [7.331][7.161892:161921](),[7.9773][7.161892:161921](),[7.161892][7.161892:161921]()
    elseif chord == 'C-c' then
    [7.9773]
    [7.161921]
    elseif chord == dm('c') then
  • replacement in source_edit.lua at line 487
    [7.162009][7.162009:162038]()
    elseif chord == 'C-x' then
    [7.162009]
    [7.229]
    elseif chord == dm('x') then
  • replacement in source_edit.lua at line 493
    [7.162287][7.162287:162316]()
    elseif chord == 'C-v' then
    [7.162287]
    [7.162423]
    elseif chord == dm('v') then
  • replacement in source.lua at line 144
    [7.425][7.125:158](),[7.125][7.125:158](),[7.158][7.426:450]()
    local os = love.system.getOS()
    if os == 'Linux' then
    [7.425]
    [7.450]
    if OS == 'Linux' then
  • replacement in run.lua at line 71
    [7.1916][7.1916:1973]()
    local os = love.system.getOS()
    if os == 'Linux' then
    [7.1916]
    [7.1973]
    if OS == 'Linux' then
  • edit in main.lua at line 82
    [121.611]
    [7.186281]
    OS = love.system.getOS()
  • edit in main.lua at line 397
    [7.155][7.2741:2741](),[7.298][5.625:653](),[7.298][5.625:653](),[7.298][5.625:653]()
    OS = love.system.getOS()
  • resolve order conflict in main.lua at line 397
    [7.155]
  • edit in edit.lua at line 263
    [7.3203]
    [7.5508]
    local dm = App.default_modifier
  • replacement in edit.lua at line 268
    [7.5769][7.4935:5120]()
    chord ~= 'C-a' and chord ~= 'C-c' and chord ~= 'C-x' and chord ~= 'backspace' and chord ~= 'delete' and chord ~= 'C-z' and chord ~= 'C-y' and not App.is_cursor_movement(key) then
    [7.5769]
    [7.309]
    chord ~= dm('a') and chord ~= dm('c') and chord ~= dm('x') and chord ~= 'backspace' and chord ~= 'delete' and chord ~= dm('z') and chord ~= dm('y') and not App.is_cursor_movement(key) then
  • replacement in edit.lua at line 297
    [7.6956][7.6956:6985]()
    elseif chord == 'C-f' then
    [7.6956]
    [7.6985]
    elseif chord == dm('f') then
  • replacement in edit.lua at line 304
    [7.7194][7.7194:7223]()
    elseif chord == 'C-=' then
    [7.7194]
    [7.7223]
    elseif chord == dm('=') then
  • replacement in edit.lua at line 307
    [7.7308][7.7308:7337]()
    elseif chord == 'C--' then
    [7.7308]
    [7.7337]
    elseif chord == dm('-') then
  • replacement in edit.lua at line 312
    [7.7468][7.7468:7497]()
    elseif chord == 'C-0' then
    [7.7468]
    [7.7497]
    elseif chord == dm('0') then
  • replacement in edit.lua at line 316
    [7.7575][7.7575:7604]()
    elseif chord == 'C-z' then
    [7.7575]
    [7.7711]
    elseif chord == dm('z') then
  • replacement in edit.lua at line 327
    [7.8198][7.8198:8227]()
    elseif chord == 'C-y' then
    [7.8198]
    [7.8334]
    elseif chord == dm('y') then
  • replacement in edit.lua at line 339
    [7.8765][7.8765:8794]()
    elseif chord == 'C-a' then
    [7.8765]
    [7.8794]
    elseif chord == dm('a') then
  • replacement in edit.lua at line 342
    [7.8921][7.8921:8950]()
    elseif chord == 'C-c' then
    [7.8921]
    [7.8950]
    elseif chord == dm('c') then
  • replacement in edit.lua at line 347
    [7.9035][7.9035:9064]()
    elseif chord == 'C-x' then
    [7.9035]
    [7.365]
    elseif chord == dm('x') then
  • replacement in edit.lua at line 353
    [7.9310][7.9310:9339]()
    elseif chord == 'C-v' then
    [7.9310]
    [7.9446]
    elseif chord == dm('v') then
  • edit in edit.lua at line 450
    [7.12430][3.34:34](),[7.551][5.1484:1515](),[7.551][5.1484:1515](),[7.13403][5.1452:1483](),[7.13403][5.1452:1483](),[7.13403][5.1452:1483](),[7.657][5.1420:1451](),[7.657][5.1420:1451](),[7.13212][5.1388:1419](),[7.13212][5.1388:1419](),[7.12717][5.1356:1387](),[7.12717][5.1356:1387](),[7.36][5.1324:1355](),[7.36][5.1324:1355](),[7.289][5.1292:1323](),[7.289][5.1292:1323](),[7.6814][5.1260:1291](),[7.6814][5.1260:1291](),[7.25][5.1228:1259](),[7.25][5.1228:1259](),[7.11758][5.1196:1227](),[7.11758][5.1196:1227](),[7.10752][5.1000:1195](),[7.10752][5.1000:1195](),[7.10752][5.1000:1195](),[7.3715][5.965:999](),[7.3715][5.965:999](),[7.3715][5.965:999]()
    elseif chord == dm('v') then
    elseif chord == dm('x') then
    elseif chord == dm('c') then
    elseif chord == dm('a') then
    elseif chord == dm('y') then
    elseif chord == dm('z') then
    elseif chord == dm('0') then
    elseif chord == dm('-') then
    elseif chord == dm('=') then
    elseif chord == dm('f') then
    chord ~= dm('a') and chord ~= dm('c') and chord ~= dm('x') and chord ~= 'backspace' and chord ~= 'delete' and chord ~= dm('z') and chord ~= dm('y') and not App.is_cursor_movement(key) then
    local dm = App.default_modifier
  • resolve order conflict in edit.lua at line 450
    [7.12430]