changeset 5547:a46c5c8d6564

Avoid calling various macros "special operators" in the manuals. 2011-08-09 Aidan Kehoe <kehoea@parhasard.net> * cl.texi (Argument Lists): * cl.texi (Time of Evaluation): * cl.texi (Type Predicates): * cl.texi (Assignment): * cl.texi (Basic Setf): * cl.texi (Modify Macros): * cl.texi (Customizing Setf): * cl.texi (Dynamic Bindings): * cl.texi (Lexical Bindings): * cl.texi (Function Bindings): * cl.texi (Macro Bindings): * cl.texi (Conditionals): * cl.texi (Blocks and Exits): * cl.texi (Iteration): * cl.texi (Loop Basics): * cl.texi (Macros): * cl.texi (Declarations): * cl.texi (Property Lists): * cl.texi (Structures): * cl.texi (Assertions): * cl.texi (Efficiency Concerns): * lispref/compile.texi (Eval During Compile): * lispref/compile.texi (Compiled-Function Objects): * lispref/eval.texi (Multiple values): * lispref/frames.texi (Input Focus): * lispref/internationalization.texi (Level 3 Primitives): * lispref/positions.texi (Excursions): * lispref/positions.texi (Narrowing): * lispref/searching.texi (Saving Match Data): * lispref/specifiers.texi (Adding Specifications): * lispref/windows.texi: Correct the manuals to avoid using the term "special operator" when #'special-operator-p would give nil.
author Aidan Kehoe <kehoea@parhasard.net>
date Tue, 09 Aug 2011 17:17:44 +0100
parents d54278e74d71
children b90c153730c7
files man/ChangeLog man/cl.texi man/lispref/compile.texi man/lispref/eval.texi man/lispref/frames.texi man/lispref/internationalization.texi man/lispref/positions.texi man/lispref/searching.texi man/lispref/specifiers.texi man/lispref/windows.texi
diffstat 10 files changed, 235 insertions(+), 199 deletions(-) [+]
line wrap: on
line diff
--- a/man/ChangeLog	Mon Aug 08 23:10:47 2011 +0900
+++ b/man/ChangeLog	Tue Aug 09 17:17:44 2011 +0100
@@ -1,3 +1,39 @@
+2011-08-09  Aidan Kehoe  <kehoea@parhasard.net>
+
+	* cl.texi (Argument Lists):
+	* cl.texi (Time of Evaluation):
+	* cl.texi (Type Predicates):
+	* cl.texi (Assignment):
+	* cl.texi (Basic Setf):
+	* cl.texi (Modify Macros):
+	* cl.texi (Customizing Setf):
+	* cl.texi (Dynamic Bindings):
+	* cl.texi (Lexical Bindings):
+	* cl.texi (Function Bindings):
+	* cl.texi (Macro Bindings):
+	* cl.texi (Conditionals):
+	* cl.texi (Blocks and Exits):
+	* cl.texi (Iteration):
+	* cl.texi (Loop Basics):
+	* cl.texi (Macros):
+	* cl.texi (Declarations):
+	* cl.texi (Property Lists):
+	* cl.texi (Structures):
+	* cl.texi (Assertions):
+	* cl.texi (Efficiency Concerns):
+	* lispref/compile.texi (Eval During Compile):
+	* lispref/compile.texi (Compiled-Function Objects):
+	* lispref/eval.texi (Multiple values):
+	* lispref/frames.texi (Input Focus):
+	* lispref/internationalization.texi (Level 3 Primitives):
+	* lispref/positions.texi (Excursions):
+	* lispref/positions.texi (Narrowing):
+	* lispref/searching.texi (Saving Match Data):
+	* lispref/specifiers.texi (Adding Specifications):
+	* lispref/windows.texi:
+	Correct the manuals to avoid using the term "special operator" when
+	#'special-operator-p would give nil.
+
 2011-08-08  Stephen J. Turnbull  <stephen@xemacs.org>
 
 	* internals/internals.texi (Mercurial Techniques): New.
--- a/man/cl.texi	Mon Aug 08 23:10:47 2011 +0900
+++ b/man/cl.texi	Tue Aug 09 17:17:44 2011 +0100
@@ -381,14 +381,14 @@
 Instead, this package defines alternates for several Lisp forms
 which you must use if you need Common Lisp argument lists.
 
-@deffn {Special Operator} defun* name arglist body...
+@defmac defun* name arglist body...
 This form is identical to the regular @code{defun} form, except
 that @var{arglist} is allowed to be a full Common Lisp argument
 list.  Also, the function body is enclosed in an implicit block
 called @var{name}; @pxref{Blocks and Exits}.
-@end deffn
-
-@deffn {Special Operator} defsubst* name arglist body...
+@end defmac
+
+@defmac defsubst* name arglist body...
 This is just like @code{defun*}, except that the function that
 is defined is automatically proclaimed @code{inline}, i.e.,
 calls to it may be expanded into in-line code by the byte compiler.
@@ -398,9 +398,9 @@
 efficient inline expansions.  In particular, @code{defsubst*}
 arranges for the processing of keyword arguments, default values,
 etc., to be done at compile-time whenever possible.
-@end deffn
-
-@deffn {Special Operator} defmacro* name arglist body...
+@end defmac
+
+@defmac defmacro* name arglist body...
 This is identical to the regular @code{defmacro} form,
 except that @var{arglist} is allowed to be a full Common Lisp
 argument list.  The @code{&environment} keyword is supported as
@@ -409,13 +409,13 @@
 cannot be implemented with the current Emacs Lisp interpreter.
 The macro expander body is enclosed in an implicit block called
 @var{name}.
-@end deffn
-
-@deffn {Special Operator} function* symbol-or-lambda
+@end defmac
+
+@defmac function* symbol-or-lambda
 This is identical to the regular @code{function} form,
 except that if the argument is a @code{lambda} form then that
 form may use a full Common Lisp argument list.
