make everything that changes state make a checkpoint.
2 files changed, 5 insertions(+), 3 deletions(-)

M sand.el
M todo.org
M sand.el +3 -2
@@ 209,6 209,7 @@ This can be anything -- a loose or fixed
 (defun sand/add-random-element ()
   "Add a random spawnable element somewhere on the board."
   (interactive)
+  (sand//checkpoint)
   (let* ((spot (sand//find-open-spot))
          (row (elt spot 0))
          (column (elt spot 1)))

          
@@ 237,9 238,9 @@ This can be anything -- a loose or fixed
     (define-key keymap (kbd "h")
       (lambda () (interactive) (sand//checkpoint) (sand//spawn-random-element row column) (sand/redisplay)))
     (define-key keymap (kbd "F")
-      (lambda (size) (interactive "NHow big is the funnel? ") (sand//add-funnel row column size) (sand/redisplay)))
+      (lambda (size) (interactive "NHow big is the funnel? ") (sand//checkpoint) (sand//add-funnel row column size) (sand/redisplay)))
     (define-key keymap (kbd "d")
-      (lambda (size going-left) (interactive "NHow big is the diagonal row? \nXGoing left (t or nil)? ") (sand//add-diagonal-angles row column size going-left) (sand/redisplay)))
+      (lambda (size going-left) (interactive "NHow big is the diagonal row? \nXGoing left (t or nil)? ") (sand//checkpoint) (sand//add-diagonal-angles row column size going-left) (sand/redisplay)))
     (maphash (lambda (thing representation)
                (define-key keymap (kbd representation)
                  (lambda () (interactive) (sand//checkpoint) (setf (sand//at row column) thing) (sand/redisplay))))

          
M todo.org +2 -1
@@ 100,4 100,5 @@ Like:
 CLOSED: [2023-01-04 Wed 00:44]
 * TODO expand tutorial with keys, more items.
 * TODO auto-size height of board for display size? We don't want to scroll off the bottom of the screen.
-* TODO make blanking board checkpoint state
+* DONE make blanking board checkpoint state
+CLOSED: [2023-01-09 Mon 23:48]