   [editor-selector options]
   (let [opts (update
               (merge {:mode "sparql" :theme "default"
-                      :on-hover (.-onHover options)
+                      :on-hover (.-onHover options) :read-only (.-readOnly options)
                       :completions []
                       :focus? (not (not (.-focus options)))}
                      (dissoc (js->clj options :keywordize-keys true) :focus))

    (set! (.-onmouseover (.getWrapperElement ed)) #(run-hooks! ed :on-hover %))
    (set! (.-onmouseout (.getWrapperElement ed)) #(run-hooks! ed :on-leave %))

    (.on ed "change" complete/autocomplete)

    (on-hover!
     ed (fn [token]

   "tree" "javascript"})

(defn editor!
  [editor-selector & {:keys [mode theme focus? completions read-only]
                      :or {mode "sparql"
                           theme "default"
                           focus? true
                           completions []
                           read-only false}}]
  (styles/apply-style!)
  (let [elem (.querySelector js/document editor-selector)
        opts (clj->js {:lineNumbers true :gutters ["CodeMirror-linenumbers" "line-errors"]