-@end deffn
+@end defmac
 
 Also, all forms (such as @code{defsetf} and @code{flet}) defined
 in this package that include @var{arglist}s in their syntax allow
@@ -606,7 +606,7 @@
 at compile-time so that later parts of the file can refer to the
 macros that are defined.
 
-@deffn {Special Operator} eval-when (situations...) forms...
+@defmac eval-when (situations...) forms...
 This form controls when the body @var{forms} are evaluated.
 The @var{situations} list may contain any set of the symbols
 @code{compile}, @code{load}, and @code{eval} (or their long-winded
@@ -678,7 +678,7 @@
 certain top-level forms, like @code{defmacro} (sort-of) and
 @code{require}, as if they were wrapped in @code{(eval-when
 (compile load eval) @dots{})}.
-@end deffn
+@end defmac
 
 Emacs 19 includes two special operators related to @code{eval-when}.
 One of these, @code{eval-when-compile}, is not quite equivalent to
@@ -690,7 +690,7 @@
 equivalent to @samp{(eval-when (compile load eval) @dots{})} and
 so is not itself defined by this package.
 
-@deffn {Special Operator} eval-when-compile forms...
+@defmac eval-when-compile forms...
 The @var{forms} are evaluated at compile-time; at execution time,
 this form acts like a quoted constant of the resulting value.  Used
 at top-level, @code{eval-when-compile} is just like @samp{eval-when
@@ -699,9 +699,9 @@
 or other reasons.
 
 This form is similar to the @samp{#.} syntax of true Common Lisp.
-@end deffn
-
-@deffn {Special Operator} load-time-value form
+@end defmac
+
+@defmac load-time-value form
 The @var{form} is evaluated at load-time; at execution time,
 this form acts like a quoted constant of the resulting value.
 
@@ -742,7 +742,7 @@
           ", and loaded on: "
           --temp--))
 @end example
-@end deffn
+@end defmac
 
 @node Function Aliases, , Time of Evaluation, Program Structure
 @section Function Aliases
@@ -869,7 +869,7 @@
 error.
 @end defun
 
-@deffn {Special Operator} deftype name arglist forms...
+@defmac deftype name arglist forms...
 This macro defines a new type called @var{name}.  It is similar
 to @code{defmacro} in many ways; when @var{name} is encountered
 as a type name, the body @var{forms} are evaluated and should
@@ -897,7 +897,7 @@
 The last example shows how the Common Lisp @code{unsigned-byte}
 type specifier could be implemented if desired; this package does
 not implement @code{unsigned-byte} by default.
-@end deffn
+@end defmac
 
 The @code{typecase} and @code{check-type} macros also use type
 names.  @xref{Conditionals}.  @xref{Assertions}.  The @code{map},
@@ -989,7 +989,7 @@
 The @code{psetq} form is just like @code{setq}, except that multiple
 assignments are done in parallel rather than sequentially.
 
-@deffn {Special Operator} psetq [symbol form]@dots{}
+@defmac psetq [symbol form]@dots{}
 This macro is used to assign to several
 variables simultaneously.  Given only one @var{symbol} and @var{form},
 it has the same effect as @code{setq}.  Given several @var{symbol}
@@ -1017,7 +1017,7 @@
 @pxref{Modify Macros}.)
 
 @code{psetq} always returns @code{nil}.
-@end deffn
+@end defmac
 
 @node Generalized Variables, Variable Bindings, Assignment, Control Structure
 @section Generalized Variables
@@ -1055,7 +1055,7 @@
 The @code{setf} macro is the most basic way to operate on generalized
 variables.
 
-@deffn {Special Operator} setf [place form]@dots{}
+@defmac setf [place form]@dots{}
 This macro evaluates @var{form} and stores it in @var{place}, which
 must be a valid generalized variable form.  If there are several
 @var{place} and @var{form} pairs, the assignments are done sequentially
@@ -1218,7 +1218,7 @@
 the form @code{(setf (wrong-order @var{a} @var{b}) 17)} will
 evaluate @var{b} first, then @var{a}, just as in an actual call
 to @code{wrong-order}.
-@end deffn
+@end defmac
 
 @node Modify Macros, Customizing Setf, Basic Setf, Generalized Variables
 @subsection Modify Macros
@@ -1228,15 +1228,15 @@
 that operate on generalized variables.  Many are interesting and
 useful even when the @var{place} is just a variable name.
 
-@deffn {Special Operator} psetf [place form]@dots{}
+@defmac psetf [place form]@dots{}
 This macro is to @code{setf} what @code{psetq} is to @code{setq}:
 When several @var{place}s and @var{form}s are involved, the
 assignments take place in parallel rather than sequentially.
 Specifically, all subforms are evaluated from left to right, then
 all the assignments are done (in an undefined order).
-@end deffn
-
-@deffn {Special Operator} incf place &optional x
+@end defmac
+
+@defmac incf place &optional x
 This macro increments the number stored in @var{place} by one, or
 by @var{x} if specified.  The incremented value is returned.  For
 example, @code{(incf i)} is equivalent to @code{(setq i (1+ i))}, and
@@ -1274,35 +1274,35 @@
 As a more Emacs-specific example of @code{incf}, the expression
 @code{(incf (point) @var{n})} is essentially equivalent to
 @code{(forward-char @var{n})}.
-@end deffn
-
-@deffn {Special Operator} decf place &optional x
+@end defmac
+
+@defmac decf place &optional x
 This macro decrements the number stored in @var{place} by one, or
 by @var{x} if specified.
-@end deffn
-
-@deffn {Special Operator} pop place
+@end defmac
+
+@defmac pop place
 This macro removes and returns the first element of the list stored
 in @var{place}.  It is analogous to @code{(prog1 (car @var{place})
 (setf @var{place} (cdr @var{place})))}, except that it takes care
 to evaluate all subforms only once.
-@end deffn
-
-@deffn {Special Operator} push x place
+@end defmac
+
+@defmac push x place
 This macro inserts @var{x} at the front of the list stored in
 @var{place}.  It is analogous to @code{(setf @var{place} (cons
 @var{x} @var{place}))}, except for evaluation of the subforms.
