                          (setMode (clojure-mode.)))
                      (.. ace-instance 
                          (setTheme "ace/theme/github"))
-                     (.. ace-instance
-                         getSession
-                         (on "change" #(change-handler ace-instance local-state)))
-                    ; (.. ace-instance 
-                    ;     -keyBinding
-                    ;     (addKeyboardHandler (-> js/ace 
-                    ;                           (.require "ace/keyboard/emacs")
-                    ;                           .-handler)))
                     (.. ace-instance
                         -commands
                         (addCommand (-> js/ace 

                        (addCommand  (clj->js {:name "save"
                                                :bindKey {:win "Ctrl-S" :mac "Ctrl-S" :sender "editor|cli"}
                                                :exec #(save-handler ace-instance (props :output))})))
                     ; (set! (.-$blockScrolling ace-instance) js/Infinity)
                     (set-value! ace-instance (@local-state :edited-value))
                     (go-loop []
                       (let [new-value (<! (props :input))]
                         (set-value! ace-instance new-value)
                         (swap! local-state assoc :edited-value new-value))
                       (recur))))})))
(defn ace-editor [value pos ext name]
  (-> (io {:input (chan) ; this channel is to pipe information to the js-script (optional to prevent rerendering)
           :output (chan) ; this channel is collected by morphic to generate :io signals (mandatory)
           :init-value value
           :extent ext
           :position pos
           :id name
