    ))
 
 (defn read-type
+  "Read from the minibuffer but of a particular type. Basically Minibuffer.Read<T>().
+
+(then (read-type Int64 \"How old are you?\")
+      #(message \"%d is a fine age.\" %))
+"
   [type prompt & {:keys [input history completer require-match require-coerce]
                   :or {input "" history nil completer nil
                        require-match false require-coerce false}}]

(defn read-from-minibuffer
  "Read a string from the minibuffer prompt. This returns an IPromise.

e.g. (then (read-from-minibuffer \"Who are you? \") #(message \"Hi, %s.\" %))"
  [prompt & {:keys [input history completer require-match require-coerce]
             :or {input "" history nil completer nil
                  require-match false require-coerce false}}]

            (.set_Item (.completers Minibuffer/instance) name c)
            c))

(def symbol-completer-exclude-namespaces
     (atom ['clojure.core 'clojure.repl]))

(defn make-symbol-completer
  "Create a symbol completer. Accepts a filter function that will take a
