   Puget, but which is not directly printed by the library. Note that this
   function still obeys the *colored-output* var."
   [element text]
-  (let [codes (seq (*color-scheme* element))]
-    (if (and *colored-output* codes)
+  (let [codes (-> *options* :color-scheme (get element) seq)]
+    (if (and (:print-color *options*) codes)
       (str (ansi/esc codes) text (ansi/escape :none))
       text)))
 

                     (map canonize-kv))]
    [:group
     (color-doc :delimiter "{")
     [:align (interpose [:span *map-delimiter* :line] entries)]
     (color-doc :delimiter "}")]))




;; CONTROL VARS

; TODO: the dynamism here is probably overkill and makes var resolution much
; more expensive. The control functions below use alter-var-root anyway, so
; it's probably better to make these normal vars. Potentially, overrides can
; be supported better through an 'opts' map passed to the printer functions.

(def ^:dynamic *options*
  "Printer control options.

  TODO: document individual options."
  {:map-delimiter ""
   :color-scheme {}
   :print-color false
   :print-meta nil    ; default to clojure.core/*print-meta* ?
   :strict false})


(def ^:dynamic *strict-mode*
  "If true, throw an exception if there is no canonical EDN representation for
  a given value. This generally applies to any non-primitive value which does