-@end deffn
-
-@deffn {Special Operator} pushnew x place @t{&key :test :test-not :key}
+@end defmac
+
+@defmac pushnew x place @t{&key :test :test-not :key}
 This macro inserts @var{x} at the front of the list stored in
 @var{place}, but only if @var{x} was not @code{eql} to any
 existing element of the list.  The optional keyword arguments
 are interpreted in the same way as for @code{adjoin}.
 @xref{Lists as Sets}.
-@end deffn
-
-@deffn {Special Operator} shiftf place@dots{} newvalue
+@end defmac
+
+@defmac shiftf place@dots{} newvalue
 This macro shifts the @var{place}s left by one, shifting in the
 value of @var{newvalue} (which may be any Lisp expression, not just
 a generalized variable), and returning the value shifted out of
@@ -1320,9 +1320,9 @@
 @noindent
 except that the subforms of @var{a}, @var{b}, and @var{c} are actually
 evaluated only once each and in the apparent order.
-@end deffn
-
-@deffn {Special Operator} rotatef place@dots{}
+@end defmac
+
+@defmac rotatef place@dots{}
 This macro rotates the @var{place}s left by one in circular fashion.
 Thus, @code{(rotatef @var{a} @var{b} @var{c} @var{d})} is equivalent to
 
@@ -1337,12 +1337,12 @@
 except for the evaluation of subforms.  @code{rotatef} always
 returns @code{nil}.  Note that @code{(rotatef @var{a} @var{b})}
 conveniently exchanges @var{a} and @var{b}.
-@end deffn
+@end defmac
 
 The following macros were invented for this package; they have no
 analogues in Common Lisp.
 
-@deffn {Special Operator} letf (bindings@dots{}) forms@dots{}
+@defmac letf (bindings@dots{}) forms@dots{}
 This macro is analogous to @code{let}, but for generalized variables
 rather than just symbols.  Each @var{binding} should be of the form
 @code{(@var{place} @var{value})}; the original contents of the
@@ -1392,14 +1392,14 @@
 variables and calls to @code{symbol-value} and @code{symbol-function}.
 If the symbol is not bound on entry, it is simply made unbound by
 @code{makunbound} or @code{fmakunbound} on exit.
-@end deffn
-
-@deffn {Special Operator} letf* (bindings@dots{}) forms@dots{}
+@end defmac
+
+@defmac letf* (bindings@dots{}) forms@dots{}
 This macro is to @code{letf} what @code{let*} is to @code{let}:
 It does the bindings in sequential rather than parallel order.
-@end deffn
-
-@deffn {Special Operator} callf @var{function} @var{place} @var{args}@dots{}
+@end defmac
+
+@defmac callf @var{function} @var{place} @var{args}@dots{}
 This is the ``generic'' modify macro.  It calls @var{function},
 which should be an unquoted function name, macro name, or lambda.
 It passes @var{place} and @var{args} as arguments, and assigns the
@@ -1416,14 +1416,14 @@
 @xref{Customizing Setf}, for @code{define-modify-macro}, a way
 to create even more concise notations for modify macros.  Note
 again that @code{callf} is an extension to standard Common Lisp.
-@end deffn
-
-@deffn {Special Operator} callf2 @var{function} @var{arg1} @var{place} @var{args}@dots{}
+@end defmac
+
+@defmac callf2 @var{function} @var{arg1} @var{place} @var{args}@dots{}
 This macro is like @code{callf}, except that @var{place} is
 the @emph{second} argument of @var{function} rather than the
 first.  For example, @code{(push @var{x} @var{place})} is
 equivalent to @code{(callf2 cons @var{x} @var{place})}.
-@end deffn
+@end defmac
 
 The @code{callf} and @code{callf2} macros serve as building
 blocks for other macros like @code{incf}, @code{pushnew}, and
@@ -1439,7 +1439,7 @@
 @code{defsetf}, and @code{define-setf-method}, that allow the
 user to extend generalized variables in various ways.
 
-@deffn {Special Operator} define-modify-macro name arglist function [doc-string]
+@defmac define-modify-macro name arglist function [doc-string]
 This macro defines a ``read-modify-write'' macro similar to
 @code{incf} and @code{decf}.  The macro @var{name} is defined
 to take a @var{place} argument followed by additional arguments
@@ -1480,9 +1480,9 @@
 using @code{get-setf-method}, or consult the source file
 @file{cl-macs.el} to see how to use the internal @code{setf}
 building blocks.
-@end deffn
-
-@deffn {Special Operator} defsetf access-fn update-fn
+@end defmac
+
+@defmac defsetf access-fn update-fn
 This is the simpler of two @code{defsetf} forms.  Where
 @var{access-fn} is the name of a function which accesses a place,
 this declares @var{update-fn} to be the corresponding store
@@ -1525,9 +1525,9 @@
 (defsetf symbol-value set)
 (defsetf buffer-name rename-buffer t)
 @end example
-@end deffn
-
-@deffn {Special Operator} defsetf access-fn arglist (store-var) forms@dots{}
+@end defmac
+
+@defmac defsetf access-fn arglist (store-var) forms@dots{}
 This is the second, more complex, form of @code{defsetf}.  It is
 rather like @code{defmacro} except for the additional @var{store-var}
 argument.  The @var{forms} should return a Lisp form which stores
@@ -1556,9 +1556,9 @@
 (defsetf nth (n x) (store)
   (list 'setcar (list 'nthcdr n x) store))
 @end example
-@end deffn
-
-@deffn {Special Operator} define-setf-method access-fn arglist forms@dots{}
+@end defmac
+
+@defmac define-setf-method access-fn arglist forms@dots{}
 This is the most general way to create new place forms.  When
 a @code{setf} to @var{access-fn} with arguments described by
 @var{arglist} is expanded, the @var{forms} are evaluated and
