diff options
Diffstat (limited to 'src/gizmo/wasp-cyclone.el')
| -rw-r--r-- | src/gizmo/wasp-cyclone.el | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/gizmo/wasp-cyclone.el b/src/gizmo/wasp-cyclone.el new file mode 100644 index 00000000..d7a0d02d --- /dev/null +++ b/src/gizmo/wasp-cyclone.el @@ -0,0 +1,41 @@ +;;; wasp-cyclone --- Gizmocycling -*- lexical-binding: t; -*- +;;; Commentary: +;;; Code: + +(require 'wasp-utils) +(require 'wasp-friend) +(require 'wasp-heartrate) +(require 'wasp-chatsummary) + +(defconst w/gizmo-buffer-names + (list + w/friend-buffer + w/heartrate-buffer + w/chatsummary-buffer)) + +(defvar w/gizmo-windows (list)) + +(defun w/gizmo-tag-window () + "Tag the current window as containing a gizmo." + (interactive) + (when-let ((w (selected-window))) + (add-to-list 'w/gizmo-windows w))) + +(defun w/gizmo-cycle-window (w) + "Cycle the gizmo in W." + (when-let* + ((cur (buffer-name (window-buffer w))) + (idx (--find-index (equal it cur) w/gizmo-buffer-names)) + (bufs (-non-nil (-map #'get-buffer w/gizmo-buffer-names))) + (nidx (mod (+ idx 1) (length bufs))) + (buf (nth nidx bufs))) + (set-window-buffer w buf))) + +(defun w/gizmo-cycle () + "Cycle all gizmo-bearing windows." + (interactive) + (--each w/gizmo-windows + (w/gizmo-cycle-window it))) + +(provide 'wasp-cyclone) +;;; wasp-cyclone.el ends here |
