;;; collab/impatient-mode/autoload.el -*- lexical-binding: t; -*-

;;;###autoload
(defun +impatient-mode/toggle ()
  "Toggle `impatient-mode' in the current buffer."
  (interactive)
  (unless (process-status "httpd")
    (httpd-start))
  (impatient-mode)
  (if impatient-mode
      (add-hook 'kill-buffer-hook '+impatient-mode--cleanup-impatient-mode)
    (+impatient-mode--cleanup-impatient-mode)))

(defun +impatient-mode--cleanup-impatient-mode ()
  (unless (cl-loop for buf in (doom-buffer-list)
                   if (buffer-local-value 'impatient-mode buf)
                   return t)
    (httpd-stop)
    (cl-loop for buf in (doom-buffer-list)
             if (buffer-local-value 'impatient-mode buf)
             do
             (with-current-buffer buf
               (impatient-mode -1)))
    (remove-hook 'kill-buffer-hook '+impatient-mode--cleanup-impatient-mode)))