*** empty log message ***
[emacs/old-mirror.git] / lispref / intro.texi
blob3bae2d6f614570d5c383d54d6fe96074b5f5189d
1 @c -*-texinfo-*-
2 @c This is part of the GNU Emacs Lisp Reference Manual.
3 @c Copyright (C) 1990, 1991, 1992, 1993, 1994 Free Software Foundation, Inc. 
4 @c See the file elisp.texi for copying conditions.
5 @setfilename ../info/intro
7 @c Versino of the manual.
8 @set VERSION 2.8
10 @node Introduction, Lisp Data Types, Top, Top
11 @comment  node-name,  next,  previous,  up
12 @chapter Introduction
14   Most of the GNU Emacs text editor is written in the programming
15 language called Emacs Lisp.  You can write new code in Emacs Lisp and
16 install it as an extension to the editor.  However, Emacs Lisp is more
17 than a mere ``extension language''; it is a full computer programming
18 language in its own right.  You can use it as you would any other
19 programming language.
21   Because Emacs Lisp is designed for use in an editor, it has special
22 features for scanning and parsing text as well as features for handling
23 files, buffers, displays, subprocesses, and so on.  Emacs Lisp is
24 closely integrated with the editing facilities; thus, editing commands
25 are functions that can also conveniently be called from Lisp programs,
26 and parameters for customization are ordinary Lisp variables.
28   This manual attempts to be a full description of Emacs Lisp.  For a
29 beginner's introduction to Emacs Lisp, see @cite{An Introduction to
30 Emacs Lisp Programming}, by Bob Chassell, also published by the Free
31 Software Foundation.  This manual presumes considerable familiarity with
32 the use of Emacs for editing; see @cite{The GNU Emacs Manual} for this
33 basic information.
35   Generally speaking, the earlier chapters describe features of Emacs
36 Lisp that have counterparts in many programming languages, and later
37 chapters describe features that are peculiar to Emacs Lisp or relate
38 specifically to editing.
40   This is edition @value{VERSION}.
42 @menu
43 * Caveats::             Flaws and a request for help.
44 * Lisp History::        Emacs Lisp is descended from Maclisp.
45 * Conventions::         How the manual is formatted.
46 * Version Info::        Which Emacs version is running?
47 * Acknowledgements::    The authors, editors, and sponsors of this manual.
48 @end menu
50 @node Caveats
51 @section Caveats
53   This manual has gone through numerous drafts.  It is nearly complete
54 but not flawless.  There are a few topics that are not covered, either
55 because we consider them secondary (such as most of the individual
56 modes) or because they are yet to be written.  Because we are not able
57 to deal with them completely, we have left out several parts
58 intentionally.  This includes most information about usage on VMS.
60   The manual should be fully correct in what it does cover, and it is
61 therefore open to criticism on anything it says---from specific examples
62 and descriptive text, to the ordering of chapters and sections.  If
63 something is confusing, or you find that you have to look at the sources
64 or experiment to learn something not covered in the manual, then perhaps
65 the manual should be fixed.  Please let us know.
67 @iftex
68   As you use this manual, we ask that you mark pages with corrections so
69 you can later look them up and send them to us.  If you think of a simple,
70 real-life example for a function or group of functions, please make an
71 effort to write it up and send it in.  Please reference any comments to
72 the chapter name, section name, and function name, as appropriate, since
73 page numbers and chapter and section numbers will change and we may have
74 trouble finding the text you are talking about.  Also state the number
75 of the edition you are criticizing.
76 @end iftex
77 @ifnottex
79 As you use this manual, we ask that you send corrections as soon as you
80 find them.  If you think of a simple, real life example for a function
81 or group of functions, please make an effort to write it up and send it
82 in.  Please reference any comments to the node name and function or
83 variable name, as appropriate.  Also state the number of the edition
84 you are criticizing.
85 @end ifnottex
87 Please mail comments and corrections to
89 @example
90 bug-lisp-manual@@gnu.org
91 @end example
93 @noindent
94 We let mail to this list accumulate unread until someone decides to
95 apply the corrections.  Months, and sometimes years, go by between
96 updates.  So please attach no significance to the lack of a reply---your
97 mail @emph{will} be acted on in due time.  If you want to contact the
98 Emacs maintainers more quickly, send mail to
99 @code{bug-gnu-emacs@@gnu.org}.
101 @node Lisp History
102 @section Lisp History
103 @cindex Lisp history
105   Lisp (LISt Processing language) was first developed in the late 1950s
106 at the Massachusetts Institute of Technology for research in artificial
107 intelligence.  The great power of the Lisp language makes it ideal
108 for other purposes as well, such as writing editing commands.
110 @cindex Maclisp
111 @cindex Common Lisp
112   Dozens of Lisp implementations have been built over the years, each
113 with its own idiosyncrasies.  Many of them were inspired by Maclisp,
114 which was written in the 1960s at MIT's Project MAC.  Eventually the
115 implementors of the descendants of Maclisp came together and developed a
116 standard for Lisp systems, called Common Lisp.  In the meantime, Gerry
117 Sussman and Guy Steele at MIT developed a simplified but very powerful
118 dialect of Lisp, called Scheme.
120   GNU Emacs Lisp is largely inspired by Maclisp, and a little by Common
121 Lisp.  If you know Common Lisp, you will notice many similarities.
122 However, many features of Common Lisp have been omitted or
123 simplified in order to reduce the memory requirements of GNU Emacs.
124 Sometimes the simplifications are so drastic that a Common Lisp user
125 might be very confused.  We will occasionally point out how GNU Emacs
126 Lisp differs from Common Lisp.  If you don't know Common Lisp, don't
127 worry about it; this manual is self-contained.
129 @pindex cl
130   A certain amount of Common Lisp emulation is available via the
131 @file{cl} library.  @xref{Top,, Common Lisp Extension, cl, Common Lisp
132 Extensions}.
134   Emacs Lisp is not at all influenced by Scheme; but the GNU project has
135 an implementation of Scheme, called Guile.  We use Guile in all new GNU
136 software that calls for extensibility.
138 @node Conventions
139 @section Conventions
141 This section explains the notational conventions that are used in this
142 manual.  You may want to skip this section and refer back to it later.
144 @menu
145 * Some Terms::               Explanation of terms we use in this manual.
146 * nil and t::                How the symbols @code{nil} and @code{t} are used.
147 * Evaluation Notation::      The format we use for examples of evaluation.
148 * Printing Notation::        The format we use when examples print text.
149 * Error Messages::           The format we use for examples of errors.
150 * Buffer Text Notation::     The format we use for buffer contents in examples.
151 * Format of Descriptions::   Notation for describing functions, variables, etc.
152 @end menu
154 @node Some Terms
155 @subsection Some Terms
157   Throughout this manual, the phrases ``the Lisp reader'' and ``the Lisp
158 printer'' refer to those routines in Lisp that convert textual
159 representations of Lisp objects into actual Lisp objects, and vice
160 versa.  @xref{Printed Representation}, for more details.  You, the
161 person reading this manual, are thought of as ``the programmer'' and are
162 addressed as ``you''.  ``The user'' is the person who uses Lisp
163 programs, including those you write.
165 @cindex fonts
166   Examples of Lisp code are formatted like this: @code{(list 1 2 3)}.
167 Names that represent metasyntactic variables, or arguments to a function
168 being described, are formatted like this: @var{first-number}.
170 @node nil and t
171 @subsection @code{nil} and @code{t}
172 @cindex @code{nil}, uses of
173 @cindex truth value
174 @cindex boolean
175 @cindex false
177   In Lisp, the symbol @code{nil} has three separate meanings: it
178 is a symbol with the name @samp{nil}; it is the logical truth value
179 @var{false}; and it is the empty list---the list of zero elements.
180 When used as a variable, @code{nil} always has the value @code{nil}.
182   As far as the Lisp reader is concerned, @samp{()} and @samp{nil} are
183 identical: they stand for the same object, the symbol @code{nil}.  The
184 different ways of writing the symbol are intended entirely for human
185 readers.  After the Lisp reader has read either @samp{()} or @samp{nil},
186 there is no way to determine which representation was actually written
187 by the programmer.
189   In this manual, we use @code{()} when we wish to emphasize that it
190 means the empty list, and we use @code{nil} when we wish to emphasize
191 that it means the truth value @var{false}.  That is a good convention to use
192 in Lisp programs also.
194 @example
195 (cons 'foo ())                ; @r{Emphasize the empty list}
196 (not nil)                     ; @r{Emphasize the truth value @var{false}}
197 @end example
199 @cindex @code{t} and truth
200 @cindex true
201   In contexts where a truth value is expected, any non-@code{nil} value
202 is considered to be @var{true}.  However, @code{t} is the preferred way
203 to represent the truth value @var{true}.  When you need to choose a
204 value which represents @var{true}, and there is no other basis for
205 choosing, use @code{t}.  The symbol @code{t} always has the value
206 @code{t}.
208   In Emacs Lisp, @code{nil} and @code{t} are special symbols that always
209 evaluate to themselves.  This is so that you do not need to quote them
210 to use them as constants in a program.  An attempt to change their
211 values results in a @code{setting-constant} error.  The same is true of
212 any symbol whose name starts with a colon (@samp{:}).  @xref{Constant
213 Variables}.
215 @node Evaluation Notation
216 @subsection Evaluation Notation
217 @cindex evaluation notation
218 @cindex documentation notation
220   A Lisp expression that you can evaluate is called a @dfn{form}.
221 Evaluating a form always produces a result, which is a Lisp object.  In
222 the examples in this manual, this is indicated with @samp{@result{}}:
224 @example
225 (car '(1 2))
226      @result{} 1
227 @end example
229 @noindent
230 You can read this as ``@code{(car '(1 2))} evaluates to 1''.
232   When a form is a macro call, it expands into a new form for Lisp to
233 evaluate.  We show the result of the expansion with
234 @samp{@expansion{}}.  We may or may not show the result of the
235 evaluation of the expanded form.
237 @example
238 (third '(a b c))
239      @expansion{} (car (cdr (cdr '(a b c))))
240      @result{} c
241 @end example
243   Sometimes to help describe one form we show another form that
244 produces identical results.  The exact equivalence of two forms is
245 indicated with @samp{@equiv{}}.
247 @example
248 (make-sparse-keymap) @equiv{} (list 'keymap)
249 @end example
251 @node Printing Notation
252 @subsection Printing Notation
253 @cindex printing notation
255   Many of the examples in this manual print text when they are
256 evaluated.  If you execute example code in a Lisp Interaction buffer
257 (such as the buffer @samp{*scratch*}), the printed text is inserted into
258 the buffer.  If you execute the example by other means (such as by
259 evaluating the function @code{eval-region}), the printed text is
260 displayed in the echo area.
262   Examples in this manual indicate printed text with @samp{@print{}},
263 irrespective of where that text goes.  The value returned by evaluating
264 the form (here @code{bar}) follows on a separate line.
266 @example
267 @group
268 (progn (print 'foo) (print 'bar))
269      @print{} foo
270      @print{} bar
271      @result{} bar
272 @end group
273 @end example
275 @node Error Messages
276 @subsection Error Messages
277 @cindex error message notation
279   Some examples signal errors.  This normally displays an error message
280 in the echo area.  We show the error message on a line starting with
281 @samp{@error{}}.  Note that @samp{@error{}} itself does not appear in
282 the echo area.
284 @example
285 (+ 23 'x)
286 @error{} Wrong type argument: number-or-marker-p, x
287 @end example
289 @node Buffer Text Notation
290 @subsection Buffer Text Notation
291 @cindex buffer text notation
293   Some examples describe modifications to the contents of a buffer, by
294 showing the ``before'' and ``after'' versions of the text.  These
295 examples show the contents of the buffer in question between two lines
296 of dashes containing the buffer name.  In addition, @samp{@point{}}
297 indicates the location of point.  (The symbol for point, of course, is
298 not part of the text in the buffer; it indicates the place
299 @emph{between} two characters where point is currently located.)
301 @example
302 ---------- Buffer: foo ----------
303 This is the @point{}contents of foo.
304 ---------- Buffer: foo ----------
306 (insert "changed ")
307      @result{} nil
308 ---------- Buffer: foo ----------
309 This is the changed @point{}contents of foo.
310 ---------- Buffer: foo ----------
311 @end example
313 @node Format of Descriptions
314 @subsection Format of Descriptions
315 @cindex description format
317   Functions, variables, macros, commands, user options, and special
318 forms are described in this manual in a uniform format.  The first
319 line of a description contains the name of the item followed by its
320 arguments, if any.
321 @ifnottex
322 The category---function, variable, or whatever---appears at the
323 beginning of the line.
324 @end ifnottex
325 @iftex
326 The category---function, variable, or whatever---is printed next to the
327 right margin.
328 @end iftex
329 The description follows on succeeding lines, sometimes with examples.
331 @menu
332 * A Sample Function Description::       A description of an imaginary
333                                           function, @code{foo}.
334 * A Sample Variable Description::       A description of an imaginary
335                                           variable,
336                                           @code{electric-future-map}.  
337 @end menu
339 @node A Sample Function Description
340 @subsubsection A Sample Function Description
341 @cindex function descriptions
342 @cindex command descriptions
343 @cindex macro descriptions
344 @cindex special form descriptions
346   In a function description, the name of the function being described
347 appears first.  It is followed on the same line by a list of argument
348 names.  These names are also used in the body of the description, to
349 stand for the values of the arguments.
351   The appearance of the keyword @code{&optional} in the argument list
352 indicates that the subsequent arguments may be omitted (omitted
353 arguments default to @code{nil}).  Do not write @code{&optional} when
354 you call the function.
356   The keyword @code{&rest} (which must be followed by a single argument
357 name) indicates that any number of arguments can follow.  The single
358 following argument name will have a value, as a variable, which is a
359 list of all these remaining arguments.  Do not write @code{&rest} when
360 you call the function.
362   Here is a description of an imaginary function @code{foo}:
364 @defun foo integer1 &optional integer2 &rest integers
365 The function @code{foo} subtracts @var{integer1} from @var{integer2},
366 then adds all the rest of the arguments to the result.  If @var{integer2}
367 is not supplied, then the number 19 is used by default.
369 @example
370 (foo 1 5 3 9)
371      @result{} 16
372 (foo 5)
373      @result{} 14
374 @end example
376 @need 1500
377 More generally,
379 @example
380 (foo @var{w} @var{x} @var{y}@dots{})
381 @equiv{}
382 (+ (- @var{x} @var{w}) @var{y}@dots{})
383 @end example
384 @end defun
386   Any argument whose name contains the name of a type (e.g.,
387 @var{integer}, @var{integer1} or @var{buffer}) is expected to be of that
388 type.  A plural of a type (such as @var{buffers}) often means a list of
389 objects of that type.  Arguments named @var{object} may be of any type.
390 (@xref{Lisp Data Types}, for a list of Emacs object types.)  Arguments
391 with other sorts of names (e.g., @var{new-file}) are discussed
392 specifically in the description of the function.  In some sections,
393 features common to the arguments of several functions are described at
394 the beginning.
396   @xref{Lambda Expressions}, for a more complete description of optional
397 and rest arguments.
399   Command, macro, and special form descriptions have the same format,
400 but the word `Function' is replaced by `Command', `Macro', or `Special
401 Form', respectively.  Commands are simply functions that may be called
402 interactively; macros process their arguments differently from functions
403 (the arguments are not evaluated), but are presented the same way.
405   Special form descriptions use a more complex notation to specify
406 optional and repeated arguments because they can break the argument
407 list down into separate arguments in more complicated ways.
408 @samp{@r{[}@var{optional-arg}@r{]}} means that @var{optional-arg} is
409 optional and @samp{@var{repeated-args}@dots{}} stands for zero or more
410 arguments.  Parentheses are used when several arguments are grouped into
411 additional levels of list structure.  Here is an example:
413 @defspec count-loop (@var{var} [@var{from} @var{to} [@var{inc}]]) @var{body}@dots{}
414 This imaginary special form implements a loop that executes the
415 @var{body} forms and then increments the variable @var{var} on each
416 iteration.  On the first iteration, the variable has the value
417 @var{from}; on subsequent iterations, it is incremented by one (or by
418 @var{inc} if that is given).  The loop exits before executing @var{body}
419 if @var{var} equals @var{to}.  Here is an example:
421 @example
422 (count-loop (i 0 10)
423   (prin1 i) (princ " ")
424   (prin1 (aref vector i))
425   (terpri))
426 @end example
428 If @var{from} and @var{to} are omitted, @var{var} is bound to
429 @code{nil} before the loop begins, and the loop exits if @var{var} is
430 non-@code{nil} at the beginning of an iteration.  Here is an example:
432 @example
433 (count-loop (done)
434   (if (pending)
435       (fixit)
436     (setq done t)))
437 @end example
439 In this special form, the arguments @var{from} and @var{to} are
440 optional, but must both be present or both absent.  If they are present,
441 @var{inc} may optionally be specified as well.  These arguments are
442 grouped with the argument @var{var} into a list, to distinguish them
443 from @var{body}, which includes all remaining elements of the form.
444 @end defspec
446 @node A Sample Variable Description
447 @subsubsection A Sample Variable Description
448 @cindex variable descriptions
449 @cindex option descriptions
451   A @dfn{variable} is a name that can hold a value.  Although any
452 variable can be set by the user, certain variables that exist
453 specifically so that users can change them are called @dfn{user
454 options}.  Ordinary variables and user options are described using a
455 format like that for functions except that there are no arguments.
457   Here is a description of the imaginary @code{electric-future-map}
458 variable.@refill
460 @defvar electric-future-map
461 The value of this variable is a full keymap used by Electric Command
462 Future mode.  The functions in this map allow you to edit commands you
463 have not yet thought about executing.
464 @end defvar
466   User option descriptions have the same format, but `Variable' is
467 replaced by `User Option'.
469 @node Version Info
470 @section Version Information
472   These facilities provide information about which version of Emacs is
473 in use.
475 @deffn Command emacs-version
476 This function returns a string describing the version of Emacs that is
477 running.  It is useful to include this string in bug reports.
479 @smallexample
480 @group
481 (emacs-version)
482   @result{} "GNU Emacs 20.3.5 (i486-pc-linux-gnulibc1, X toolkit)
483  of Sat Feb 14 1998 on psilocin.gnu.org"
484 @end group
485 @end smallexample
487 Called interactively, the function prints the same information in the
488 echo area.
489 @end deffn
491 @defvar emacs-build-time
492 The value of this variable indicates the time at which Emacs was built
493 at the local site.  It is a list of three integers, like the value
494 of @code{current-time} (@pxref{Time of Day}).
496 @example
497 @group
498 emacs-build-time
499      @result{} (13623 62065 344633)
500 @end group
501 @end example
502 @end defvar
504 @defvar emacs-version
505 The value of this variable is the version of Emacs being run.  It is a
506 string such as @code{"20.3.1"}.  The last number in this string is not
507 really part of the Emacs release version number; it is incremented each
508 time you build Emacs in any given directory.  A value with four numeric
509 components, such as @code{"20.3.9.1"}, indicates an unreleased test
510 version.
511 @end defvar
513   The following two variables have existed since Emacs version 19.23:
515 @defvar emacs-major-version
516 The major version number of Emacs, as an integer.  For Emacs version
517 20.3, the value is 20.
518 @end defvar
520 @defvar emacs-minor-version
521 The minor version number of Emacs, as an integer.  For Emacs version
522 20.3, the value is 3.
523 @end defvar
525 @node Acknowledgements
526 @section Acknowledgements
528   This manual was written by Robert Krawitz, Bil Lewis, Dan LaLiberte,
529 Richard M. Stallman and Chris Welty, the volunteers of the GNU manual
530 group, in an effort extending over several years.  Robert J. Chassell
531 helped to review and edit the manual, with the support of the Defense
532 Advanced Research Projects Agency, ARPA Order 6082, arranged by Warren
533 A. Hunt, Jr.@: of Computational Logic, Inc.
535   Corrections were supplied by Karl Berry, Jim Blandy, Bard Bloom,
536 Stephane Boucher, David Boyes, Alan Carroll, Richard Davis, Lawrence
537 R. Dodd, Peter Doornbosch, David A. Duff, Chris Eich, Beverly
538 Erlebacher, David Eckelkamp, Ralf Fassel, Eirik Fuller, Stephen Gildea,
539 Bob Glickstein, Eric Hanchrow, George Hartzell, Nathan Hess, Masayuki
540 Ida, Dan Jacobson, Jak Kirman, Bob Knighten, Frederick M. Korz, Joe
541 Lammens, Glenn M. Lewis, K. Richard Magill, Brian Marick, Roland
542 McGrath, Skip Montanaro, John Gardiner Myers, Thomas A. Peterson,
543 Francesco Potorti, Friedrich Pukelsheim, Arnold D. Robbins, Raul
544 Rockwell, Per Starb@"ack, Shinichirou Sugou, Kimmo Suominen, Edward Tharp,
545 Bill Trost, Rickard Westman, Jean White, Matthew Wilding, Carl Witty,
546 Dale Worley, Rusty Wright, and David D. Zuhn.