(defun (flash $old-spt (save-window-excursion (delete-other-windows) (do-flash) ) )) (defun (do-flash $k $up $spurt (switch-to-buffer "flash") (draw) ; put enough whitespace at top to leave 12 lines visible at bottom (beginning-of-file) (provide-prefix-argument (- (window-height) 12) (insert-character '\n') ) (setq-default &tip (dot)) (setq $k 140) (while (-- $k) ; move faster during last iterations (if (! (% $k (if (< $k 90) 7 11))) (setq $up (! $up)) ) ; use last few iterations to pull out (if (< $k 10) (setq $up 0)) ; only spurt during the middle iterations (setq $spurt (& (< $k 60) (> $k 15) (> (% $k 16) 7))) (beginning-of-file) (sit-for 0) (nuke-line) (goto-character &tip) (if $up (progn (previous-line) (nuke-line) ) (stream) ) (stream) (setq &tip (dot)) ) (beginning-of-file) )) ; generate nonblank line '*' if $spurt is true, else blank line (defun (stream (if $spurt (insert-string " *") ) (newline) )) ; delete the current line including its terminating newline (defun (nuke-line (beginning-of-line) (if (! (looking-at "^\n")) (kill-to-end-of-line)) (delete-next-character) )) (defun (draw (erase-buffer) (insert-string " /-----\\\n" " + \\\n" " | \\\n" " | +/\n" " | |\n" " | |\n" " | |\n" " | |\n" " | |\n" " | |\n" " | |\n" " | |\n" " | |\n" " | |\n" " | |\n" " | |\n" ) ))