@@ -1603,7 +1603,7 @@
 use this setf-method will optimize away most temporaries that
 turn out to be unnecessary, so there is little reason for the
 setf-method itself to optimize.
-@end deffn
+@end defmac
 
 @defun get-setf-method place &optional env
 This function returns the setf-method for @var{place}, by
@@ -1669,7 +1669,7 @@
 at compile-time.  The @code{progv} form provides an easy way to
 bind variables whose names are computed at run-time.
 
-@deffn {Special Operator} progv symbols values forms@dots{}
+@defmac progv symbols values forms@dots{}
 This form establishes @code{let}-style variable bindings on a
 set of variables computed at run-time.  The expressions
 @var{symbols} and @var{values} are evaluated, and must return lists
@@ -1679,7 +1679,7 @@
 are made unbound (as if by @code{makunbound}) inside the body.
 If @var{symbols} is shorter than @var{values}, the excess values
 are ignored.
-@end deffn
+@end defmac
 
 @node Lexical Bindings, Function Bindings, Dynamic Bindings, Variable Bindings
 @subsection Lexical Bindings
@@ -1688,7 +1688,7 @@
 The @dfn{CL} package defines the following macro which
 more closely follows the Common Lisp @code{let} form:
 
-@deffn {Special Operator} lexical-let (bindings@dots{}) forms@dots{}
+@defmac lexical-let (bindings@dots{}) forms@dots{}
 This form is exactly like @code{let} except that the bindings it
 establishes are purely lexical.  Lexical bindings are similar to
 local variables in a language like C:  Only the code physically
@@ -1788,12 +1788,12 @@
 
 The @code{lexical-let} form is an extension to Common Lisp.  In
 true Common Lisp, all bindings are lexical unless declared otherwise.
-@end deffn
-
-@deffn {Special Operator} lexical-let* (bindings@dots{}) forms@dots{}
+@end defmac
+
+@defmac lexical-let* (bindings@dots{}) forms@dots{}
 This form is just like @code{lexical-let}, except that the bindings
 are made sequentially in the manner of @code{let*}.
-@end deffn
+@end defmac
 
 @node Function Bindings, Macro Bindings, Lexical Bindings, Variable Bindings
 @subsection Function Bindings
@@ -1802,7 +1802,7 @@
 These forms make @code{let}-like bindings to functions instead
 of variables.
 
