                        :on-change (ig change-code data owner)}
            (:code data)]])))
 
-(defn display-issue [issue]
+(defn code->hiccup [class-name code]
+  [:pre {:class class-name}
+   [:code (pr-str code)]])
+
+(defn display-issue [{:keys [alt expr line column]}]
   (reify
     om/IDisplayName
     (display-name [_] "Issue")
     om/IRender
-    (render [_] (html [:li.issue (pr-str issue)]))))
+    (render [_]
+      (html [:li.issue
+             [:div.line line]
+             [:div.column column]
+             [:div.suggestion
+              "Use "
+              (code->hiccup :alt alt)
+              " instead of "
+              (code->hiccup :expr expr)]]))))
 
 (defn display-checker [{:keys [name issues]}]
   (om/component

            (fn code-change-post-success [resp]
              (om/transact! root-cursor
                            :issues (constantly resp)))))
(defmethod listen :default [_ _] nil)

(om/root
  live-checking

            (om/build-all display-checker (get data :issues))]])))

(defmulti listen (fn [tx-data _] (:tag tx-data)))
(defmethod listen :default [_ _] nil)

(defn- edn-post [url [content-type data] success-fn]
  (jq/ajax url
