           (t
            (let* ((head (car form))
                   (name (if-symbol (cadr form)))
-                  (names (if name (if-list (caddr form)) (if-list (cadr form))))
+                  (names (if name (if-list (caddr form))
+                           (if-list (cadr form))))
                   (rest (if name (cdddr form) (cddr form)))
                   (use-names (or (eq head 'let*) (not partial) rest)))
              (when name (push name locals))

      (eob nil)
      (lparen (geiser-syntax--read/list))
      (vectorb (apply 'vector (geiser-syntax--read/list)))
      ((quote backquote unquote splice) (list (cdr token) (geiser-syntax--read)))
      (kwd `(:keyword . ,(cdr token)))
      ((char string atom) (cdr token))
      (t (error "Reading scheme syntax: unexpected token: %s" token)))))


      (while (not (zerop (geiser-syntax--nesting-level)))
        (let ((boundary (1+ (point))))
          (backward-up-list)
          (let ((form
                 (nth-value 0 (geiser-syntax--form-after-point boundary))))
            (when (and (listp form) (car form) (symbolp (car form)))
              (let* ((len-1 (1- (length form)))
                     (prev (and (> len-1 1) (nth (1- len-1) form)))
                     (prev (and prev
                                (geiser-syntax--read/keyword-value prev))))
                (push `(,(car form)
                        ,len-1 ,@(and prev (symbolp prev) (list prev)))
                      path))))))
      (nreverse path))))

