             (recur opts (conj argv car) cdr)))
         [opts argv]))))
 
+(defn- make-format
+  "Given a sequence of column widths, return a string suitable for use in
+  format to print a sequences of strings in those columns."
+  [lens]
+  (s/join (map #(str "  %" (if-not (zero? %) (str "-" %)) "s") lens)))
 ;;
 ;; Legacy API
 ;;

  not displaying defaults. There are three sequences of lengths if we
  are showing defaults."
  [lens parts]
  (let [fmt (case (count lens)
              2 "~{  ~vA  ~vA~}"
              3 "~{  ~vA  ~vA  ~vA~}")]
    (map #(s/trimr (pp/cl-format nil fmt (interleave lens %))) parts)))

(defn- required-arguments [specs]
  (reduce

        vs (for [d docs]
             (mapcat (fn [& x] (apply vector x)) max-cols d))]
    (doseq [v vs]
      (let [fmt (make-format (take-nth 2 v))]
        (print (apply format fmt (take-nth 2 (rest v)))))
      (prn))))

(defn- name-for [k]
