-;; expect a value of nil if the user decides to punt. The
-;; second argument is a prompt string (defaults to "->"). Given third
-;; argument non-nil, it INHIBITS quitting unless the user types C-g at
-;; toplevel. This is so user can do things like C-u C-g and not get
-;; thrown out. Fourth argument, if non-nil, should be a function of two
-;; arguments which is called after every command is executed. The fifth
-;; argument, if provided, is the state variable for the function. If the
+;; expect a value of nil if the user decides to punt. The second
+;; argument is the prompt to be used: if nil, use "->", if 'noprompt,
+;; don't use a prompt, if a string, use that string as prompt, and if
+;; a function of no variable, it will be evaluated in every iteration
+;; of the loop and its return value, which can be nil, 'noprompt or a
+;; string, will be used as prompt. Given third argument non-nil, it
+;; INHIBITS quitting unless the user types C-g at toplevel. This is
+;; so user can do things like C-u C-g and not get thrown out. Fourth
+;; argument, if non-nil, should be a function of two arguments which
+;; is called after every command is executed. The fifth argument, if
+;; provided, is the state variable for the function. If the