switch to a single global output editor

akkartik
Jan 1, 2024, 6:51 AM
Q4CJ4WWUFEW46IA4IWVQZAWW2RS2SO7UDYIXYPPHMBVSK5ZJYJRAC

Dependencies

  • [2] QG25UE3S bugfix: typo X-(
  • [3] 5OCELN37 bugfix in output editor wrapping
  • [4] OTJQKAQZ bugfix: update output font (and menus)
  • [5] 6RYG2FQJ switch all handlers to run either the app or editor
  • [6] 3DRVHB7C run script on startup; new button to switch to source editor
  • [7] VLTU33KW resolve conflicts
  • [8] AVTNUQYR basic test-enabled framework
  • [9] IP4LD33D mouse events for scrollbar
  • [10] WR2WMEPE implement 'Run' button
  • [11] QLJY3CKC bugfix: use border color in scrollbars
  • [12] PUXFYOQ4 rename a function
  • [13] GFBOJWNE resolve conflicts
  • [14] YV2GBDNW preserve settings across restart
  • [15] NVZTMKER partition handlers between screen regions
  • [16] 2L5MEZV3 experiment: new edit namespace
  • [17] VHUNJHXB Merge lines.love
  • [18] 7SJHYHMB clean up the setFont gotcha
  • [19] CMZDG7CJ bugfix: tapping in scrollbar area
  • [20] 72OBZ3VM bundle support for .wav files
  • [21] RSZD5A7G forgot to add json.lua
  • [22] VXORMHME delete experimental REPL
  • [23] PJ5PQAQE record support for multiple versions
  • [24] 4SR3Z4Y3 document the version of LÖVE I've been using
  • [25] 5MEJ7XNH lay out buttons based on device dimensions
  • [26] W4EQ6IW4 simplify state management for menus
  • [27] BULPIBEG beginnings of a module for the text editor
  • [28] VHQCNMAR several more modules
  • [29] 73OCE2MC after much struggle, a brute-force undo
  • [30] SW5GN5LP suggest a default layout for freewheeling apps
  • [31] MZ3DMYPD start sketching out a scrollbar
  • [32] E75L5QGU ok/cancel buttons in file dialog
  • [33] 3PSFWAIL Merge lines.love
  • [34] EZHO4TSW new file-system format for freewheeling apps
  • [35] 6LJZN727 handle chords
  • [36] 2CEAF7YR resolve conflicts
  • [37] LXTTOB33 extract a couple of files
  • [38] 4GX6NAY4 some very basic animations for switching panes
  • [39] 5RUFNRJO start of the visual skeleton
  • [40] ZENSSO3D pass remaining love handlers through
  • [41] RU4HIK43 Merge lines.love
  • [42] W3RRTO4P extract a second helper for buttons
  • [43] HVXZLNCC send errors from event handlers to output editor
  • [44] KKQKPGCI resolve conflicts
  • [45] JV27LDDK sliders for font size and color settings
  • [46] ZM7NOBRM new fork: carousel shell
  • [47] VAVXKWZV aggregate global state inside a 'pane' object
  • [48] TFUNIT6M resolve conflicts
  • [49] 5LN2NUSE resolve conflicts
  • [50] JOPVPUSA editing source code from within the app
  • [51] KMSL74GA support selections in the source editor
  • [52] UEG224LH debug animations
  • [53] 7D7J5J4X append errors to output buffer
  • [54] D43U7GQ4 alter on-disk representation (manifest files)
  • [55] ZLJYLPOT Merge lines.love
  • [56] Z5M23NTK implement second, 'output' editor
  • [57] RK2ASPN7 add lots of buttons to the toolbar
  • [58] 36Z442IV back to commit 8123959e52f without code editing
  • [59] SJXIMERS type out a filename to load/save
  • [60] LGIEVJE6 activate buttons for some time
  • [61] VVGWHJBZ fix app identity so successive versions share data
  • [62] ADXY3K5Z wire up new-style car.* handlers
  • [63] CZQ3NJ4N Merge text0
  • [64] FM5LDKGT Merge text.love
  • [65] ROYQO45B mount old location of screens if possible
  • [66] URM35DJS rip out the canvas
  • [67] OGUV4HSA remove some memory leaks from rendered fragments
  • [68] 6VJTQKW7 start supporting LÖVE v12
  • [69] VP5KC4XZ Merge lines.love
  • [70] 57HKHZ7Z include the tool that's mentioned in representation.md
  • [71] VUF2SX7B implement carousel buttons for inserting/switching current pane
  • [72] 6RYGW5H3 bugfix: output border color
  • [73] RBWTXOQS get rid of example screens
  • [74] I52S4E5F running `print` now appends to output editor
  • [75] 2DVVKKVA flesh out Readme
  • [76] OGDDLU5B close all menus when tapping any button
  • [77] FS2ITYYH record a known issue
  • [78] 3QNOKBFM beginnings of a test harness
  • [79] ED4Z6ORC cleaner API for file-system access
  • [80] 5OVKHVY6 nice way to make on.* handlers more discoverable
  • [81] LXR2FNDC resolve conflicts
  • [82] FIUQJVL2 first draft of load/save buttons
  • [83] OOSUBWKX subject people to a tutorial
  • [84] LWPFEZBI Merge lines.love
  • [85] K2X6G75Z start writing some tests for drawings
  • [86] MMNPQU6X delete some unused code
  • [87] SGMA5JLE save the list of tests in repo
  • [88] QMRQL2FO resolve conflicts
  • [89] D2GCFTTT clean up repl functionality
  • [90] XX7G2FFJ intermingle freehand line drawings with text
  • [91] GVX7YSQY initial script after splitting up text-zoom
  • [92] PRE6XPRN responsively increase/decrease font height
  • [93] G42WRYFR new handler: mousemoved
  • [94] SIASJPGR save the list of open files across restart
  • [95] RJPNFXVQ new fork: a personal dashboard for mobile devices
  • [96] CE4LZV4T drop last couple of manual tests
  • [97] N2NUGNN4 include a brief reference enabling many useful apps
  • [98] VXRYVZ74 Merge text.love
  • [99] ESOJS6ZW extract a function
  • [100] 6MQCFHXM remember when someone deletes an example
  • [101] KKMFQDR4 editing source code from within the app
  • [102] OL7ZCZWD Merge text.love
  • [103] OE26XIQO bring back syntax highlighting (but so ugly)
  • [104] T4FRZSYL delete an ancient, unused file
  • [105] CAG7PP5Y Merge text.love
  • [106] ORKN6EOB Merge lines.love
  • [107] TVCPXAAU rename
  • [108] 4YDBYBA4 clean up memory leak experiments
  • [109] Q6RXCILQ Merge text.love
  • [110] YK5FRJWH print to output buffer in all callbacks
  • [111] PN6VP3LV escape hatch when print is overridden
  • [112] 2CFLXLIE Merge text.love
  • [113] OTIBCAUJ love2d scaffold
  • [114] 6DJMOJKE support event handlers
  • [115] VSGPLJFA resolve conflicts
  • [116] 2Q437U4F starting to experiment with animated pane transitions
  • [117] 4QFVRJ5U get rid of pane transition animations
  • [118] UUAIVZ4U 2 bugfixes in font rendering
  • [119] VEAVIL4X resize handler
  • [120] WICFZ4UZ 'clear' button now clears the entire pane
  • [121] XJX53BE3 bugfix: catch errors in mouse_press handlers
  • [122] OC4P6P36 greatly simplify slider implementation
  • [123] BJ5X5O4A let's prevent the text cursor from ever getting on a drawing
  • [124] BLWAYPKV extract a module
  • [125] TBTRYEBP Merge lines.love
  • [126] EHKB76GO UI improvement: more stable scrollbar movement
  • [127] 7JEYXICU resolve conflicts
  • [128] TLOAPLBJ add a license
  • [129] 66X36NZN a little more prose describing manual_tests
  • [130] LRDM35CE app running again
  • [131] LRG2TNA7 screens now run
  • [132] YT7NMQ6Z delete dead code
  • [133] R5QXEHUI somebody stop me
  • [134] SIJ5I4NZ extract a helper for buttons
  • [135] QD4LOFQR Merge text.love
  • [136] GWLETNMW Mike's suggested button layout
  • [137] 47VXAH2H delete some old code

Change contents

  • file deletion: 0075-clear_pane (----------)
    [7.2][7.904:943](),[7.943][7.674:674]()
    clear_pane = function()
    edit.clear(Current_pane.editor_state)
    edit.clear(Current_pane.output_editor_state)
    end
  • file deletion: 0074-clear_pane_button (----------)
    [7.2][7.1314:1360](),[7.1360][7.945:945]()
    clear_pane_button = function(x, y, r)
    return overflowable_button('clear', x, y, r,
    function()
    Show_menu = nil
    clear_pane()
    end)
    end
  • replacement in conf.lua at line 2
    [7.24][7.18:40]()
    t.identity = 'dash'
    [7.24]
    [7.50]
    t.identity = 'dash2'
  • file addition: 0162-Output_editor_state (----------)
    [7.2]
    Output_editor_state = nil
  • replacement in 0160-run_app at line 4
    [6.166][6.166:212]()
    edit.clear(Current_pane.output_editor_state)
    [6.166]
    [6.212]
    edit.clear(Output_editor_state)
  • replacement in 0160-run_app at line 14
    [6.407][6.407:523]()
    -- could be either output or error
    table.insert(Current_pane.output_editor_state.lines, {data=tostring(error)})
    [6.407]
    [6.523]
    table.insert(Output_editor_state.lines, {data=tostring(error)})
  • replacement in 0160-run_app at line 16
    [6.528][6.528:648]()
    if #Current_pane.output_editor_state.lines == 0 then
    table.insert(Current_pane.output_editor_state.lines, {data=''})
    [6.528]
    [6.648]
    if #Output_editor_state.lines == 0 then
    table.insert(Output_editor_state.lines, {data=''})
  • replacement in 0160-run_app at line 19
    [6.653][6.653:704]()
    Text.redraw_all(Current_pane.output_editor_state)
    [6.653]
    [6.704]
    Text.redraw_all(Output_editor_state)
  • replacement in 0114-update_output_editor at line 1
    [7.50][7.51:363]()
    update_output_editor = function(pane)
    pane.output_editor_state.top = pane.editor_state.bottom+5+10+5
    pane.output_editor_state.right = pane.editor_state.right
    pane.output_editor_state.width = pane.editor_state.width
    pane.output_editor_state.bottom = Safe_height - 5
    Text.redraw_all(pane.output_editor_state)
    [7.50]
    [7.363]
    update_output_editor = function()
    Output_editor_state.top = Current_pane.editor_state.bottom+5+10+5
    Output_editor_state.right = Current_pane.editor_state.right
    Output_editor_state.width = Current_pane.editor_state.width
    Output_editor_state.bottom = Safe_height - 5
    Text.redraw_all(Output_editor_state)
  • replacement in 0102-send_errors_to_output at line 4
    [7.768][7.70:233](),[3.29][7.842:893](),[7.233][7.842:893](),[7.842][7.842:893](),[7.893][7.234:308]()
    table.insert(Current_pane.output_editor_state.lines, {data=''})
    Current_pane.output_editor_state.cursor1 = {line=#Current_pane.output_editor_state.lines, pos=1}
    Text.redraw_all(Current_pane.output_editor_state)
    Text.insert_text(Current_pane.output_editor_state, error_with_callstack)
    [7.768]
    [6.1781]
    table.insert(Output_editor_state.lines, {data=''})
    Output_editor_state.cursor1 = {line=#Output_editor_state.lines, pos=1}
    Text.redraw_all(Output_editor_state)
    Text.insert_text(Output_editor_state, error_with_callstack)
  • replacement in 0101-on.mouse_wheel_move at line 13
    [5.329][5.329:395]()
    edit.mouse_wheel_move(Current_pane.output_editor_state, dx,dy)
    [5.329]
    [5.395]
    edit.mouse_wheel_move(Output_editor_state, dx,dy)
  • replacement in 0050-print_to_output at line 3
    [7.1497][7.1497:1551]()
    table.insert(Current_pane.output_editor_state.lines,
    [7.1497]
    [7.1551]
    table.insert(Output_editor_state.lines,
  • replacement in 0050-print_to_output at line 5
    [3.59][7.190:241](),[7.1566][7.190:241]()
    Text.redraw_all(Current_pane.output_editor_state)
    [7.1566]
    [7.1566]
    Text.redraw_all(Output_editor_state)
  • replacement in 0049-new_pane at line 2
    [7.24][7.24:43](),[7.43][7.7583:7697](),[7.7697][7.634:649](),[7.634][7.634:649]()
    local result = {}
    result.editor_state = code_editor_state()
    result.output_editor_state = output_editor_state(result.editor_state)
    return result
    [7.24]
    [7.649]
    return {editor_state = code_editor_state()}
  • edit in 0045-Current_pane at line 3
    [7.157][7.157:185]()
    output_editor_state = nil,
  • edit in 0032-update_font_settings at line 19
    [7.1113][4.237:304](),[4.304][7.367:396](),[7.1113][7.367:396]()
    edit.update_font_settings(pane.output_editor_state, Font_height)
    update_output_editor(pane)
  • edit in 0032-update_font_settings at line 20
    [7.1118]
    [7.662]
    edit.update_font_settings(Output_editor_state, Font_height)
    update_output_editor()
  • replacement in 0017-on.mouse_release at line 31
    [7.848][7.848:1024](),[7.1024][7.129:188](),[7.188][7.1024:1159](),[7.1024][7.1024:1159]()
    elseif Current_pane.output_editor_state.scrollbar_drag then
    adjust_scrollbar(Current_pane.output_editor_state, y)
    Current_pane.output_editor_state.scrollbar_drag = nil
    Current_pane.output_editor_state.scrollbar_offset = nil
    elseif on_editor_scrollbar_area(Current_pane.output_editor_state, x,y) then
    adjust_scrollbar(Current_pane.output_editor_state, y)
    [7.848]
    [7.1159]
    elseif Output_editor_state.scrollbar_drag then
    adjust_scrollbar(Output_editor_state, y)
    Output_editor_state.scrollbar_drag = nil
    Output_editor_state.scrollbar_offset = nil
    elseif on_editor_scrollbar_area(Output_editor_state, x,y) then
    adjust_scrollbar(Output_editor_state, y)
  • replacement in 0016-on.mouse_press at line 43
    [7.1762][7.1762:1893](),[7.1893][7.473:548](),[7.548][2.142:208](),[2.208][7.1893:1971](),[7.444][7.1893:1971](),[7.1893][7.1893:1971]()
    elseif on_editor_scrollbar(Current_pane.output_editor_state, x,y) then
    Current_pane.output_editor_state.scrollbar_drag = true
    local sbtopy = compute_scrollbar_topy(Current_pane.output_editor_state)
    Current_pane.output_editor_state.scrollbar_offset = y - sbtopy
    elseif on_editor_scrollbar_area(Current_pane.output_editor_state, x,y) then
    [7.1762]
    [7.1971]
    elseif on_editor_scrollbar(Output_editor_state, x,y) then
    Output_editor_state.scrollbar_drag = true
    local sbtopy = compute_scrollbar_topy(Output_editor_state)
    Output_editor_state.scrollbar_offset = y - sbtopy
    elseif on_editor_scrollbar_area(Output_editor_state, x,y) then
  • replacement in 0012-on.draw at line 24
    [7.8439][7.6087:6175](),[7.6175][7.8523:8574](),[7.8523][7.8523:8574]()
    edit.draw(Current_pane.output_editor_state, Foreground_color, --[[hide cursor]] true)
    draw_scrollbar(Current_pane.output_editor_state)
    [7.8439]
    [5.2976]
    edit.draw(Output_editor_state, Foreground_color, --[[hide cursor]] true)
    draw_scrollbar(Output_editor_state)
  • edit in 0011-on.initialize at line 22
    [7.1180]
    [6.1876]
    Output_editor_state = output_editor_state(Current_pane.editor_state)
  • replacement in 0004-on.update at line 15
    [5.3452][5.3452:3583]()
    elseif Current_pane.output_editor_state.scrollbar_drag then
    adjust_scrollbar(Current_pane.output_editor_state, App.mouse_y())
    [5.3452]
    [5.3583]
    elseif Output_editor_state.scrollbar_drag then
    adjust_scrollbar(Output_editor_state, App.mouse_y())