   (let ((id (intern (format "boop-%s-mode-line-map" id ))))
     `(defvar ,id (let ((map (make-sparse-keymap)))
                    (define-key map [mode-line down-mouse-1] ,f) map))))
-
 
 (defun boop-install-mode-line ()
   "Install the window number from `boop-mode' to the mode-line."

                             `(lambda (result) (boop--handle-result (quote ,id) (string-to-number result) (quote ,group)))))))
          boop-config-alist)))

(defun boop-flash-result-ids ()
  "Flashes the results based on their ID for 5 seconds."
  (interactive)
  (let ((previous-format-func boop-format-result-func))
    (setq boop-format-result-func 'boop--format-result-as-id)
    (run-at-time "2 sec" nil `(lambda () (setq boop-format-result-func (quote ,previous-format-func))))))

(defun boop-cycle-format-results ()
  "Cycle between the different format functions for the results."
  (interactive)
  (let ((format-funcs))
    (mapatoms (lambda (sym) (when (string-match "boop--format-results-" (symbol-name sym))
                         (setq format-funcs (cons sym format-funcs)))))
    (let* ((current (-elem-index boop-format-results-func format-funcs))
           (next (mod (+ current 1) (length format-funcs))))
      (setq boop-format-results-func (nth next format-funcs)))))

(defun boop (id status &optional group)
  "Manually boop something and set ID to have a status of STATUS."
  (if (assoc id boop-result-alist)

    (push '(:eval (boop-format-results)) result)
    (setq-default mode-line-format (nreverse result)))
  (force-mode-line-update t))

;; Updating the results

