Skip to content

Instantly share code, notes, and snippets.

@kawabata
Forked from k0f1sh/zone-pgm-rainbow
Last active December 3, 2016 05:31
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kawabata/7366238 to your computer and use it in GitHub Desktop.
Save kawabata/7366238 to your computer and use it in GitHub Desktop.
;; zone-pgm-rainbow
(require 'zone)
(defvar zone-programs)
(defvar zpr-hue-factor 50)
(defvar zpr-sat 1.0)
(defvar zpr-light 0.5)
(defun zone-pgm-rainbow ()
(require 'color nil)
(cl-loop
while (not (input-pending-p))
with k = 0
do (cl-loop
for i from (window-start) to (1- (window-end))
do (add-text-properties
i (1+ i)
`(face ((foreground-color
. ,(apply 'color-rgb-to-hex
(color-hsl-to-rgb
(/ (* (% (+ i k) zpr-hue-factor) 1.0) zpr-hue-factor)
zpr-sat zpr-light)))))))
(sit-for 0.2)
(setq k (1+ k))))
(defun zone-choose (pgm)
"Choose a PGM to run for `zone'."
(interactive
(list
(completing-read
"Program: "
(mapcar 'symbol-name zone-programs))))
(let ((zone-programs (list (intern pgm))))
(zone)))
(defun zone-rainbow () (interactive)
(zone-choose "zone-pgm-rainbow"))
(run-with-idle-timer 90 nil 'zone-rainbow)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment