                   (reset! new-line true))
                 (write
                   ([obj]
-                    (let [s (condp instance? obj
-                             java.lang.String obj
-                             java.lang.Integer (str (char obj))
-                             (str obj))
+                    (let [#^java.lang.String s (condp instance? obj
+                                                 java.lang.String obj
+                                                 java.lang.Integer (str (char obj))
+                                                 (str obj))
                           term-height (.getHeight term)]
                       (binding [*out* stdout]
                         (when @new-line

            (conj
              v
              (ArgumentCompleter.
                [(StringsCompleter. (conj (mapv name (cmd-aliases k)) (name k)))
                 (proxy [Completer] []
                   (complete [buffer cursor candidates]
                     (if (not (nil? fn-args))
                       (.add candidates (str "Arguments: " fn-args)))
                     (if (not (nil? completion-hint))
                       (.add candidates (str completion-hint)))
                     (if (not (and (not (nil? fn-args)) (not (nil? completion-hint))))
                       (.add candidates ""))
                     0))]))
            v)))
      []
      (keys cmds))))

(defn set-up-alternate-scrolling
  [height width alternate-height alternate-scroll-separator prompt-string in-rdr]
  (let [prompt-width (count prompt-string)
        adjusted-prompt-string (str "\u001B[" (- height alternate-height) ";0H"
                                    "\u001B[2K"

    (and
      (instance? Exception arg)
      ((:print-exception-trace opts))) (strace/print-cause-trace arg)
    (instance? Exception arg) (utils/println-err (.getMessage #^Exception arg))
    :default (utils/println-err (str arg))))

(def cli-default-options
