                        :hintOptions
                        {:completeSingle false
                         :hint (fn [ed opt]
-                                (let [completions ["one" "two" "three" "four"]
-                                      line (util/current-line ed)
+                                (let [completions (.-completions (.-knotation ed))
                                       token (js->clj (.getTokenAt ed (.getCursor ed)))]
-                                  (clj->js {:list (filter #(string/starts-with? % (get token "string")) completions)
-                                            :from {:line line :ch (get token "start")}
-                                            :to {:line line :ch (get token "end")}})))}})
+                                  ;; (.log js/console "TOKEN" (.getTokenAt ed (.getCursor ed)) (clj->js completions))
+                                  (when (> (count (get token "string")) 1)
+                                    (let [line (util/current-line ed)]
+                                      (when (not (empty? completions))
+                                        (clj->js {:list (filter #(string/starts-with? % (get token "string")) completions)
+                                                  :from {:line line :ch (get token "start")}
+                                                  :to {:line line :ch (get token "end")}}))))))}})
         ed (if (= "TEXTAREA" (.-nodeName elem))
              (.fromTextArea js/CodeMirror elem opts)
              (js/CodeMirror elem opts))]

            [org.knotation.editor.update :as update]

            [org.knotation.api :as api]
            [org.knotation.state :as st]

            [clojure.string :as string]))

    (.on
     ed "change"
     (fn [ed change]
       (when (not (empty? (.-completions (.-knotation ed))))
         (let [chg (js->clj change)]
           (when (contains? #{"+input" "+delete"} (get chg "origin"))
             (.execCommand ed "autocomplete"))))))

    (on-hover!
     ed (fn [token]
