           e.g.  If a boop has a status of 1 then
           changes to a status of 2 which has an action"
    :group 'boop
-   :type 'list)
+   :type '(alist :key-type integer
+                 :value-type (plist :key-type (choice (const :tag "Must be a Character" :symbol )
+                                                      (const :tag "Must be a HEX String" :color  )
+                                                      (const :tag "Must be a Status String" :status )
+                                                      (const :tag "Must be a lambda function" :action )))))
 
 (defcustom boop-execution-strategy 'config
   "The startegy to use for executing plugins.

(defcustom boop-default-format '(:symbol ?● :color "#ffcb13" :status "Unknown")
  "The default format when a script echo result doesn't match a value in the `boop-format-alist`."
  :group 'boop
  :type 'list)

(defcustom boop-format-alist
  '((1 :symbol ?● :color "#63ca13" :status "Passing" :action (lambda (name &rest args) (message "[%s] is back to Passing" name)))

which takes two arguments, When set to nil, no sorting is
applied.")

(defcustom boop-shorten-id-func 'boop--shorten-substring
  "The function used to shorten an ID string.
This is only used when displaying results as shortened ids, see
`boop-format-result-func`"
  :group 'boop
  :type '(radio
          (const :tag "Display a substring    e.g.  [proj]" boop--shorten-substring)
          (const :tag "Display split          e.g.  [p-n-a]" boop--shorten-delim)))
(defcustom boop-format-result-func 'boop--format-result
  "The function to use to format an individual result."
  :group 'boop
  :type '(radio
          (const :tag "Display symbol         e.g.  ●" boop--format-result)
          (const :tag "Display shortened id   e.g.  [name]" boop--format-result-as-id)))
(defcustom boop-format-results-func 'boop--format-results-sorted
  "The function to use to format `boop-result-alist`.  This
function should take a function as an argument which can format a
single result."
  :group 'boop
  :type '(radio
          (const :tag "Display results sorted" boop--format-results-sorted)
          (const :tag "Display results grouped by result" boop--format-results-grouped-by-result)
          (const :tag "Display results grouped by group tag" boop--format-results-grouped-by-group)))

;;;; Functions

