             c))
 
 (def symbol-completer-exclude-namespaces
+     "These namespaces are excluded from the symbol completer. This can be altered."
      (atom ['clojure.core 'clojure.repl]))
 
 (defn make-symbol-completer
   "Create a symbol completer. Accepts a filter function that will take a
-dictionary of symbols and vars (like you get from ns-publics)."
+dictionary of symbols and vars (like you get from ns-publics) and return a
+dictionary of symbols and vars."
   ([]
    (make-symbol-completer identity))
   ([filter-map]
    (fn ([input]
-        ;(log "ns" *ns*)
         (filter #(clojure.string/starts-with? % input)
                 (map (comp name first)
                      (filter-map
-                      #_(mapcat #(ns-publics (the-ns %))
-                              @fn-completer-namespaces)
                       (filter-ns @symbol-completer-exclude-namespaces
                                  (merge (ns-refers (:*ns* @repl-env))
                                         (ns-interns (:*ns* @repl-env))))))))

        (let [msg (apply format fmt strings)]
             (message msg))))


(defn to-buffer
  "Output to a buffer."
  [buffer-name content]

  `(register-command-fn ~cmd-name-or-attrs (make-delegate ~typeargs ~args ~f)))

(defmacro register-variable
  "Register a Minibuffer variable."
  [type variable-name-or-attrs f-get f-set]
  `(register-variable-fn ~type ~variable-name-or-attrs
                         (sys-func [~type] [] (~f-get))
                         (sys-action [~type] [~'value] (~f-set ~'value))))

(defmacro defvar
    "Define a minibuffer variable. This variable is mutable therefore the value