-@deffn {Special Operator} flet (bindings@dots{}) forms@dots{}
+@defmac flet (bindings@dots{}) forms@dots{}
 This form establishes @code{let}-style bindings on the function
 cells of symbols rather than on the value cells.  Each @var{binding}
 must be a list of the form @samp{(@var{name} @var{arglist}
@@ -1841,14 +1841,14 @@
 argument notation supported by @code{defun*}; also, the function
 body is enclosed in an implicit block as if by @code{defun*}.
 @xref{Program Structure}.
-@end deffn
-
-@deffn {Special Operator} labels (bindings@dots{}) forms@dots{}
+@end defmac
+
+@defmac labels (bindings@dots{}) forms@dots{}
 The @code{labels} form is a synonym for @code{flet}.  (In Common
 Lisp, @code{labels} and @code{flet} differ in ways that depend on
 their lexical scoping; these distinctions vanish in dynamically
 scoped Emacs Lisp.)
-@end deffn
+@end defmac
 
 @node Macro Bindings, , Function Bindings, Variable Bindings
 @subsection Macro Bindings
@@ -1856,7 +1856,7 @@
 @noindent
 These forms create local macros and ``symbol macros.''
 
-@deffn {Special Operator} macrolet (bindings@dots{}) forms@dots{}
+@defmac macrolet (bindings@dots{}) forms@dots{}
 This form is analogous to @code{flet}, but for macros instead of
 functions.  Each @var{binding} is a list of the same form as the
 arguments to @code{defmacro*} (i.e., a macro name, argument list,
@@ -1868,9 +1868,9 @@
 affect only calls that appear physically within the body
 @var{forms}, possibly after expansion of other macros in the
 body.
-@end deffn
-
-@deffn {Special Operator} symbol-macrolet (bindings@dots{}) forms@dots{}
+@end defmac
+
+@defmac symbol-macrolet (bindings@dots{}) forms@dots{}
 This form creates @dfn{symbol macros}, which are macros that look
 like variable references rather than function calls.  Each
 @var{binding} is a list @samp{(@var{var} @var{expansion})};
@@ -1935,7 +1935,7 @@
 @xref{Loop Facility}, for a description of the @code{loop} macro.
 This package defines a nonstandard @code{in-ref} loop clause that
 works much like @code{my-dolist}.
-@end deffn
+@end defmac
 
 @node Conditionals, Blocks and Exits, Variable Bindings, Control Structure
 @section Conditionals
@@ -1944,7 +1944,7 @@
 These conditional forms augment Emacs Lisp's simple @code{if},
 @code{and}, @code{or}, and @code{cond} forms.
 
-@deffn {Special Operator} when test forms@dots{}
+@defmac when test forms@dots{}
 This is a variant of @code{if} where there are no ``else'' forms,
 and possibly several ``then'' forms.  In particular,
 
@@ -1958,9 +1958,9 @@
 @example
 (if @var{test} (progn @var{a} @var{b} @var{c}) nil)
 @end example
-@end deffn
-
-@deffn {Special Operator} unless test forms@dots{}
+@end defmac
+
+@defmac unless test forms@dots{}
 This is a variant of @code{if} where there are no ``then'' forms,
 and possibly several ``else'' forms:
 
@@ -1974,9 +1974,9 @@
 @example
 (when (not @var{test}) @var{a} @var{b} @var{c})
 @end example
-@end deffn
-
-@deffn {Special Operator} case keyform clause@dots{}
+@end defmac
+
+@defmac case keyform clause@dots{}
 This macro evaluates @var{keyform}, then compares it with the key
 values listed in the various @var{clause}s.  Whichever clause matches
 the key is executed; comparison is done by @code{eql}.  If no clause
@@ -2010,15 +2010,15 @@
   ((?\r ?\n) (do-ret-thing))
   (t (do-other-thing)))
 @end example
-@end deffn
-
-@deffn {Special Operator} ecase keyform clause@dots{}
+@end defmac
+
+@defmac ecase keyform clause@dots{}
 This macro is just like @code{case}, except that if the key does
 not match any of the clauses, an error is signalled rather than
 simply returning @code{nil}.
-@end deffn
-
-@deffn {Special Operator} typecase keyform clause@dots{}
+@end defmac
+
+@defmac typecase keyform clause@dots{}
 This macro is a version of @code{case} that checks for types
 rather than values.  Each @var{clause} is of the form
 @samp{(@var{type} @var{body}...)}.  @xref{Type Predicates},
@@ -2035,13 +2035,13 @@
 The type specifier @code{t} matches any type of object; the word
 @code{otherwise} is also allowed.  To make one clause match any of
 several types, use an @code{(or ...)} type specifier.
-@end deffn
-
-@deffn {Special Operator} etypecase keyform clause@dots{}
+@end defmac
+
+@defmac etypecase keyform clause@dots{}
 This macro is just like @code{typecase}, except that if the key does
 not match any of the clauses, an error is signalled rather than
 simply returning @code{nil}.
-@end deffn
+@end defmac
 
 @node Blocks and Exits, Iteration, Conditionals, Control Structure
 @section Blocks and Exits
@@ -2054,7 +2054,7 @@
 optimizing byte-compiler to omit the costly @code{catch} step if the
 body of the block does not actually @code{return-from} the block.
 
-@deffn {Special Operator} block name forms@dots{}
+@defmac block name forms@dots{}
 The @var{forms} are evaluated as if by a @code{progn}.  However,
 if any of the @var{forms} execute @code{(return-from @var{name})},
 they will jump out and return directly from the @code{block} form.
@@ -2093,20 +2093,20 @@
 that jump to it.  This means that @code{do} loops and @code{defun*}
 functions which don't use @code{return} don't pay the overhead to
 support it.
-@end deffn
-
-@deffn {Special Operator} return-from name [result]
+@end defmac
+
+@defmac return-from name [result]
 This macro returns from the block named @var{name}, which must be
 an (unevaluated) symbol.  If a @var{result} form is specified, it
 is evaluated to produce the result returned from the @code{block}.
 Otherwise, @code{nil} is returned.
-@end deffn
-
-@deffn {Special Operator} return [result]
+@end defmac
+
+@defmac return [result]
 This macro is exactly like @code{(return-from nil @var{result})}.
 Common Lisp loops like @code{do} and @code{dolist} implicitly enclose
 themselves in @code{nil} blocks.
-@end deffn
+@end defmac
 
 @node Iteration, Loop Facility, Blocks and Exits, Control Structure
 @section Iteration
@@ -2116,7 +2116,7 @@
 looping constructs to complement Emacs Lisp's basic @code{while}
 loop.
 
-@deffn {Special Operator} loop forms@dots{}
+@defmac loop forms@dots{}
 The @dfn{CL} package supports both the simple, old-style meaning of
 @code{loop} and the extremely powerful and flexible feature known as
 the @dfn{Loop Facility} or @dfn{Loop Macro}.  This more advanced
@@ -2144,9 +2144,9 @@
 (This is not a restriction in practice, since a plain symbol
 in the above notation would simply access and throw away the
 value of a variable.)
-@end deffn
-
-@deffn {Special Operator} do (spec@dots{}) (end-test [result@dots{}]) forms@dots{}
+@end defmac
+
+@defmac do (spec@dots{}) (end-test [result@dots{}]) forms@dots{}
 This macro creates a general iterative loop.  Each @var{spec} is
 of the form
 
@@ -2192,9 +2192,9 @@
   ((or (null x) (null y))
    (nreverse z)))
 @end example
-@end deffn
-
-@deffn {Special Operator} do* (spec@dots{}) (end-test [result@dots{}]) forms@dots{}
+@end defmac
+
+@defmac do* (spec@dots{}) (end-test [result@dots{}]) forms@dots{}
 This is to @code{do} what @code{let*} is to @code{let}.  In
 particular, the initial values are bound as if by @code{let*}
 rather than @code{let}, and the steps are assigned as if by
@@ -2212,18 +2212,18 @@
    (nreverse z))
   (push (f x y) z))
 @end example
-@end deffn
-
-@deffn {Special Operator} dolist (var list [result]) forms@dots{}
+@end defmac
+
+@defmac dolist (var list [result]) forms@dots{}
 This is a more specialized loop which iterates across the elements
 of a list.  @var{list} should evaluate to a list; the body @var{forms}
 are executed with @var{var} bound to each element of the list in
 turn.  Finally, the @var{result} form (or @code{nil}) is evaluated
 with @var{var} bound to @code{nil} to produce the result returned by
 the loop.  The loop is surrounded by an implicit @code{nil} block.
-@end deffn
-
-@deffn {Special Operator} dotimes (var count [result]) forms@dots{}
+@end defmac
+
+@defmac dotimes (var count [result]) forms@dots{}
 This is a more specialized loop which iterates a specified number
 of times.  The body is executed with @var{var} bound to the integers
 from zero (inclusive) to @var{count} (exclusive), in turn.  Then
@@ -2231,9 +2231,9 @@
 number of iterations that were done (i.e., @code{(max 0 @var{count})})
 to get the return value for the loop form.  The loop is surrounded
 by an implicit @code{nil} block.
-@end deffn
-
-@deffn {Special Operator} do-symbols (var [obarray [result]]) forms@dots{}
+@end defmac
+
+@defmac do-symbols (var [obarray [result]]) forms@dots{}
 This loop iterates over all interned symbols.  If @var{obarray}
 is specified and is not @code{nil}, it loops over all symbols in
 that obarray.  For each symbol, the body @var{forms} are evaluated
