         (str "font-lock-" face-name "-face")))
 
 (defn emacs-theme [name faces-by-name colors-by-id]
-  ;;'(font-lock-warning-face ((t (:foreground "yellow"))))
   (let [doc    (pr-str "A theme created with Koeeoadi")
         bg-rgb (pr-str (let [[_ color-id] (get-in faces-by-name ["background" :face/color])]
                          (get-in colors-by-id [color-id :color/rgb])))]

         ~(spec "keyword")
         ~(spec "negation-char")
         ~(spec "preprocessor")
         ~(spec "regexp-grouping-backslash")
         ~(spec "regexp-grouping-construct")
         ~(spec "string")
         ~(spec "type")
         ~(spec "variable-name")
         ~(spec "warning"))
        (~'provide-theme (~'read ~(str name)))))))

;; TODO use a multimethod here
(defn build-emacs []
  (let [{current-theme :theme/name
         faces-by-name :faces/by-name
         colors-by-id  :colors/by-id} @app-state]
    (pr-str (emacs-theme current-theme faces-by-name colors-by-id))))

(defn build-vim []
  "stub")


      `(~'progn
        (~'eval (~'read ~(str "(deftheme " name " " doc ")")))
        ;;(~'eval (~'deftheme ~name ~doc))
        ;; adds someproperties to that theme
        (~'put (~'read ~(str name)) (quote ~'theme-immediate) ~'t)
        ;; executes in color scope
