* doc/misc/cl.texi (Blocks and Exits): Mention cl-tagbody.
authorGlenn Morris <rgm@gnu.org>
Mon, 3 Feb 2014 02:58:13 +0000 (18:58 -0800)
committerGlenn Morris <rgm@gnu.org>
Mon, 3 Feb 2014 02:58:13 +0000 (18:58 -0800)
* etc/NEWS: Related edit.

doc/misc/ChangeLog
doc/misc/cl.texi
etc/NEWS

index f0ad9e7..c64e5e6 100644 (file)
@@ -1,3 +1,7 @@
+2014-02-03  Glenn Morris  <rgm@gnu.org>
+
+       * cl.texi (Blocks and Exits): Mention cl-tagbody.
+
 2014-02-02  Glenn Morris  <rgm@gnu.org>
 
        * efaq-w32.texi (Tramp ssh): Remove deleted tramp methods.
index 0490cf6..2e3dd74 100644 (file)
@@ -1556,6 +1556,19 @@ Common Lisp loops like @code{cl-do} and @code{cl-dolist} implicitly enclose
 themselves in @code{nil} blocks.
 @end defmac
 
+@c FIXME?  Maybe this should be in a separate section?
+@defmac cl-tagbody &rest labels-or-statements
+This macro executes statements while allowing for control transfer to
+user-defined labels.  Each element of @var{labels-or-statements} can
+be either a label (an integer or a symbol), or a cons-cell
+(a statement).  This distinction is made before macroexpansion.
+Statements are executed in sequence, discarding any return value.
+Any statement can transfer control at any time to the statements that follow
+one of the labels with the special form @code{(go LABEL)}.
+Labels have lexical scope and dynamic extent.
+@end defmac
+
+
 @node Iteration
 @section Iteration
 
index 21480b0..cfcb74c 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -424,7 +424,9 @@ For example, this enables parsing of macros that open new namespaces.
 
 ** cl-lib
 
++++
 *** New macro `cl-tagbody'.
+This executes statements while allowing for control transfer to labels.
 
 +++
 *** letf is now just an alias for cl-letf.