1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-27 07:37:33 +00:00

* lisp/play/zone.el (zone): Allow selecting a program

This commit is contained in:
Philip Kaludercic 2022-10-11 12:28:45 +02:00
parent b175a9fb7e
commit be1afa047f
No known key found for this signature in database
GPG Key ID: F2C3CC513DB89F66

View File

@ -103,9 +103,24 @@ If the element is a function or a list of a function and a number,
program))))
;;;###autoload
(defun zone ()
"Zone out, completely."
(interactive)
(defun zone (&optional pgm)
"Zone out, completely.
With a prefix argument the user is prompted for a program to run.
When called from Lisp the optional argument PGM can be used to
run a specific program. The program must be a member of
`zone-programs'."
(interactive
(and current-prefix-arg
(let ((choice (completing-read
"Program: "
(mapcar
(lambda (prog)
(substring (symbol-name prog) 9))
zone-programs)
nil t)))
(list (intern (concat "zone-pgm-" choice))))))
(unless pgm
(setq pgm (aref zone-programs (random (length zone-programs)))))
(save-window-excursion
(let ((f (selected-frame))
(outbuf (get-buffer-create "*zone*"))
@ -125,8 +140,7 @@ If the element is a function or a list of a function and a number,
(set-window-start (selected-window) (point-min))
(set-window-point (selected-window) wp)
(sit-for 0 500)
(let ((pgm (elt zone-programs (random (length zone-programs))))
(ct (and f (frame-parameter f 'cursor-type)))
(let ((ct (and f (frame-parameter f 'cursor-type)))
(show-trailing-whitespace nil)
restore)
(when ct