@@ -2241,12 +2241,12 @@
 an unspecified order.  Afterward the @var{result} form, if any,
 is evaluated (with @var{var} bound to @code{nil}) to get the return
 value.  The loop is surrounded by an implicit @code{nil} block.
-@end deffn
-
-@deffn {Special Operator} do-all-symbols (var [result]) forms@dots{}
+@end defmac
+
+@defmac do-all-symbols (var [result]) forms@dots{}
 This is identical to @code{do-symbols} except that the @var{obarray}
 argument is omitted; it always iterates over the default obarray.
-@end deffn
+@end defmac
 
 @xref{Mapping over Sequences}, for some more functions for
 iterating over vectors or lists.
@@ -2286,7 +2286,7 @@
 takes place at byte-compile time; compiled @code{loop}s are just
 as efficient as the equivalent @code{while} loops written longhand.
 
-@deffn {Special Operator} loop clauses@dots{}
+@defmac loop clauses@dots{}
 A loop construct consists of a series of @var{clause}s, each
 introduced by a symbol like @code{for} or @code{do}.  Clauses
 are simply strung together in the argument list of @code{loop},
@@ -2325,7 +2325,7 @@
 (Because the loop body is enclosed in an implicit block, you can
 also use regular Lisp @code{return} or @code{return-from} to
 break out of the loop.)
-@end deffn
+@end defmac
 
 The following sections give some examples of the Loop Macro in
 action, and describe the particular loop clauses in great detail.
@@ -3003,7 +3003,7 @@
 Destructuring is made available to the user by way of the
 following macro:
 
-@deffn {Special Operator} destructuring-bind arglist expr forms@dots{}
+@defmac destructuring-bind arglist expr forms@dots{}
 This macro expands to code which executes @var{forms}, with
 the variables in @var{arglist} bound to the list of values
 returned by @var{expr}.  The @var{arglist} can include all
@@ -3012,13 +3012,13 @@
 is not allowed.)  The macro expansion will signal an error
 if @var{expr} returns a list of the wrong number of arguments
 or with incorrect keyword arguments.
-@end deffn
+@end defmac
 
 This package also includes the Common Lisp @code{define-compiler-macro}
 facility, which allows you to define compile-time expansions and
 optimizations for your functions.
 
-@deffn {Special Operator} define-compiler-macro name arglist forms@dots{}
+@defmac define-compiler-macro name arglist forms@dots{}
 This form is similar to @code{defmacro}, except that it only expands
 calls to @var{name} at compile-time; calls processed by the Lisp
 interpreter are not expanded, nor are they expanded by the
@@ -3052,7 +3052,7 @@
 @code{member*} call is left intact.  (The actual compiler macro
 for @code{member*} optimizes a number of other cases, including
 common @code{:test} predicates.)
-@end deffn
+@end defmac
 
 @defun compiler-macroexpand form
 This function is analogous to @code{macroexpand}, except that it
@@ -3094,7 +3094,7 @@
 is evaluated and thus should normally be quoted.
 @end defun
 
