annotate lispref/intro.texi @ 26344:eb8bcda297f9

*** empty log message ***
author Gerd Moellmann <gerd@gnu.org>
date Thu, 04 Nov 1999 00:25:55 +0000
parents 6119687f6888
children 89afca54a135
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1 @c -*-texinfo-*-
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2 @c This is part of the GNU Emacs Lisp Reference Manual.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3 @c Copyright (C) 1990, 1991, 1992, 1993, 1994 Free Software Foundation, Inc.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4 @c See the file elisp.texi for copying conditions.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5 @setfilename ../info/intro
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
6
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
7 @node Copying, Introduction, Top, Top
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
8 @comment node-name, next, previous, up
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
9 @unnumbered GNU GENERAL PUBLIC LICENSE
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
10 @center Version 2, June 1991
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
12 @display
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13 Copyright @copyright{} 1989, 1991 Free Software Foundation, Inc.
22366
804f5341ce1d changed old address to 59 Temple address in licence. - Brian
Brian Youmans <3diff@gnu.org>
parents: 22274
diff changeset
14 59 Temple Place, Suite 330, Boston, MA 02111, USA
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16 Everyone is permitted to copy and distribute verbatim copies
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17 of this license document, but changing it is not allowed.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18 @end display
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
20 @unnumberedsec Preamble
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
21
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
22 The licenses for most software are designed to take away your
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
23 freedom to share and change it. By contrast, the GNU General Public
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
24 License is intended to guarantee your freedom to share and change free
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
25 software---to make sure the software is free for all its users. This
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
26 General Public License applies to most of the Free Software
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
27 Foundation's software and to any other program whose authors commit to
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
28 using it. (Some other Free Software Foundation software is covered by
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
29 the GNU Library General Public License instead.) You can apply it to
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
30 your programs, too.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
31
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
32 When we speak of free software, we are referring to freedom, not
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
33 price. Our General Public Licenses are designed to make sure that you
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
34 have the freedom to distribute copies of free software (and charge for
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
35 this service if you wish), that you receive source code or can get it
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
36 if you want it, that you can change the software or use pieces of it
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
37 in new free programs; and that you know you can do these things.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
38
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
39 To protect your rights, we need to make restrictions that forbid
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
40 anyone to deny you these rights or to ask you to surrender the rights.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
41 These restrictions translate to certain responsibilities for you if you
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
42 distribute copies of the software, or if you modify it.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
43
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
44 For example, if you distribute copies of such a program, whether
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
45 gratis or for a fee, you must give the recipients all the rights that
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
46 you have. You must make sure that they, too, receive or can get the
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
47 source code. And you must show them these terms so they know their
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
48 rights.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
49
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
50 We protect your rights with two steps: (1) copyright the software, and
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
51 (2) offer you this license which gives you legal permission to copy,
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
52 distribute and/or modify the software.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
53
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
54 Also, for each author's protection and ours, we want to make certain
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
55 that everyone understands that there is no warranty for this free
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
56 software. If the software is modified by someone else and passed on, we
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
57 want its recipients to know that what they have is not the original, so
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
58 that any problems introduced by others will not reflect on the original
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
59 authors' reputations.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
60
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
61 Finally, any free program is threatened constantly by software
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
62 patents. We wish to avoid the danger that redistributors of a free
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
63 program will individually obtain patent licenses, in effect making the
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
64 program proprietary. To prevent this, we have made it clear that any
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
65 patent must be licensed for everyone's free use or not licensed at all.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
66
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
67 The precise terms and conditions for copying, distribution and
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
68 modification follow.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
69
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
70 @iftex
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
71 @unnumberedsec TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
72 @end iftex
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
73 @ifinfo
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
74 @center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
75 @end ifinfo
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
76
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
77 @enumerate 0
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
78 @item
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
79 This License applies to any program or other work which contains
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
80 a notice placed by the copyright holder saying it may be distributed
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
81 under the terms of this General Public License. The ``Program'', below,
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
82 refers to any such program or work, and a ``work based on the Program''
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
83 means either the Program or any derivative work under copyright law:
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
84 that is to say, a work containing the Program or a portion of it,
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
85 either verbatim or with modifications and/or translated into another
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
86 language. (Hereinafter, translation is included without limitation in
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
87 the term ``modification''.) Each licensee is addressed as ``you''.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
88
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
89 Activities other than copying, distribution and modification are not
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
90 covered by this License; they are outside its scope. The act of
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
91 running the Program is not restricted, and the output from the Program
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
92 is covered only if its contents constitute a work based on the
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
93 Program (independent of having been made by running the Program).
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
94 Whether that is true depends on what the Program does.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
95
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
96 @item
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
97 You may copy and distribute verbatim copies of the Program's
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
98 source code as you receive it, in any medium, provided that you
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
99 conspicuously and appropriately publish on each copy an appropriate
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
100 copyright notice and disclaimer of warranty; keep intact all the
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
101 notices that refer to this License and to the absence of any warranty;
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
102 and give any other recipients of the Program a copy of this License
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
103 along with the Program.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
104
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
105 You may charge a fee for the physical act of transferring a copy, and
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
106 you may at your option offer warranty protection in exchange for a fee.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
107
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
108 @item
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
109 You may modify your copy or copies of the Program or any portion
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
110 of it, thus forming a work based on the Program, and copy and
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
111 distribute such modifications or work under the terms of Section 1
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
112 above, provided that you also meet all of these conditions:
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
113
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
114 @enumerate a
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
115 @item
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
116 You must cause the modified files to carry prominent notices
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
117 stating that you changed the files and the date of any change.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
118
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
119 @item
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
120 You must cause any work that you distribute or publish, that in
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
121 whole or in part contains or is derived from the Program or any
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
122 part thereof, to be licensed as a whole at no charge to all third
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
123 parties under the terms of this License.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
124
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
125 @item
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
126 If the modified program normally reads commands interactively
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
127 when run, you must cause it, when started running for such
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
128 interactive use in the most ordinary way, to print or display an
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
129 announcement including an appropriate copyright notice and a
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
130 notice that there is no warranty (or else, saying that you provide
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
131 a warranty) and that users may redistribute the program under
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
132 these conditions, and telling the user how to view a copy of this
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
133 License. (Exception: if the Program itself is interactive but
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
134 does not normally print such an announcement, your work based on
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
135 the Program is not required to print an announcement.)
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
136 @end enumerate
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
137
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
138 These requirements apply to the modified work as a whole. If
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
139 identifiable sections of that work are not derived from the Program,
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
140 and can be reasonably considered independent and separate works in
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
141 themselves, then this License, and its terms, do not apply to those
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
142 sections when you distribute them as separate works. But when you
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
143 distribute the same sections as part of a whole which is a work based
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
144 on the Program, the distribution of the whole must be on the terms of
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
145 this License, whose permissions for other licensees extend to the
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
146 entire whole, and thus to each and every part regardless of who wrote it.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
147
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
148 Thus, it is not the intent of this section to claim rights or contest
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
149 your rights to work written entirely by you; rather, the intent is to
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
150 exercise the right to control the distribution of derivative or
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
151 collective works based on the Program.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
152
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
153 In addition, mere aggregation of another work not based on the Program
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
154 with the Program (or with a work based on the Program) on a volume of
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
155 a storage or distribution medium does not bring the other work under
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
156 the scope of this License.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
157
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
158 @item
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
159 You may copy and distribute the Program (or a work based on it,
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
160 under Section 2) in object code or executable form under the terms of
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
161 Sections 1 and 2 above provided that you also do one of the following:
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
162
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
163 @enumerate a
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
164 @item
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
165 Accompany it with the complete corresponding machine-readable
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
166 source code, which must be distributed under the terms of Sections
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
167 1 and 2 above on a medium customarily used for software interchange; or,
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
168
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
169 @item
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
170 Accompany it with a written offer, valid for at least three
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
171 years, to give any third party, for a charge no more than your
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
172 cost of physically performing source distribution, a complete
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
173 machine-readable copy of the corresponding source code, to be
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
174 distributed under the terms of Sections 1 and 2 above on a medium
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
175 customarily used for software interchange; or,
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
176
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
177 @item
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
178 Accompany it with the information you received as to the offer
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
179 to distribute corresponding source code. (This alternative is
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
180 allowed only for noncommercial distribution and only if you
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
181 received the program in object code or executable form with such
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
182 an offer, in accord with Subsection b above.)
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
183 @end enumerate
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
184
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
185 The source code for a work means the preferred form of the work for
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
186 making modifications to it. For an executable work, complete source
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
187 code means all the source code for all modules it contains, plus any
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
188 associated interface definition files, plus the scripts used to
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
189 control compilation and installation of the executable. However, as a
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
190 special exception, the source code distributed need not include
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
191 anything that is normally distributed (in either source or binary
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
192 form) with the major components (compiler, kernel, and so on) of the
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
193 operating system on which the executable runs, unless that component
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
194 itself accompanies the executable.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
195
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
196 If distribution of executable or object code is made by offering
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
197 access to copy from a designated place, then offering equivalent
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
198 access to copy the source code from the same place counts as
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
199 distribution of the source code, even though third parties are not
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
200 compelled to copy the source along with the object code.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
201
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
202 @item
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
203 You may not copy, modify, sublicense, or distribute the Program
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
204 except as expressly provided under this License. Any attempt
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
205 otherwise to copy, modify, sublicense or distribute the Program is
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
206 void, and will automatically terminate your rights under this License.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
207 However, parties who have received copies, or rights, from you under
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
208 this License will not have their licenses terminated so long as such
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
209 parties remain in full compliance.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
210
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
211 @item
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
212 You are not required to accept this License, since you have not
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
213 signed it. However, nothing else grants you permission to modify or
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
214 distribute the Program or its derivative works. These actions are
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
215 prohibited by law if you do not accept this License. Therefore, by
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
216 modifying or distributing the Program (or any work based on the
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
217 Program), you indicate your acceptance of this License to do so, and
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
218 all its terms and conditions for copying, distributing or modifying
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
219 the Program or works based on it.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
220
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
221 @item
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
222 Each time you redistribute the Program (or any work based on the
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
223 Program), the recipient automatically receives a license from the
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
224 original licensor to copy, distribute or modify the Program subject to
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
225 these terms and conditions. You may not impose any further
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
226 restrictions on the recipients' exercise of the rights granted herein.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
227 You are not responsible for enforcing compliance by third parties to
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
228 this License.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
229
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
230 @item
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
231 If, as a consequence of a court judgment or allegation of patent
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
232 infringement or for any other reason (not limited to patent issues),
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
233 conditions are imposed on you (whether by court order, agreement or
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
234 otherwise) that contradict the conditions of this License, they do not
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
235 excuse you from the conditions of this License. If you cannot
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
236 distribute so as to satisfy simultaneously your obligations under this
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
237 License and any other pertinent obligations, then as a consequence you
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
238 may not distribute the Program at all. For example, if a patent
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
239 license would not permit royalty-free redistribution of the Program by
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
240 all those who receive copies directly or indirectly through you, then
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
241 the only way you could satisfy both it and this License would be to
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
242 refrain entirely from distribution of the Program.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
243
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
244 If any portion of this section is held invalid or unenforceable under
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
245 any particular circumstance, the balance of the section is intended to
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
246 apply and the section as a whole is intended to apply in other
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
247 circumstances.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
248
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
249 It is not the purpose of this section to induce you to infringe any
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
250 patents or other property right claims or to contest validity of any
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
251 such claims; this section has the sole purpose of protecting the
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
252 integrity of the free software distribution system, which is
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
253 implemented by public license practices. Many people have made
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
254 generous contributions to the wide range of software distributed
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
255 through that system in reliance on consistent application of that
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
256 system; it is up to the author/donor to decide if he or she is willing
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
257 to distribute software through any other system and a licensee cannot
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
258 impose that choice.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
259
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
260 This section is intended to make thoroughly clear what is believed to
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
261 be a consequence of the rest of this License.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
262
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
263 @item
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
264 If the distribution and/or use of the Program is restricted in
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
265 certain countries either by patents or by copyrighted interfaces, the
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
266 original copyright holder who places the Program under this License
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
267 may add an explicit geographical distribution limitation excluding
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
268 those countries, so that distribution is permitted only in or among
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
269 countries not thus excluded. In such case, this License incorporates
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
270 the limitation as if written in the body of this License.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
271
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
272 @item
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
273 The Free Software Foundation may publish revised and/or new versions
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
274 of the General Public License from time to time. Such new versions will
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
275 be similar in spirit to the present version, but may differ in detail to
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
276 address new problems or concerns.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
277
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
278 Each version is given a distinguishing version number. If the Program
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
279 specifies a version number of this License which applies to it and ``any
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
280 later version'', you have the option of following the terms and conditions
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
281 either of that version or of any later version published by the Free
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
282 Software Foundation. If the Program does not specify a version number of
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
283 this License, you may choose any version ever published by the Free Software
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
284 Foundation.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
285
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
286 @item
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
287 If you wish to incorporate parts of the Program into other free
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
288 programs whose distribution conditions are different, write to the author
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
289 to ask for permission. For software which is copyrighted by the Free
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
290 Software Foundation, write to the Free Software Foundation; we sometimes
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
291 make exceptions for this. Our decision will be guided by the two goals
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
292 of preserving the free status of all derivatives of our free software and
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
293 of promoting the sharing and reuse of software generally.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
294
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
295 @iftex
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
296 @heading NO WARRANTY
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
297 @end iftex
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
298 @ifinfo
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
299 @center NO WARRANTY
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
300 @end ifinfo
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
301
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
302 @item
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
303 BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
304 FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW@. EXCEPT WHEN
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
305 OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
306 PROVIDE THE PROGRAM ``AS IS'' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
307 OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
308 MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE@. THE ENTIRE RISK AS
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
309 TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU@. SHOULD THE
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
310 PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
311 REPAIR OR CORRECTION.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
312
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
313 @item
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
314 IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
315 WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
316 REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
317 INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
318 OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
319 TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
320 YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
321 PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
322 POSSIBILITY OF SUCH DAMAGES.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
323 @end enumerate
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
324
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
325 @iftex
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
326 @heading END OF TERMS AND CONDITIONS
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
327 @end iftex
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
328 @ifinfo
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
329 @center END OF TERMS AND CONDITIONS
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
330 @end ifinfo
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
331
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
332 @page
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
333 @unnumberedsec How to Apply These Terms to Your New Programs
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
334
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
335 If you develop a new program, and you want it to be of the greatest
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
336 possible use to the public, the best way to achieve this is to make it
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
337 free software which everyone can redistribute and change under these terms.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
338
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
339 To do so, attach the following notices to the program. It is safest
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
340 to attach them to the start of each source file to most effectively
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
341 convey the exclusion of warranty; and each file should have at least
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
342 the ``copyright'' line and a pointer to where the full notice is found.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
343
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
344 @smallexample
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
345 @var{one line to give the program's name and an idea of what it does.}
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22366
diff changeset
346 Copyright (C) @var{year} @var{name of author}
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
347
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
348 This program is free software; you can redistribute it and/or
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
349 modify it under the terms of the GNU General Public License
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
350 as published by the Free Software Foundation; either version 2
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
351 of the License, or (at your option) any later version.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
352
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
353 This program is distributed in the hope that it will be useful,
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
354 but WITHOUT ANY WARRANTY; without even the implied warranty of
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
355 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE@. See the
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
356 GNU General Public License for more details.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
357
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
358 You should have received a copy of the GNU General Public License
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
359 along with this program; if not, write to the Free Software
22366
804f5341ce1d changed old address to 59 Temple address in licence. - Brian
Brian Youmans <3diff@gnu.org>
parents: 22274
diff changeset
360 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
361 @end smallexample
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
362
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
363 Also add information on how to contact you by electronic and paper mail.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
364
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
365 If the program is interactive, make it output a short notice like this
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
366 when it starts in an interactive mode:
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
367
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
368 @smallexample
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22366
diff changeset
369 Gnomovision version 69, Copyright (C) @var{year} @var{name of author}
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
370 Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
371 type `show w'. This is free software, and you are welcome
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
372 to redistribute it under certain conditions; type `show c'
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
373 for details.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
374 @end smallexample
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
375
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
376 The hypothetical commands @samp{show w} and @samp{show c} should show
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
377 the appropriate parts of the General Public License. Of course, the
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
378 commands you use may be called something other than @samp{show w} and
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
379 @samp{show c}; they could even be mouse-clicks or menu items---whatever
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
380 suits your program.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
381
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
382 You should also get your employer (if you work as a programmer) or your
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
383 school, if any, to sign a ``copyright disclaimer'' for the program, if
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
384 necessary. Here is a sample; alter the names:
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
385
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
386 @smallexample
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
387 @group
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
388 Yoyodyne, Inc., hereby disclaims all copyright
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
389 interest in the program `Gnomovision'
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
390 (which makes passes at compilers) written
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
391 by James Hacker.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
392
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
393 @var{signature of Ty Coon}, 1 April 1989
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
394 Ty Coon, President of Vice
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
395 @end group
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
396 @end smallexample
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
397
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
398 This General Public License does not permit incorporating your program into
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
399 proprietary programs. If your program is a subroutine library, you may
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
400 consider it more useful to permit linking proprietary applications with the
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
401 library. If this is what you want to do, use the GNU Library General
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
402 Public License instead of this License.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
403
7114
31cb9f9b9784 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6453
diff changeset
404 @node Introduction, Lisp Data Types, Copying, Top
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
405 @chapter Introduction
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
406
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
407 Most of the GNU Emacs text editor is written in the programming
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
408 language called Emacs Lisp. You can write new code in Emacs Lisp and
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
409 install it as an extension to the editor. However, Emacs Lisp is more
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
410 than a mere ``extension language''; it is a full computer programming
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
411 language in its own right. You can use it as you would any other
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
412 programming language.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
413
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
414 Because Emacs Lisp is designed for use in an editor, it has special
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
415 features for scanning and parsing text as well as features for handling
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
416 files, buffers, displays, subprocesses, and so on. Emacs Lisp is
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
417 closely integrated with the editing facilities; thus, editing commands
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
418 are functions that can also conveniently be called from Lisp programs,
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
419 and parameters for customization are ordinary Lisp variables.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
420
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
421 This manual attempts to be a full description of Emacs Lisp. For a
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
422 beginner's introduction to Emacs Lisp, see @cite{An Introduction to
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
423 Emacs Lisp Programming}, by Bob Chassell, also published by the Free
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
424 Software Foundation. This manual presumes considerable familiarity with
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
425 the use of Emacs for editing; see @cite{The GNU Emacs Manual} for this
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
426 basic information.
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
427
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
428 Generally speaking, the earlier chapters describe features of Emacs
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
429 Lisp that have counterparts in many programming languages, and later
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
430 chapters describe features that are peculiar to Emacs Lisp or relate
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
431 specifically to editing.
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
432
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12282
diff changeset
433 This is edition 2.5.
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
434
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
435 @menu
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
436 * Caveats:: Flaws and a request for help.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
437 * Lisp History:: Emacs Lisp is descended from Maclisp.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
438 * Conventions:: How the manual is formatted.
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
439 * Version Info:: Which Emacs version is running?
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
440 * Acknowledgements:: The authors, editors, and sponsors of this manual.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
441 @end menu
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
442
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
443 @node Caveats
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
444 @section Caveats
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
445
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
446 This manual has gone through numerous drafts. It is nearly complete
7114
31cb9f9b9784 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6453
diff changeset
447 but not flawless. There are a few topics that are not covered, either
31cb9f9b9784 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6453
diff changeset
448 because we consider them secondary (such as most of the individual
31cb9f9b9784 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6453
diff changeset
449 modes) or because they are yet to be written. Because we are not able
31cb9f9b9784 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6453
diff changeset
450 to deal with them completely, we have left out several parts
31cb9f9b9784 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6453
diff changeset
451 intentionally. This includes most information about usage on VMS.
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
452
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
453 The manual should be fully correct in what it does cover, and it is
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
454 therefore open to criticism on anything it says---from specific examples
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
455 and descriptive text, to the ordering of chapters and sections. If
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
456 something is confusing, or you find that you have to look at the sources
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
457 or experiment to learn something not covered in the manual, then perhaps
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
458 the manual should be fixed. Please let us know.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
459
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
460 @iftex
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25751
diff changeset
461 As you use this manual, we ask that you mark pages with corrections so
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25751
diff changeset
462 you can later look them up and send them to us. If you think of a simple,
7114
31cb9f9b9784 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6453
diff changeset
463 real-life example for a function or group of functions, please make an
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
464 effort to write it up and send it in. Please reference any comments to
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
465 the chapter name, section name, and function name, as appropriate, since
7114
31cb9f9b9784 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6453
diff changeset
466 page numbers and chapter and section numbers will change and we may have
31cb9f9b9784 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6453
diff changeset
467 trouble finding the text you are talking about. Also state the number
31cb9f9b9784 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6453
diff changeset
468 of the edition you are criticizing.
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
469 @end iftex
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
470 @ifinfo
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
471
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
472 As you use this manual, we ask that you send corrections as soon as you
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
473 find them. If you think of a simple, real life example for a function
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
474 or group of functions, please make an effort to write it up and send it
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
475 in. Please reference any comments to the node name and function or
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
476 variable name, as appropriate. Also state the number of the edition
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25751
diff changeset
477 you are criticizing.
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
478 @end ifinfo
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
479
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
480 Please mail comments and corrections to
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
481
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
482 @example
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
483 bug-lisp-manual@@gnu.org
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
484 @end example
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
485
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
486 @noindent
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
487 We let mail to this list accumulate unread until someone decides to
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
488 apply the corrections. Months, and sometimes years, go by between
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
489 updates. So please attach no significance to the lack of a reply---your
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
490 mail @emph{will} be acted on in due time. If you want to contact the
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
491 Emacs maintainers more quickly, send mail to
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
492 @code{bug-gnu-emacs@@gnu.org}.
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
493
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
494 @node Lisp History
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
495 @section Lisp History
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
496 @cindex Lisp history
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
497
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
498 Lisp (LISt Processing language) was first developed in the late 1950s
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
499 at the Massachusetts Institute of Technology for research in artificial
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
500 intelligence. The great power of the Lisp language makes it ideal
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
501 for other purposes as well, such as writing editing commands.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
502
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
503 @cindex Maclisp
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
504 @cindex Common Lisp
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
505 Dozens of Lisp implementations have been built over the years, each
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
506 with its own idiosyncrasies. Many of them were inspired by Maclisp,
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
507 which was written in the 1960s at MIT's Project MAC. Eventually the
7114
31cb9f9b9784 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6453
diff changeset
508 implementors of the descendants of Maclisp came together and developed a
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
509 standard for Lisp systems, called Common Lisp. In the meantime, Gerry
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
510 Sussman and Guy Steele at MIT developed a simplified but very powerful
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
511 dialect of Lisp, called Scheme.
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
512
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
513 GNU Emacs Lisp is largely inspired by Maclisp, and a little by Common
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
514 Lisp. If you know Common Lisp, you will notice many similarities.
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
515 However, many features of Common Lisp have been omitted or
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
516 simplified in order to reduce the memory requirements of GNU Emacs.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
517 Sometimes the simplifications are so drastic that a Common Lisp user
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
518 might be very confused. We will occasionally point out how GNU Emacs
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
519 Lisp differs from Common Lisp. If you don't know Common Lisp, don't
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
520 worry about it; this manual is self-contained.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
521
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
522 @pindex cl
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
523 A certain amount of Common Lisp emulation is available via the
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22366
diff changeset
524 @file{cl} library. @xref{Top,, Common Lisp Extension, cl, Common Lisp
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
525 Extensions}.
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
526
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
527 Emacs Lisp is not at all influenced by Scheme; but the GNU project has
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
528 an implementation of Scheme, called Guile. We use Guile in all new GNU
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
529 software that calls for extensibility.
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
530
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
531 @node Conventions
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
532 @section Conventions
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
533
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
534 This section explains the notational conventions that are used in this
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
535 manual. You may want to skip this section and refer back to it later.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
536
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
537 @menu
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
538 * Some Terms:: Explanation of terms we use in this manual.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
539 * nil and t:: How the symbols @code{nil} and @code{t} are used.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
540 * Evaluation Notation:: The format we use for examples of evaluation.
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
541 * Printing Notation:: The format we use when examples print text.
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
542 * Error Messages:: The format we use for examples of errors.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
543 * Buffer Text Notation:: The format we use for buffer contents in examples.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
544 * Format of Descriptions:: Notation for describing functions, variables, etc.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
545 @end menu
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
546
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
547 @node Some Terms
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
548 @subsection Some Terms
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
549
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
550 Throughout this manual, the phrases ``the Lisp reader'' and ``the Lisp
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
551 printer'' refer to those routines in Lisp that convert textual
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
552 representations of Lisp objects into actual Lisp objects, and vice
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
553 versa. @xref{Printed Representation}, for more details. You, the
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
554 person reading this manual, are thought of as ``the programmer'' and are
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
555 addressed as ``you''. ``The user'' is the person who uses Lisp
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
556 programs, including those you write.
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
557
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
558 @cindex fonts
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22366
diff changeset
559 Examples of Lisp code are formatted like this: @code{(list 1 2 3)}.
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22366
diff changeset
560 Names that represent metasyntactic variables, or arguments to a function
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22366
diff changeset
561 being described, are formatted like this: @var{first-number}.
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
562
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
563 @node nil and t
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
564 @subsection @code{nil} and @code{t}
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
565 @cindex @code{nil}, uses of
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
566 @cindex truth value
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
567 @cindex boolean
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
568 @cindex false
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
569
12098
a6eb5f12b0f3 *** empty log message ***
Karl Heuer <kwzh@gnu.org>
parents: 7114
diff changeset
570 In Lisp, the symbol @code{nil} has three separate meanings: it
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
571 is a symbol with the name @samp{nil}; it is the logical truth value
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
572 @var{false}; and it is the empty list---the list of zero elements.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
573 When used as a variable, @code{nil} always has the value @code{nil}.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
574
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
575 As far as the Lisp reader is concerned, @samp{()} and @samp{nil} are
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
576 identical: they stand for the same object, the symbol @code{nil}. The
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
577 different ways of writing the symbol are intended entirely for human
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
578 readers. After the Lisp reader has read either @samp{()} or @samp{nil},
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
579 there is no way to determine which representation was actually written
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
580 by the programmer.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
581
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
582 In this manual, we use @code{()} when we wish to emphasize that it
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
583 means the empty list, and we use @code{nil} when we wish to emphasize
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
584 that it means the truth value @var{false}. That is a good convention to use
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
585 in Lisp programs also.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
586
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
587 @example
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
588 (cons 'foo ()) ; @r{Emphasize the empty list}
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
589 (not nil) ; @r{Emphasize the truth value @var{false}}
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
590 @end example
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
591
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
592 @cindex @code{t} and truth
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
593 @cindex true
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
594 In contexts where a truth value is expected, any non-@code{nil} value
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
595 is considered to be @var{true}. However, @code{t} is the preferred way
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
596 to represent the truth value @var{true}. When you need to choose a
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
597 value which represents @var{true}, and there is no other basis for
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
598 choosing, use @code{t}. The symbol @code{t} always has the value
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
599 @code{t}.
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
600
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
601 In Emacs Lisp, @code{nil} and @code{t} are special symbols that always
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
602 evaluate to themselves. This is so that you do not need to quote them
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
603 to use them as constants in a program. An attempt to change their
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
604 values results in a @code{setting-constant} error. The same is true of
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
605 any symbol whose name starts with a colon (@samp{:}). @xref{Constant
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
606 Variables}.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
607
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
608 @node Evaluation Notation
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
609 @subsection Evaluation Notation
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
610 @cindex evaluation notation
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
611 @cindex documentation notation
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
612
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
613 A Lisp expression that you can evaluate is called a @dfn{form}.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
614 Evaluating a form always produces a result, which is a Lisp object. In
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
615 the examples in this manual, this is indicated with @samp{@result{}}:
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
616
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
617 @example
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
618 (car '(1 2))
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
619 @result{} 1
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
620 @end example
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
621
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
622 @noindent
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
623 You can read this as ``@code{(car '(1 2))} evaluates to 1''.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
624
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
625 When a form is a macro call, it expands into a new form for Lisp to
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
626 evaluate. We show the result of the expansion with
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
627 @samp{@expansion{}}. We may or may not show the result of the
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
628 evaluation of the expanded form.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
629
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
630 @example
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
631 (third '(a b c))
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
632 @expansion{} (car (cdr (cdr '(a b c))))
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
633 @result{} c
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
634 @end example
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
635
7114
31cb9f9b9784 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6453
diff changeset
636 Sometimes to help describe one form we show another form that
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
637 produces identical results. The exact equivalence of two forms is
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
638 indicated with @samp{@equiv{}}.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
639
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
640 @example
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
641 (make-sparse-keymap) @equiv{} (list 'keymap)
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
642 @end example
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
643
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
644 @node Printing Notation
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
645 @subsection Printing Notation
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
646 @cindex printing notation
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
647
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
648 Many of the examples in this manual print text when they are
7114
31cb9f9b9784 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6453
diff changeset
649 evaluated. If you execute example code in a Lisp Interaction buffer
31cb9f9b9784 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6453
diff changeset
650 (such as the buffer @samp{*scratch*}), the printed text is inserted into
31cb9f9b9784 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6453
diff changeset
651 the buffer. If you execute the example by other means (such as by
31cb9f9b9784 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 6453
diff changeset
652 evaluating the function @code{eval-region}), the printed text is
26288
6119687f6888 Patch from rms.
Gerd Moellmann <gerd@gnu.org>
parents: 25875
diff changeset
653 displayed in the echo area.
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
654
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
655 Examples in this manual indicate printed text with @samp{@print{}},
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
656 irrespective of where that text goes. The value returned by evaluating
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
657 the form (here @code{bar}) follows on a separate line.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
658
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
659 @example
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
660 @group
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
661 (progn (print 'foo) (print 'bar))
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
662 @print{} foo
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
663 @print{} bar
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
664 @result{} bar
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
665 @end group
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
666 @end example
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
667
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
668 @node Error Messages
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
669 @subsection Error Messages
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
670 @cindex error message notation
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
671
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
672 Some examples signal errors. This normally displays an error message
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
673 in the echo area. We show the error message on a line starting with
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
674 @samp{@error{}}. Note that @samp{@error{}} itself does not appear in
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
675 the echo area.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
676
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
677 @example
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
678 (+ 23 'x)
21007
66d807bdc5b4 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 12282
diff changeset
679 @error{} Wrong type argument: number-or-marker-p, x
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
680 @end example
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
681
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
682 @node Buffer Text Notation
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
683 @subsection Buffer Text Notation
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
684 @cindex buffer text notation
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
685
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22366
diff changeset
686 Some examples describe modifications to the contents of a buffer, by
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22366
diff changeset
687 showing the ``before'' and ``after'' versions of the text. These
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22366
diff changeset
688 examples show the contents of the buffer in question between two lines
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22366
diff changeset
689 of dashes containing the buffer name. In addition, @samp{@point{}}
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22366
diff changeset
690 indicates the location of point. (The symbol for point, of course, is
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22366
diff changeset
691 not part of the text in the buffer; it indicates the place
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22366
diff changeset
692 @emph{between} two characters where point is currently located.)
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
693
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
694 @example
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
695 ---------- Buffer: foo ----------
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
696 This is the @point{}contents of foo.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
697 ---------- Buffer: foo ----------
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
698
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
699 (insert "changed ")
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
700 @result{} nil
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
701 ---------- Buffer: foo ----------
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
702 This is the changed @point{}contents of foo.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
703 ---------- Buffer: foo ----------
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
704 @end example
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
705
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
706 @node Format of Descriptions
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
707 @subsection Format of Descriptions
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
708 @cindex description format
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
709
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
710 Functions, variables, macros, commands, user options, and special
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
711 forms are described in this manual in a uniform format. The first
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
712 line of a description contains the name of the item followed by its
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
713 arguments, if any.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
714 @ifinfo
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
715 The category---function, variable, or whatever---appears at the
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
716 beginning of the line.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
717 @end ifinfo
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
718 @iftex
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
719 The category---function, variable, or whatever---is printed next to the
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
720 right margin.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
721 @end iftex
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
722 The description follows on succeeding lines, sometimes with examples.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
723
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
724 @menu
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
725 * A Sample Function Description:: A description of an imaginary
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
726 function, @code{foo}.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
727 * A Sample Variable Description:: A description of an imaginary
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
728 variable,
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
729 @code{electric-future-map}.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
730 @end menu
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
731
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
732 @node A Sample Function Description
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
733 @subsubsection A Sample Function Description
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
734 @cindex function descriptions
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
735 @cindex command descriptions
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
736 @cindex macro descriptions
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
737 @cindex special form descriptions
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
738
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
739 In a function description, the name of the function being described
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
740 appears first. It is followed on the same line by a list of argument
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
741 names. These names are also used in the body of the description, to
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
742 stand for the values of the arguments.
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
743
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
744 The appearance of the keyword @code{&optional} in the argument list
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
745 indicates that the subsequent arguments may be omitted (omitted
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
746 arguments default to @code{nil}). Do not write @code{&optional} when
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
747 you call the function.
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
748
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
749 The keyword @code{&rest} (which must be followed by a single argument
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
750 name) indicates that any number of arguments can follow. The single
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
751 following argument name will have a value, as a variable, which is a
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
752 list of all these remaining arguments. Do not write @code{&rest} when
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
753 you call the function.
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
754
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
755 Here is a description of an imaginary function @code{foo}:
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
756
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
757 @defun foo integer1 &optional integer2 &rest integers
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
758 The function @code{foo} subtracts @var{integer1} from @var{integer2},
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
759 then adds all the rest of the arguments to the result. If @var{integer2}
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
760 is not supplied, then the number 19 is used by default.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
761
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
762 @example
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
763 (foo 1 5 3 9)
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
764 @result{} 16
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
765 (foo 5)
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
766 @result{} 14
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
767 @end example
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
768
22274
f0cd03a7dac9 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22252
diff changeset
769 @need 1500
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
770 More generally,
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
771
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
772 @example
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
773 (foo @var{w} @var{x} @var{y}@dots{})
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
774 @equiv{}
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
775 (+ (- @var{x} @var{w}) @var{y}@dots{})
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
776 @end example
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
777 @end defun
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
778
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
779 Any argument whose name contains the name of a type (e.g.,
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
780 @var{integer}, @var{integer1} or @var{buffer}) is expected to be of that
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
781 type. A plural of a type (such as @var{buffers}) often means a list of
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
782 objects of that type. Arguments named @var{object} may be of any type.
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
783 (@xref{Lisp Data Types}, for a list of Emacs object types.) Arguments
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
784 with other sorts of names (e.g., @var{new-file}) are discussed
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
785 specifically in the description of the function. In some sections,
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
786 features common to the arguments of several functions are described at
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
787 the beginning.
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
788
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
789 @xref{Lambda Expressions}, for a more complete description of optional
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
790 and rest arguments.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
791
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
792 Command, macro, and special form descriptions have the same format,
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
793 but the word `Function' is replaced by `Command', `Macro', or `Special
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
794 Form', respectively. Commands are simply functions that may be called
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
795 interactively; macros process their arguments differently from functions
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
796 (the arguments are not evaluated), but are presented the same way.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
797
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
798 Special form descriptions use a more complex notation to specify
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
799 optional and repeated arguments because they can break the argument
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
800 list down into separate arguments in more complicated ways.
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
801 @samp{@r{[}@var{optional-arg}@r{]}} means that @var{optional-arg} is
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
802 optional and @samp{@var{repeated-args}@dots{}} stands for zero or more
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
803 arguments. Parentheses are used when several arguments are grouped into
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
804 additional levels of list structure. Here is an example:
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
805
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
806 @defspec count-loop (@var{var} [@var{from} @var{to} [@var{inc}]]) @var{body}@dots{}
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
807 This imaginary special form implements a loop that executes the
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
808 @var{body} forms and then increments the variable @var{var} on each
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
809 iteration. On the first iteration, the variable has the value
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
810 @var{from}; on subsequent iterations, it is incremented by one (or by
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
811 @var{inc} if that is given). The loop exits before executing @var{body}
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
812 if @var{var} equals @var{to}. Here is an example:
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
813
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
814 @example
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
815 (count-loop (i 0 10)
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
816 (prin1 i) (princ " ")
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
817 (prin1 (aref vector i))
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
818 (terpri))
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
819 @end example
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
820
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
821 If @var{from} and @var{to} are omitted, @var{var} is bound to
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
822 @code{nil} before the loop begins, and the loop exits if @var{var} is
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
823 non-@code{nil} at the beginning of an iteration. Here is an example:
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
824
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
825 @example
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
826 (count-loop (done)
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
827 (if (pending)
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
828 (fixit)
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
829 (setq done t)))
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
830 @end example
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
831
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
832 In this special form, the arguments @var{from} and @var{to} are
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
833 optional, but must both be present or both absent. If they are present,
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
834 @var{inc} may optionally be specified as well. These arguments are
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
835 grouped with the argument @var{var} into a list, to distinguish them
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
836 from @var{body}, which includes all remaining elements of the form.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
837 @end defspec
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
838
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
839 @node A Sample Variable Description
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
840 @subsubsection A Sample Variable Description
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
841 @cindex variable descriptions
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
842 @cindex option descriptions
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
843
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
844 A @dfn{variable} is a name that can hold a value. Although any
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
845 variable can be set by the user, certain variables that exist
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
846 specifically so that users can change them are called @dfn{user
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
847 options}. Ordinary variables and user options are described using a
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
848 format like that for functions except that there are no arguments.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
849
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
850 Here is a description of the imaginary @code{electric-future-map}
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
851 variable.@refill
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
852
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
853 @defvar electric-future-map
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
854 The value of this variable is a full keymap used by Electric Command
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
855 Future mode. The functions in this map allow you to edit commands you
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
856 have not yet thought about executing.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
857 @end defvar
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
858
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
859 User option descriptions have the same format, but `Variable' is
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
860 replaced by `User Option'.
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
861
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
862 @node Version Info
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
863 @section Version Information
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
864
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
865 These facilities provide information about which version of Emacs is
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
866 in use.
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
867
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
868 @deffn Command emacs-version
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
869 This function returns a string describing the version of Emacs that is
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
870 running. It is useful to include this string in bug reports.
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
871
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
872 @smallexample
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
873 @group
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
874 (emacs-version)
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
875 @result{} "GNU Emacs 20.3.5 (i486-pc-linux-gnulibc1, X toolkit)
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
876 of Sat Feb 14 1998 on psilocin.gnu.org"
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
877 @end group
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
878 @end smallexample
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
879
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
880 Called interactively, the function prints the same information in the
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
881 echo area.
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
882 @end deffn
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
883
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
884 @defvar emacs-build-time
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
885 The value of this variable indicates the time at which Emacs was built
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
886 at the local site. It is a list of three integers, like the value
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
887 of @code{current-time} (@pxref{Time of Day}).
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
888
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
889 @example
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
890 @group
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
891 emacs-build-time
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
892 @result{} (13623 62065 344633)
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
893 @end group
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
894 @end example
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
895 @end defvar
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
896
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
897 @defvar emacs-version
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
898 The value of this variable is the version of Emacs being run. It is a
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
899 string such as @code{"20.3.1"}. The last number in this string is not
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
900 really part of the Emacs release version number; it is incremented each
25751
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22366
diff changeset
901 time you build Emacs in any given directory. A value with three numeric
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22366
diff changeset
902 components, such as @code{"20.3.9.1"}, indicates an unreleased test
467b88fab665 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 22366
diff changeset
903 version.
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
904 @end defvar
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
905
22138
d4ac295a98b3 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21682
diff changeset
906 The following two variables have existed since Emacs version 19.23:
21682
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
907
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
908 @defvar emacs-major-version
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
909 The major version number of Emacs, as an integer. For Emacs version
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
910 20.3, the value is 20.
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
911 @end defvar
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
912
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
913 @defvar emacs-minor-version
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
914 The minor version number of Emacs, as an integer. For Emacs version
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
915 20.3, the value is 3.
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
916 @end defvar
90da2489c498 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 21007
diff changeset
917
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
918 @node Acknowledgements
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
919 @section Acknowledgements
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
920
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
921 This manual was written by Robert Krawitz, Bil Lewis, Dan LaLiberte,
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
922 Richard M. Stallman and Chris Welty, the volunteers of the GNU manual
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
923 group, in an effort extending over several years. Robert J. Chassell
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
924 helped to review and edit the manual, with the support of the Defense
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
925 Advanced Research Projects Agency, ARPA Order 6082, arranged by Warren
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25751
diff changeset
926 A. Hunt, Jr.@: of Computational Logic, Inc.
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
927
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
928 Corrections were supplied by Karl Berry, Jim Blandy, Bard Bloom,
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
929 Stephane Boucher, David Boyes, Alan Carroll, Richard Davis, Lawrence
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
930 R. Dodd, Peter Doornbosch, David A. Duff, Chris Eich, Beverly
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
931 Erlebacher, David Eckelkamp, Ralf Fassel, Eirik Fuller, Stephen Gildea,
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
932 Bob Glickstein, Eric Hanchrow, George Hartzell, Nathan Hess, Masayuki
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
933 Ida, Dan Jacobson, Jak Kirman, Bob Knighten, Frederick M. Korz, Joe
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
934 Lammens, Glenn M. Lewis, K. Richard Magill, Brian Marick, Roland
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
935 McGrath, Skip Montanaro, John Gardiner Myers, Thomas A. Peterson,
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
936 Francesco Potorti, Friedrich Pukelsheim, Arnold D. Robbins, Raul
25875
6a17c48b52ef *** empty log message ***
Phillip Rulon <pjr@gnu.org>
parents: 25751
diff changeset
937 Rockwell, Per Starb@"ack, Shinichirou Sugou, Kimmo Suominen, Edward Tharp,
6453
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
938 Bill Trost, Rickard Westman, Jean White, Matthew Wilding, Carl Witty,
974a37e5c414 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
939 Dale Worley, Rusty Wright, and David D. Zuhn.