 (defun geiser-syntax--read/list ()
   (cond ((geiser-syntax--read/try 'dot)
          (let ((tail (geiser-syntax--read)))
-           (geiser-syntax--read/match 'eob 'rparen)
+           (geiser-syntax--read/skip-until 'eob 'rparen)
            tail))
         ((geiser-syntax--read/try 'rparen 'eob) nil)
         (t (cons (geiser-syntax--read)

    (if (memq (car token) tks) token
      (error "Unexpected token: %s" token))))

(defsubst geiser-syntax--read/try (&rest tks)
  (let ((p (point))
        (tk (ignore-errors (apply 'geiser-syntax--read/match tks))))

             (?\\ (cons 'char (geiser-syntax--read/elisp)))
             (?\( (geiser-syntax--read/token 'vectorb))
             (?\< (geiser-syntax--read/unprintable))
             ((?' ?` ?,) (char-before) (geiser-syntax--read/next-token))
             (t (let ((tok (geiser-syntax--read/elisp)))
                  (if tok (cons 'atom (intern (format "#%s" tok)))
                    (geiser-syntax--read/next-token))))))