-@deffn {Special Operator} declaim decl-specs@dots{}
+@defmac declaim decl-specs@dots{}
 This macro is like @code{proclaim}, except that it takes any number
 of @var{decl-spec} arguments, and the arguments are unevaluated and
 unquoted.  The @code{declaim} macro also puts an @code{(eval-when
@@ -3103,22 +3103,22 @@
 since normally the declarations are meant to influence the way the
 compiler treats the rest of the file that contains the @code{declaim}
 form.)
-@end deffn
-
-@deffn {Special Operator} declare decl-specs@dots{}
+@end defmac
+
+@defmac declare decl-specs@dots{}
 This macro is used to make declarations within functions and other
 code.  Common Lisp allows declarations in various locations, generally
 at the beginning of any of the many ``implicit @code{progn}s''
 throughout Lisp syntax, such as function bodies, @code{let} bodies,
 etc.  Currently the only declaration understood by @code{declare}
 is @code{special}.
-@end deffn
-
-@deffn {Special Operator} locally declarations@dots{} forms@dots{}
+@end defmac
+
+@defmac locally declarations@dots{} forms@dots{}
 In this package, @code{locally} is no different from @code{progn}.
-@end deffn
-
-@deffn {Special Operator} the type form
+@end defmac
+
+@defmac the type form
 Type information provided by @code{the} is ignored in this package;
 in other words, @code{(the @var{type} @var{form})} is equivalent
 to @var{form}.  Future versions of the optimizing byte-compiler may
@@ -3131,7 +3131,7 @@
 compiler would have enough information to expand the loop in-line.
 For now, Emacs Lisp will treat the above code as exactly equivalent
 to @code{(mapcar 'car foo)}.
-@end deffn
+@end defmac
 
 Each @var{decl-spec} in a @code{proclaim}, @code{declaim}, or
 @code{declare} should be a list beginning with a symbol that says
@@ -3313,7 +3313,7 @@
 expression.
 @end defun
 
-@deffn {Special Operator} remf place property
+@defmac remf place property
 This macro removes the property-value pair for @var{property} from
 the property list stored at @var{place}, which is any @code{setf}-able
 place expression.  It returns true if the property was found.  Note
@@ -3321,7 +3321,7 @@
 effectively do a @code{(setf @var{place} (cddr @var{place}))},
 whereas if it occurs later, this simply uses @code{setcdr} to splice
 out the property and value cells.
-@end deffn
+@end defmac
 
 @iftex
 @secno=2
@@ -4677,7 +4677,7 @@
 implements structures as vectors (or lists upon request) with a
 special ``tag'' symbol to identify them.
 
-@deffn {Special Operator} defstruct name slots@dots{}
+@defmac defstruct name slots@dots{}
 The @code{defstruct} form defines a new structure type called
 @var{name}, with the specified @var{slots}.  (The @var{slots}
 may begin with a string which documents the structure type.)
@@ -4984,7 +4984,7 @@
 specifies a number of slots to be skipped between the last slot
 of the included type and the first new slot.
 @end table
-@end deffn
+@end defmac
 
 Except as noted, the @code{defstruct} facility of this package is
 entirely compatible with that of Common Lisp.
@@ -5007,7 +5007,7 @@
 away the following assertions.  Because assertions might be optimized
 away, it is a bad idea for them to include side-effects.
 
-@deffn {Special Operator} assert test-form [show-args string args@dots{}]
+@defmac assert test-form [show-args string args@dots{}]
 This form verifies that @var{test-form} is true (i.e., evaluates to
 a non-@code{nil} value).  If so, it returns @code{nil}.  If the test
 is not satisfied, @code{assert} signals an error.
@@ -5030,9 +5030,9 @@
 true Common Lisp, the second argument gives a list of @var{places}
 which can be @code{setf}'d by the user before continuing from the
 error.
-@end deffn
-
-@deffn {Special Operator} check-type place type &optional string
+@end defmac
+
+@defmac check-type place type &optional string
 This form verifies that @var{place} evaluates to a value of type
 @var{type}.  If so, it returns @code{nil}.  If not, @code{check-type}
 signals a continuable @code{wrong-type-argument} error.  The default
@@ -5051,18 +5051,18 @@
 should be a @var{place} suitable for use by @code{setf}, because
 @code{check-type} signals a continuable error that allows the user to
 modify @var{place}, most simply by returning a value from the debugger.
-@end deffn
+@end defmac
 
 The following error-related macro is also defined:
 
-@deffn {Special Operator} ignore-errors forms@dots{}
+@defmac ignore-errors forms@dots{}
 This executes @var{forms} exactly like a @code{progn}, except that
 errors are ignored during the @var{forms}.  More precisely, if
 an error is signalled then @code{ignore-errors} immediately
 aborts execution of the @var{forms} and returns @code{nil}.
 If the @var{forms} complete successfully, @code{ignore-errors}
 returns the result of the last @var{form}.
-@end deffn
+@end defmac
 
 @node Efficiency Concerns, Common Lisp Compatibility, Assertions, Top
 @appendix Efficiency Concerns
--- a/man/lispref/compile.texi	Mon Aug 08 23:10:47 2011 +0900
+++ b/man/lispref/compile.texi	Tue Aug 09 17:17:44 2011 +0100
@@ -691,7 +691,7 @@
   These features permit you to write code to be evaluated during
 compilation of a program.
 
-@deffn {Special Operator} eval-and-compile body
+@defmac eval-and-compile body
 This form marks @var{body} to be evaluated both when you compile the
 containing code and when you run it (whether compiled or not).
 
@@ -699,9 +699,9 @@
 and referring to that file with @code{require}.  Using @code{require} is
 preferable if there is a substantial amount of code to be executed in
 this way.
-@end deffn
+@end defmac
 
-@deffn {Special Operator} eval-when-compile body
+@defmac eval-when-compile body
 This form marks @var{body} to be evaluated at compile time and not when
 the compiled program is loaded.  The result of evaluation by the
 compiler becomes a constant which appears in the compiled program.  When
@@ -712,7 +712,7 @@
 @code{(eval-when (compile eval) @dots{})}.  Elsewhere, the Common Lisp
 @samp{#.} reader macro (but not when interpreting) is closer to what
 @code{eval-when-compile} does.
-@end deffn
+@end defmac
 
 @node Compiled-Function Objects
 @section Compiled-Function Objects
--- a/man/lispref/eval.texi	Mon Aug 08 23:10:47 2011 +0900
+++ b/man/lispref/eval.texi	Tue Aug 09 17:17:44 2011 +0100
@@ -743,21 +743,21 @@
 values.
 @end defun
 
-@deffn {Special Operator} multiple-value-bind (var@dots{}) values-form forms@dots{}
-This special operator evaluates @var{values-form}, which may return
+@defmac multiple-value-bind (var@dots{}) values-form forms@dots{}
+This macro evaluates @var{values-form}, which may return
 multiple values.  It then binds the @var{var}s to these respective values,
 as if by @code{let}, and then executes the body @var{forms}.
 If there are more @var{var}s than values, the extra @var{var}s
 are bound to @code{nil}.  If there are fewer @var{var}s than
 values, the excess values are ignored.
-@end deffn
+@end defmac
 
-@deffn {Special Operator} multiple-value-setq (var@dots{}) form
-This special operator evaluates @var{form}, which may return multiple
+@defmac multiple-value-setq (var@dots{}) form
+This macro evaluates @var{form}, which may return multiple
 values. It then sets the @var{var}s to these respective values, as if by
 @code{setq}.  Extra @var{var}s or values are treated the same as
 in @code{multiple-value-bind}.
-@end deffn
+@end defmac
 
 @deffn {Special Operator} multiple-value-call function forms@dots{}
 This special operator evaluates function, discarding any multiple
@@ -767,10 +767,10 @@
 infrastructure, treating multiple values as intercalated lists.
 @end deffn
 
-@deffn {Special Operator} multiple-value-list form
-This special operator evaluates @var{form} and returns a list of the
+@defmac multiple-value-list form
+This macro evaluates @var{form} and returns a list of the
 multiple values given by it.
-@end deffn
+@end defmac
 
 @deffn {Special Operator} multiple-value-prog1 first body@dots{}
 This special operator evaluates the form @var{first}, then the
@@ -779,12 +779,12 @@
 @code{prog1} always discards multiple values.
 @end deffn
 
-@deffn {Special Operator} nth-value n form
-This special operator evaluates @var{form} and returns the @var{n}th
+@defmac nth-value n form
+This macro evaluates @var{form} and returns the @var{n}th
 value it gave.  @var{n} must be an integer of value zero or more.
 If @var{form} gave insufficient multiple values, @code{nth-value}
 returns @code{nil}.
-@end deffn
+@end defmac
 
 @defvar multiple-values-limit
 This constant describes the exclusive upper bound on the number of
--- a/man/lispref/frames.texi	Mon Aug 08 23:10:47 2011 +0900
+++ b/man/lispref/frames.texi	Tue Aug 09 17:17:44 2011 +0100
@@ -785,18 +785,18 @@
 @code{focus-follows-mouse}.
 @end defun
 
-@deffn {Special Operator} save-selected-frame forms@dots{}
-This special operator records the selected frame, executes @var{forms} in
+@defmac save-selected-frame forms@dots{}
+This macro records the selected frame, executes @var{forms} in
 sequence, then restores the earlier selected frame.  The value returned
 is the value of the last form.
-@end deffn
+@end defmac
 
-@deffn {Special Operator} with-selected-frame frame forms@dots{}
-This special operator records the selected frame, then selects @var{frame}
+@defmac with-selected-frame frame forms@dots{}
+This macro records the selected frame, then selects @var{frame}
 and executes @var{forms} in sequence.  After the last form is finished,
 the earlier selected frame is restored.  The value returned is the value
 of the last form.
-@end deffn
+@end defmac
 
 @ignore (FSF Emacs, continued from defun select-frame)
 XEmacs cooperates with the X server and the window managers by arranging
--- a/man/lispref/internationalization.texi	Mon Aug 08 23:10:47 2011 +0900
+++ b/man/lispref/internationalization.texi	Tue Aug 09 17:17:44 2011 +0100
@@ -83,8 +83,8 @@
 nothing.
 @end defun
 
-@deffn {Special Operator} domain string
-This function specifies the text domain used for translating documentation
+@defmac domain string
+This macro specifies the text domain used for translating documentation
 strings and interactive prompts of a function.  For example, write:
 
 @example
@@ -94,7 +94,7 @@
 to specify @code{emacs-foo} as the text domain of the function @code{foo}.
 The ``call'' to @code{domain} is actually a declaration rather than a
 function; when actually called, @code{domain} just returns @code{nil}.
-@end deffn
+@end defmac
 
 @defun domain-of function
 This function returns the text domain of @var{function}; it returns
--- a/man/lispref/positions.texi	Mon Aug 08 23:10:47 2011 +0900
+++ b/man/lispref/positions.texi	Tue Aug 09 17:17:44 2011 +0100
@@ -818,21 +818,21 @@
 @code{save-current-buffer} is a primitive.
 @end deffn
 
-@deffn {Special Operator} with-current-buffer buffer forms@dots{}
+@defmac with-current-buffer buffer forms@dots{}
 This macro evaluates @var{forms} with @var{buffer} as the current
 buffer.  It returns the value of the last form.
-@end deffn
+@end defmac
 
-@deffn {Special Operator} with-temp-file filename forms@dots{}
+@defmac with-temp-file filename forms@dots{}
 This macro creates a new buffer, evaluates @var{forms} there, and
 writes the buffer to @var{filename}.  It returns the value of the last form
 evaluated.
-@end deffn
+@end defmac
 
-@deffn {Special Operator} save-selected-window forms@dots{}
+@defmac save-selected-window forms@dots{}
 This macro is similar to @code{save-excursion} but it saves and
 restores the selected window and nothing else.
-@end deffn
+@end defmac
 
 @node Narrowing
 @section Narrowing
--- a/man/lispref/searching.texi	Mon Aug 08 23:10:47 2011 +0900
+++ b/man/lispref/searching.texi	Tue Aug 09 17:17:44 2011 +0100
@@ -1458,10 +1458,10 @@
 
   You can save and restore the match data with @code{save-match-data}:
 
-@deffn {Special Operator} save-match-data body@dots{}
-This special operator executes @var{body}, saving and restoring the match
+@defmac save-match-data body@dots{}
+This macro executes @var{body}, saving and restoring the match
 data around it.
-@end deffn
+@end defmac
 
   Emacs automatically saves and restores the match data when it runs
 process filter functions (@pxref{Filter Functions}) and process
--- a/man/lispref/specifiers.texi	Mon Aug 08 23:10:47 2011 +0900
+++ b/man/lispref/specifiers.texi	Tue Aug 09 17:17:44 2011 +0100
@@ -875,7 +875,7 @@
 @code{add-spec-list-to-specifier}.
 @end defun
 
-@deffn {Special Operator} let-specifier specifier-list &rest body
+@defmac let-specifier specifier-list &rest body
 This macro temporarily adds specifications to specifiers,
 evaluates forms in @var{body} and restores the specifiers to their
 previous states.  The specifiers and their temporary specifications are
@@ -912,7 +912,7 @@
 (let-specifier ((modeline-shadow-thickness 0 (selected-window)))
   (sit-for 1))
 @end example
-@end deffn
+@end defmac
 
 @defun set-specifier specifier value &optional locale tag-set how-to-add
 This function adds some specifications to @var{specifier}.  @var{value}
--- a/man/lispref/windows.texi	Mon Aug 08 23:10:47 2011 +0900
+++ b/man/lispref/windows.texi	Tue Aug 09 17:17:44 2011 +0100
@@ -442,12 +442,12 @@
 @end example
 @end defun
 
-@deffn {Special Operator} save-selected-window forms@dots{}
+@defmac save-selected-window forms@dots{}
 This macro records the selected window, executes @var{forms} in
 sequence, then restores the earlier selected window.  It does not save
 or restore anything about the sizes, arrangement or contents of windows;
 therefore, if the @var{forms} change them, the changes are permanent.
-@end deffn
+@end defmac
 
 @cindex finding windows
   The following functions choose one of the windows on the screen,
@@ -1969,7 +1969,7 @@
 @end example
 @end defun
 
-@deffn {Special Operator} save-window-excursion forms@dots{}
+@defmac save-window-excursion forms@dots{}
 This macro records the window configuration, executes @var{forms}
 in sequence, then restores the earlier window configuration.  The window
 configuration includes the value of point and the portion of the buffer
@@ -2005,7 +2005,7 @@
      ;; @r{The frame is now split again.}
 @end group
 @end example
-@end deffn
+@end defmac
 
 @defun window-configuration-p object
 This function returns @code{t} if @var{object} is a window configuration.