(prog1 FORM1 FORM2 ... FORMn) is a special form in Common Lisp (and other Lisps, including Emacs Lisp but not Scheme). The
FORMs are executed in order, then the value(s) computed by
FORM1 is returned (the other forms' values are thrown away). So it's really syntactic sugar for the form
(let ((var FORM1))
is a free variable
in all the
progn (which returns the value of
FORMn) is used (often implicitly, as in the
(let ...) form above).
prog1 is Lisp-speak for "hang on to this value for a moment, while I go do something else".