Dump
This commit is contained in:
parent
1ef93799d1
commit
2df9b96765
98 changed files with 30423 additions and 0 deletions
41
error-mode.fnl
Normal file
41
error-mode.fnl
Normal file
|
@ -0,0 +1,41 @@
|
|||
;; This mode has two purposes:
|
||||
;; * display the stack trace that caused the error
|
||||
;; * allow the user to decide whether to retry after reloading or quit
|
||||
|
||||
;; Since we can't know which module needs to be reloaded, we rely on the user
|
||||
;; doing a ,reload foo in the repl.
|
||||
|
||||
(local state {:msg "" :traceback "" :old-mode :intro})
|
||||
|
||||
(local explanation "Press escape to quit.
|
||||
Press space to return to the previous mode after reloading in the repl.")
|
||||
|
||||
(fn draw []
|
||||
(love.graphics.clear 0.34 0.61 0.86)
|
||||
(love.graphics.setColor 0.9 0.9 0.9)
|
||||
(love.graphics.print explanation 15 10)
|
||||
(love.graphics.print state.msg 10 60)
|
||||
(love.graphics.print state.traceback 15 125))
|
||||
|
||||
(fn keypressed [key set-mode]
|
||||
(match key
|
||||
:escape (love.event.quit)
|
||||
:space (set-mode state.old-mode)))
|
||||
|
||||
(fn color-msg [msg]
|
||||
;; convert compiler's ansi escape codes to love2d-friendly codes
|
||||
(case (msg:match "(.*)\027%[7m(.*)\027%[0m(.*)")
|
||||
(pre selected post) [[1 1 1] pre
|
||||
[1 0.2 0.2] selected
|
||||
[1 1 1] post]
|
||||
_ msg))
|
||||
|
||||
(fn activate [old-mode msg traceback]
|
||||
(love.graphics.setNewFont 16) ; use a monospace font here if you have one
|
||||
(print msg)
|
||||
(print traceback)
|
||||
(set state.old-mode old-mode)
|
||||
(set state.msg (color-msg msg))
|
||||
(set state.traceback traceback))
|
||||
|
||||
{: draw : keypressed : activate}
|
Loading…
Add table
Add a link
Reference in a new issue