                                                            :class-delimiter [:cyan]
                                                            :class-name      [:cyan]}}))
 
-(defn arg-indent
+(defn base-indent-slinky
+  [& {:keys [override underride]
+      :or {override [] underride []}}]
+  (concat override
+          [:start " "
+           :end " "
+           :default (fn [i]
+                      {:fg* i :text "|"})]
+          underride))
+
+(defn arg-indent-slinky
   [& {:keys [start end]
       :or {start " "
            end " "}}]
-  [:start start
-   -1 "-"
-   :default (fn [i]
-              {:fg* i :text "|"})
-   :end end])
+  (base-indent-slinky :override [:start start
+                                 -1 "-"
+                                 :end end]))
+
+(defn fn-header-indent-slinky
+  []
+  (base-indent-slinky :override [-1 (fn [i]
+                                      {:fg* i :text "v"})]))
+
+(defn fn-footer-indent-slinky
+  []
+  (base-indent-slinky :override [-1 (fn [i]
+                                      {:fg* i :text "^"})]))
 
 (defn apply-color-palette
   [n]

                        (= :default fi) [java.lang.Integer/MIN_VALUE java.lang.Integer/MAX_VALUE]
                        (number? fi) [fi fi])]
      (when (or (<= lo i hi)
                (<= lo (- len i) hi))
        se))))

(defn slinky-first-match


(defn indent
  [depth & rest]
  (slinky->str (apply base-indent-slinky rest)
               depth))

(defn indent-line-breaks
