Go to the first, previous, next, last section, table of contents.


Special Forms

A special form is a primitive function specially marked so that its arguments are not all evaluated. Most special forms define control structures or perform variable bindings--things which functions cannot do.

Each special form has its own rules for which arguments are evaluated and which are used without evaluation. Whether a particular argument is evaluated may depend on the results of evaluating other arguments.

Here is a list, in alphabetical order, of all of the special forms in Emacs Lisp with a reference to where each is described.

and
see section Constructs for Combining Conditions
catch
see section Explicit Nonlocal Exits: catch and throw
cond
see section Conditionals
condition-case
see section Writing Code to Handle Errors
defconst
see section Defining Global Variables
defmacro
see section Defining Macros
defun
see section Defining Functions
defvar
see section Defining Global Variables
function
see section Anonymous Functions
if
see section Conditionals
interactive
see section Interactive Call
let
let*
see section Local Variables
or
see section Constructs for Combining Conditions
prog1
prog2
progn
see section Sequencing
quote
see section Quoting
save-current-buffer
see section The Current Buffer
save-excursion
see section Excursions
save-restriction
see section Narrowing
save-window-excursion
see section Window Configurations
setq
see section How to Alter a Variable Value
setq-default
see section Creating and Deleting Buffer-Local Bindings
track-mouse
see section Mouse Tracking
unwind-protect
see section Nonlocal Exits
while
see section Iteration
with-output-to-temp-buffer
see section Temporary Displays

Common Lisp note: Here are some comparisons of special forms in GNU Emacs Lisp and Common Lisp. setq, if, and catch are special forms in both Emacs Lisp and Common Lisp. defun is a special form in Emacs Lisp, but a macro in Common Lisp. save-excursion is a special form in Emacs Lisp, but doesn't exist in Common Lisp. throw is a special form in Common Lisp (because it must be able to throw multiple values), but it is a function in Emacs Lisp (which doesn't have multiple values).


Go to the first, previous, next, last section, table of contents.