Function: while

while is a special form defined in eval.c.

Signature

(while TEST BODY...)

Documentation

If TEST yields non-nil, eval BODY... and repeat.

The order of execution is thus TEST, BODY, TEST, BODY and so on until TEST returns nil.

The value of a while form is always nil.

View in manual

Probably introduced at or before Emacs version 1.12.

Source Code

// Defined in /usr/src/emacs/src/eval.c
{
  Lisp_Object test, body;

  test = XCAR (args);
  body = XCDR (args);
  while (!NILP (eval_sub (test)))
    {
      maybe_quit ();
      prog_ignore (body);
    }

  return Qnil;
}