           (push frame frames)
           (setq i (1+ i))
           (setq frame (backtrace-frame i)))))
-    (let ((last-func nil))
+    (let ((last-func nil)
+          unevalled-frames)
       (dolist (frame frames)
         (-let [(evalled func . args) frame]
           (if evalled
-              (insert (format "  %s\n"
-                              (full-stack--format func args)))
-            (insert (format "  (%s ...)\n" func)))
+              (progn
+                (when unevalled-frames
+                  (setq unevalled-frames (nreverse unevalled-frames))
+                  (-let* (((_ . first-form) (car unevalled-frames))
+                          (subforms (-map #'cdr (cdr unevalled-frames)))
+                          (indices (full-stack--subform-index-path
+                                    first-form subforms)))
+                    (insert (full-stack--indent first-form indices)
+                            "\n"))
+
+                  (setq unevalled-frames nil))
+
+                (insert (propertize
+                         (full-stack--format func args)
+                         'face 'font-lock-variable-name-face)
+                        "\n"))
+            (push frame unevalled-frames))
+
           (when (functionp func)
-            (insert (format "%s:\n" func))))))
-    ))
+            (insert (format "--- %s\n" func)))))))
+  (goto-char (point-min)))

(require 'dash)

(defun full-stack--format (fn args)
  (let* ((formatted-args


(defun full-stack--buffer ()
  (let ((buf (get-buffer-create "*full-stack*")))
    (pop-to-buffer buf)))

(defun full-stack ()
  (interactive)
