gc6.2alpha6

This commit is contained in:
Dave Love 2003-06-16 15:19:53 +00:00
parent 57195179e8
commit edff1322fb
1956 changed files with 1783 additions and 1907030 deletions

42
.gitignore vendored
View file

@ -1,42 +0,0 @@
# CVS default ignores begin
tags
TAGS
.make.state
.nse_depinfo
*~
#*
.#*
,*
_$*
*$
*.old
*.bak
*.BAK
*.orig
*.rej
.del-*
*.a
*.olb
*.o
*.obj
*.so
*.exe
*.Z
*.elc
*.ln
core
# CVS default ignores end
configure
bin
boot.log
boot.log.diff
boot.log.old
update.log
config.log
config.status
config.cache
Makefile
emacs*.tar.gz
leim*.tar.gz
*.xdelta
autom4te.cache

1922
AUTHORS

File diff suppressed because it is too large Load diff

26
BUGS
View file

@ -1,26 +0,0 @@
If you think you may have found a bug in GNU Emacs, please
read the Bugs section of the Emacs manual for advice on
(1) how to tell when to report a bug, and
(2) how to write a useful bug report and what information
it needs to have.
There are three ways to read the Bugs section.
(1) In a printed copy of the Emacs manual.
You can order one from the Free Software Foundation;
see the file etc/ORDERS. But if you don't have a copy on
hand and you think you have found a bug, you shouldn't wait
to get a printed manual; you should read the section right away
as described below.
(2) With Info. Start Emacs, do C-h i to enter Info,
then m Emacs RET to get to the Emacs manual, then m Bugs RET
to get to the section on bugs. Or use standalone Info in
a like manner. (Standalone Info is part of the Texinfo distribution,
not part of the Emacs distribution.)
(3) By hand. Do
cat info/emacs* | more "+/^File: emacs, Node: Bugs,"
Please first check the file etc/PROBLEMS (e.g. with C-h P in Emacs) to
make sure it isn't a known issue.

340
COPYING
View file

@ -1,340 +0,0 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

5629
ChangeLog

File diff suppressed because it is too large Load diff

234
FTP
View file

@ -1,234 +0,0 @@
-*- text -*-
How to get GNU Software by Internet FTP or by UUCP. Last updated 1999-01-20
* Please send improvements to this file to gnu@gnu.org.
* No Warranties
We distribute software in the hope that it will be useful, but without
any warranty. No author or distributor of this software accepts
responsibility to anyone for the consequences of using it or for
whether it serves any particular purpose or works at all, unless he
says so in writing. This is exactly the same warranty that the proprietary
software companies offer: None. If the distribution is incomplete or the
media fails, you can always download a replacement from any of the GNU
mirrors, free of charge.
* Updates
You can always find the most recent version of this list of GNU FTP sites at
http://www.gnu.org/order/ftp.html
* How to FTP
Use the ftp program on your system (ask locally if you can't find it)
to connect to the host you are ftping from. Unless indicated
otherwise, login in as user "anonymous", with password: "your e-mail
address" and set "binary" mode (to transfer all eight bits in each
byte).
ALWAYS USE BINARY/IMAGE MODE TO TRANSFER THESE FILES!
Text mode does not work for tar files or compressed files.
* GNU Software and How To FTP It
GNU software is available on ftp.gnu.org under the directory /gnu.
diff files to convert between versions exist for some of these
programs. Some programs have misc support files as well. Have a look
on ftp.gnu.org to see which ones. In most cases, the tar or diff
files are compressed with the `gzip' program; this is indicated with
the .gz suffix. Binaries for gzip can be downloaded from
http://www.gzip.org.
Descriptions of GNU software are available at
http://www.gnu.org/software/software.html
and in the Free Software Directory at
http://www.gnu.org/directory/index.html
* Alternative Internet FTP Sources
The canonical GNU ftp site is located at ftp.gnu.org/gnu.
You should probably use one of the many mirrors of that site - the
mirrors will be less busy, and you can find one closer to your site.
* GNU FTP Site Mirror List
United States:
California - mirrors.kernel.org/gnu, http://mirrors.kernel.org/gnu
California - gatekeeper.dec.com/pub/GNU/
California - ftp.keystealth.org/pub/gnu/
Illinois - uiarchive.cso.uiuc.edu/pub/ftp/ftp.gnu.org/gnu/
Indiana - ftp.in-span.net/pub/mirrors/ftp.gnu.org/
Kentucky - gnu.ms.uky.edu/pub/mirrors/gnu/
Maryland - ftp.digex.net/pub/gnu/
Massachusetts - aeneas.mit.edu/pub/gnu/
Michigan - ftp.egr.msu.edu/pub/gnu/, http://ftp.egr.msu.edu/pub/gnu/
Michigan - ftp.wayne.edu/gnu_mirror/
Missouri - wuarchive.wustl.edu/systems/gnu/
New Jersey - gnu.teleglobe.net/ftp.gnu.org/
New York - ftp.cs.columbia.edu/archives/gnu/prep/
New York - ftp.ece.cornell.edu/pub/mirrors/gnu/
North Carolina - http://www.ibiblio.org/pub/gnu/
Ohio - ftp.cis.ohio-state.edu/mirror/gnu/
Pennsylvania - boron.club.cc.cmu.edu/gnu/
Tennessee - sunsite.utk.edu/pub/gnu/ftp/, thales.memphis.edu/pub/gnu/
Washington - ftp.nodomainname.net/pub/mirrors/gnu/, gnu.wwc.edu/
Wisconsin - ftp.twtelecom.net/pub/GNU/
Africa:
South Africa - ftp.sun.ac.za/mirrorsites/ftp.gnu.org/pub/gnu
The Americas:
Brazil - ftp.unicamp.br/pub/gnu/
Brazil - master.softaplic.com.br/pub/gnu/
Brazil - ftp.matrix.com.br/pub/gnu/
Canada - ftp.cs.ubc.ca/mirror2/gnu/
Chile - ftp.inf.utfsm.cl/pub/gnu/
Costa Rica - sunsite.ulatina.ac.cr/Mirrors/GNU/
Mexico - www.gnu.unam.mx/pub/gnu/software/
Mexico - gnu.cem.itesm.mx/pub/mirrors/gnu.org/
Mexico - ftp.azc.uam.mx/mirrors/gnu/
Australia:
Australia - mirror.aarnet.edu.au/pub/gnu/
Australia - gnu.mirror.pacific.net.au/gnu/
Asia:
China - ftp.sea9.com/pub/gnu/
China - ftp.cs.cuhk.edu.hk/pub/gnu/gnu/
China - sunsite.ust.hk/pub/gnu/
China - ftp.shellhung.org/pub/gnu/
India - ftp.kernel.org.in/gnu.org/
India - http://kernel.org.in/mirrors/gnu.org/
India - www.imtech.res.in/mirror/gnuftp/
Indonesia - sapi.vlsm.org/gnu
Indonesia - http://sapi.vlsm.org/gnu/
Israel - ftp.cs.huji.ac.il/mirror/GNU
Japan - tron.um.u-tokyo.ac.jp/pub/GNU/prep/
Japan - core.ring.gr.jp/pub/GNU/
Japan - ftp.ring.gr.jp/pub/GNU/
Japan - mirrors.hbi.co.jp/gnu/
Japan - ftp.ayamura.org/pub/gnu/
Korea - cair-archive.kaist.ac.kr/pub/gnu/ (Internet address 143.248.186.3)
Korea - ftpmirror.hanyang.ac.kr/GNU/
Korea - ftp.linux.sarang.net/mirror/gnu/gnu/ (also mirrors alpha.gnu.org/gnu/ at ../alpha/)
Korea - ftp.xgate.co.kr/pub/mirror/gnu/
Saudi Arabia - ftp.isu.net.sa/pub/gnu/
Taiwan - ftp.nctu.edu.tw/UNIX/gnu/, coda.nctu.edu.tw/UNIX/gnu/
Taiwan - ftp1.sinica.edu.tw/pub3/GNU/gnu/
Thailand - ftp.nectec.or.th/pub/mirrors/gnu/
Europe:
Austria - ftp.gnu.vbs.at/
Austria - ftp.univie.ac.at/packages/gnu/
Austria - gd.tuwien.ac.at/gnu/gnusrc/
Austria - http://gd.tuwien.ac.at/gnu/gnusrc/
Czech Republic - ftp.fi.muni.cz/pub/gnu/
Denmark - ftp.denet.dk/mirror/ftp.gnu.org/pub/gnu
Denmark - ftp.dkuug.dk/pub/gnu/
Denmark - sunsite.dk/mirrors/gnu, http://mirrors.sunsite.dk/gnu
Finland - ftp.funet.fi/pub/gnu/prep/
France - ftp.irisa.fr/pub/gnu/
France - ftp.medasys-digital-systems.fr/pub/gnu/
France - ftp.cs.univ-paris8.fr/mirrors/ftp.gnu.org/
Germany - ftp.cs.tu-berlin.de/pub/gnu/
Germany - ftp.fh-worms.de/pub/mirror/ftp.gnu.org/
Germany - ftp.leo.org/pub/comp/os/unix/gnu/
Germany - ftp.informatik.rwth-aachen.de/pub/gnu/
Germany - ftp.de.uu.net/pub/gnu/
Germany - ftp.freenet.de/pub/ftp.gnu.org/gnu/
Germany - ftp.cs.uni-bonn.de/pub/gnu/
Germany - ftp-stud.fht-esslingen.de/pub/Mirrors/ftp.gnu.org/
Germany - http://ftp-stud.fht-esslingen.de/pub/Mirrors/ftp.gnu.org/
Germany - ftp.stw-bonn.de/pub/mirror/ftp.gnu.org/
Greece - ftp.forthnet.gr/pub/gnu/
Greece - ftp.ntua.gr/pub/gnu/
Greece - ftp.duth.gr/pub/gnu/
Greece - ftp.physics.auth.gr/pub/gnu/
Ireland - ftp.esat.net/pub/gnu/ (Internet address 193.120.14.241)
Italy - ftp.oasi.gpa.it/pub/gnu/
Italy - ftp.lugroma2.org/pub/gnu/
Netherlands - ftp.nluug.nl/pub/gnu/
Netherlands - ftp.mirror.nl/pub/mirror/gnu/
Netherlands - ftp.nl.uu.net/pub/gnu/
Netherlands - mirror.widexs.nl/pub/gnu/
Norway - ftp.gnu.no/
Poland - sunsite.icm.edu.pl/pub/gnu/
Portugal - ftp.ist.utl.pt/pub/GNU/gnu/
Romania - ftp.timisoara.roedu.net/mirrors/ftp.gnu.org/pub/gnu
Russia - ftp.chg.ru/pub/gnu/
Slovenia - ftp.arnes.si/software/gnu/
Spain - ftp.etsimo.uniovi.es/pub/gnu/
Spain - ftp.rediris.es/pub/gnu/
Sweden - ftp.isy.liu.se/pub/gnu/
Sweden - ftp.stacken.kth.se/pub/gnu/
Sweden - ftp.sunet.se/pub/gnu/; also mirrors /non-gnu
Sweden - ftp.chl.chalmers.se/pub/gnu/
Switzerland - sunsite.cnlab-switch.ch/mirror/gnu/
Ukraine - mirddin.farlep.net/pub/GNU/
United Kingdom - ftp.mcc.ac.uk/pub/gnu/
United Kingdom - ftp.mirror.ac.uk/sites/ftp.gnu.org/pub/gnu/
United Kingdom - ftp.warwick.ac.uk/pub/gnu/ (Internet address 137.205.192.13)
United Kingdom - ftp.hands.com/ftp.gnu.org/
United Kingdom - gnu.teleglobe.net/ftp.gnu.org/
* How to FTP GNU Emacs
Emacs is in the directory /gnu/emacs on ftp.gnu.org. The emacs
distribution itself has a filename in the form emacs-M.N.tar.gz, where
M and N stand for the version numbers; the Emacs Lisp Reference Manual
is in a separate file, named elisp-manual-NN.tar.gz.
* Scheme and How to FTP It
The latest distribution version of C Scheme is available via anonymous FTP
from swiss-ftp.ai.mit.edu in /pub/scheme-X.X/ (where X.X is some version
number).
Read the files INSTALL and README in the top level C Scheme directory.
* TeX and How to Obtain It
We don't distribute TeX now, but it is free software.
TeX is a document formatter that is used, among other things, by the FSF
for all its documentation. You will need it if you want to make printed
manuals.
TeX is freely redistributable. You can get it by ftp, tape, or CD/ROM.
** For FTP instructions, retrieve the file
ftp.cs.umb.edu/pub/tex/unixtex.ftp. (We don't include it here because it
changes relatively frequently. Sorry.)
** A minimal TeX collection (enough to process Texinfo files, anyway)
is included on the GNU source CD-ROM. See the file ORDERS in this
directory for more information.
* GNU Software for VMS
- ftp.vms.stacken.kth.se/MIRRORS/GNU-VMS/- lots of GNU ports to VMS,
including Emacs 19, GCC, Bison, Make, RCS.
* If You Like The Software
If you like the software developed and distributed by the Free
Software Foundation, please express your satisfaction with a donation.
Your donations will help to support the Foundation and make our future
efforts successful. The Foundation continues to improve GNU programs
and encourage the writing of new free software to enhance GNU/Linux
and GNU/Hurd systems. For more information on GNU and the Foundation,
see our web site at http://www.gnu.org.
Ordering a GNU Source Code CD-ROM or Source Code CD-ROM Subscription
is a good way for your organization to help support our work. You can
also purchase printed manuals, reference cards, t-shirts, and other
items. See our online ordering form at http://order.fsf.org for
details.

895
INSTALL
View file

@ -1,895 +0,0 @@
GNU Emacs Installation Guide
Copyright (c) 1992, 94, 96, 97, 2000, 01, 02 Free software Foundation, Inc.
See the end of the file for copying permissions.
BASIC INSTALLATION
The simplest way to build Emacs is to use the `configure' shell script
which attempts to guess correct values for various system-dependent
variables and features and find the directories where various system
headers and libraries are kept. It then creates a `Makefile' in each
subdirectory and a `config.h' file containing system-dependent
definitions. Running the `make' utility then builds the package for
your system.
Here's the procedure to build Emacs using `configure' on systems which
are supported by it. If this simplified procedure fails, or if you
are using a platform such as MS-Windows, where `configure' script
doesn't work, you might need to use various non-default options, and
maybe perform some of the steps manually. The more detailed
description in the rest of the sections of this guide will help you do
that, so please refer to them if the simple procedure does not work.
1. Make sure your system has at least 120 MB of free disk space.
2a. `cd' to the directory where you unpacked Emacs and invoke the
`configure' script:
./configure
2b. Alternatively, create a separate directory, outside the source
directory, where you want to build Emacs, and invoke `configure'
from there:
SOURCE-DIR/configure
where SOURCE-DIR is the top-level Emacs source directory. This
may not work unless you use GNU make.
3. When `configure' finishes, it prints several lines of details
about the system configuration. Read those details carefully
looking for anything suspicious, such as wrong CPU and operating
system names, wrong places for headers or libraries, missing
libraries that you know are installed on your system, etc.
If you find anything wrong, you will have to pass to `configure'
explicit machine configuration name, and one or more options
which tell it where to find various headers and libraries; refer
to DETAILED BUILDING AND INSTALLATION section below.
If `configure' didn't find some image support libraries, such as
Xpm, jpeg, etc., and you want to use them refer to the subsection
"Image support libraries", below.
If the details printed by `configure' don't make any sense to
you, assume that `configure' did its job and proceed.
4. If you need to run the `configure' script more than once (e.g.,
with some non-default options), always clean the source
directories before running `configure' again:
make distclean
./configure
5. Invoke the `make' program:
make
6. If `make' succeeds, it will build an executable program `emacs'
in the `src' directory. You can try this program, to make sure
it works:
src/emacs -q
7. Assuming that the program `src/emacs' starts and displays its
opening screen, you can install the program and its auxiliary
files into their installation directories:
make install
You are now ready to use Emacs. If you wish to conserve disk space,
you may remove the program binaries and object files from the
directory where you built Emacs:
make clean
You can also save some space by compressing (with `gzip') Info files
and installed Lisp source (.el) files which have corresponding .elc
versions.
ADDITIONAL DISTRIBUTION FILES
* intlfonts-VERSION.tar.gz
The intlfonts distribution contains X11 fonts in various encodings
that Emacs can use to display international characters. If you see a
non-ASCII character appear as a hollow box, that means you don't have
a font for it. You might find one in the intlfonts distribution. If
you do have a font for a non-ASCII character, but some characters
don't look right, or appear improperly aligned, a font from the
intlfonts distribution might look better.
The fonts in the intlfonts distribution are also used by the ps-print
package for printing international characters. The file
lisp/ps-mule.el defines the *.bdf font files required for printing
each character set.
The intlfonts distribution contains its own installation instructions,
in the intlfonts/README file.
* Image support libraries
Emacs needs optional libraries to be able to display images (with the
exception of PBM and XBM images whose support is built-in).
On some systems, particularly on GNU/Linux, these libraries may
already be present or available as additional packages. Note that if
there is a separate `dev' or `devel' package, for use at compilation
time rather than run time, you will need that as well as the
corresponding run time package; typically the dev package will
contain header files and a library archive. Otherwise, you can
download and build libraries from sources. None of them are vital for
running Emacs; however, note that Emacs will not be able to use
colored icons in the toolbar if XPM support is not compiled in.
Here's the list of these optional libraries, and the URLs where they
can be found:
. libXaw3d for fancy 3D-style
scroll bars: ftp://ftp.x.org/contrib/widgets/Xaw3d/
. libxpm for XPM: ftp://ftp.x.org/contrib/libraries/
Get version 3.4k or later, which lets Emacs
use its own color allocation functions.
. libpng for PNG: ftp://www.libpng.org/pub/png/
. libz (for PNG): http://www.info-zip.org/pub/infozip/zlib/
. libjpeg for JPEG: ftp://ftp.uu.net/graphics/jpeg/
Get version 6b -- 6a is reported to fail in
Emacs.
. libtiff for TIFF: http://www.libtiff.org/
. libungif for GIF:
http://prtr-13.ucsc.edu/~badger/software/libungif/index.shtml
Ensure you get version 4.1.0b1 or higher of libungif -- a bug in
4.1.0 can crash Emacs.
Emacs will configure itself to build with these libraries if the
`configure' script finds them on your system, unless you supply the
appropriate --without-LIB option. In some cases, older versions of
these libraries won't work because some routines are missing, and
configure should avoid such old versions. If that happens, use the
--without-LIB options to `configure'. See below for more details.
* Extra fonts
At first, Emacs does not include fonts and does not install them. You
must do this yourself.
To take proper advantage of Emacs 21's mule-unicode charsets, you need
a suitable font. For `Unicode' (ISO 10646) fonts for X, see
<URL:http://dvdeug.dhis.org/unifont.html> (packaged in Debian),
<URL:http://openlab.ring.gr.jp/efont/> (packaged in Debian). (In
recent Debian versions, there is an extensive `misc-fixed' iso10646-1
in the default X installation.) Perhaps also see
<URL:http://www.cl.cam.ac.uk/%7Emgk25/ucs-fonts.html>.
<URL:http://czyborra.com/charsets/> has basic fonts for Emacs's
ISO-8859 charsets.
XFree86 release 4 (from <URL:ftp://ftp.xfree86.org/> and mirrors)
contains font support for most, if not all, of the charsets that Emacs
currently supports, including iso10646-1 encoded fonts for use with
the mule-unicode charsets. The font files should also be usable with
older X releases. Note that XFree 4 contains many iso10646-1 fonts
with minimal character repertoires, which can cause problems -- see
etc/PROBLEMS.
BDF fonts etl-unicode.tar.gz used by ps-print and ps-mule to print
Unicode characters are available from <URL:ftp://ftp.x.org/contrib/fonts/>
and <URL:ftp://ftp.xfree86.org/pub/X.Org/contrib/fonts/>.
* GNU/Linux development packages
Many GNU/Linux systems do not come with development packages by
default; they just include the files that you need to run Emacs, but
not those you need to compile it. For example, to compile Emacs with
X11 support, you may need to install the special `X11 development'
package. For example, in April 2003, the package names to install
were `XFree86-devel' and `Xaw3d-devel' on RedHat. On Debian, the
packages necessary to build the installed version should be
sufficient; they can be installed using `apt-get build-dep emacs21' in
Debian 3 and above.
DETAILED BUILDING AND INSTALLATION:
(This is for a Unix or Unix-like system. For MS-DOS and Windows 3.X,
see below; search for MSDOG. For Windows 9X, Windows ME, Windows NT,
and Windows 2000, see the file nt/INSTALL. For the Mac, see the file
mac/INSTALL.)
1) Make sure your system has enough swapping space allocated to handle
a program whose pure code is 1.5 MB and whose data area is at
least 2.8 MB and can reach 100 MB or more. If the swapping space is
insufficient, you will get an error in the command `temacs -batch -l
loadup dump', found in `./src/Makefile.in', or possibly when
running the final dumped Emacs.
Building Emacs requires about 140 MB of disk space (including the
Emacs sources) Once installed, Emacs occupies about 77 MB in the file
system where it is installed; this includes the executable files, Lisp
libraries, miscellaneous data files, and on-line documentation. If
the building and installation take place in different directories,
then the installation procedure momentarily requires 140+77 MB.
2) Consult `./etc/MACHINES' to see what configuration name you should
give to the `configure' program. That file offers hints for
getting around some possible installation problems. The file lists
many different configurations, but only the part for your machine and
operating system is relevant. (The list is arranged in alphabetical
order by the vendor name.)
3) You can build Emacs in the top-level Emacs source directory
or in a separate directory.
3a) To build in the top-level Emacs source directory, go to that
directory and run the program `configure' as follows:
./configure [CONFIGURATION-NAME] [--OPTION[=VALUE]] ...
The CONFIGURATION-NAME argument should be a configuration name given
in `./etc/MACHINES', with the system version number added at the end.
You should try first omitting CONFIGURATION-NAME. This way,
`configure' will try to guess your system type. If it cannot guess,
or if something goes wrong in building or installing Emacs this way,
try again specifying the proper CONFIGURATION-NAME explicitly.
If you don't want X support, specify `--with-x=no'. If you omit this
option, `configure' will try to figure out for itself whether your
system has X, and arrange to use it if present.
The `--x-includes=DIR' and `--x-libraries=DIR' options tell the build
process where the compiler should look for the include files and
object libraries used with the X Window System. Normally, `configure'
is able to find them; these options are necessary if you have your X
Window System files installed in unusual places. These options also
accept a list of directories, separated with colons.
To get more attractive menus, you can specify an X toolkit when you
configure Emacs; use the option `--with-x-toolkit=TOOLKIT', where
TOOLKIT is `athena', `motif' or `gtk' (`yes' and `lucid' are synonyms for
`athena'). On some systems, it does not work to use a toolkit with
shared libraries. A free implementation of Motif, called LessTif, is
available ftom <http://www.lesstif.org>. Compiling with LessTif or
Motif causes a standard File Selection Dialog to pop up when you type
"C-x C-f" and similar commands. You can get fancy 3D-style scroll
bars, even without LessTif/Motif, if you have the Xaw3d library
installed (see "Image support libraries" above for Xaw3d
availability).
If `--with-x-toolkit=gtk' is specified, you can tell configure where
to search for GTK by specifying `--with-pkg-config-prog=PATH' where
PATH is the pathname to pkg-config. Note that GTK version 2.0 or
newer is required for Emacs.
The `--with-gcc' option specifies that the build process should
compile Emacs using GCC. If you don't want to use GCC, specify
`--with-gcc=no'. If you omit this option, `configure' will search
for GCC in your path, and use it if present.
The Emacs mail reader RMAIL is configured to be able to read mail from
a POP3 server by default. Versions of the POP protocol older than
POP3 are not supported. For Kerberos-authenticated POP add
`--with-kerberos', for Hesiod support add `--with-hesiod'. While POP3
is always enabled, whether Emacs actually uses POP is controlled by
individual users--see the Rmail chapter of the Emacs manual.
For image support you may have to download, build, and install the
appropriate image support libraries for image types other than XBM and
PBM, see the list of URLs in "ADDITIONAL DISTRIBUTION FILES" above.
(Note that PNG support requires libz in addition to libpng.)
To disable individual types of image support in Emacs for some reason,
even though configure finds the libraries, you can configure with one
or more of these options:
--without-xpm for XPM image support
--without-jpeg for JPEG image support
--without-tiff for TIFF image support
--without-gif for GIF image support
--without-png for PNG image support
Use --without-toolkit-scroll-bars to disable LessTif/Motif or Xaw3d
scroll bars. --without-xim disables the use of X Input Methods, and
--disable-largefile omits support for files larger than 2GB on systems
which support that. Use --without-sound to disable sound support.
The `--prefix=PREFIXDIR' option specifies where the installation process
should put emacs and its data files. This defaults to `/usr/local'.
- Emacs (and the other utilities users run) go in PREFIXDIR/bin
(unless the `--exec-prefix' option says otherwise).
- The architecture-independent files go in PREFIXDIR/share/emacs/VERSION
(where VERSION is the version number of Emacs, like `19.27').
- The architecture-dependent files go in
PREFIXDIR/libexec/emacs/VERSION/CONFIGURATION
(where CONFIGURATION is the configuration name, like mips-dec-ultrix4.2),
unless the `--exec-prefix' option says otherwise.
The `--exec-prefix=EXECDIR' option allows you to specify a separate
portion of the directory tree for installing architecture-specific
files, like executables and utility programs. If specified,
- Emacs (and the other utilities users run) go in EXECDIR/bin, and
- The architecture-dependent files go in
EXECDIR/libexec/emacs/VERSION/CONFIGURATION.
EXECDIR/bin should be a directory that is normally in users' PATHs.
For example, the command
./configure mips-dec-ultrix --with-x11
configures Emacs to build for a DECstation running Ultrix, with
support for the X11 window system.
`configure' doesn't do any compilation or installation
itself. It just creates the files that influence those things:
`./Makefile', `lib-src/Makefile', `oldXMenu/Makefile',
`lwlib/Makefile', `src/Makefile', and `./src/config.h'. For details
on exactly what it does, see the section called `CONFIGURATION BY
HAND', below.
When it is done, `configure' prints a description of what it did and
creates a shell script `config.status' which, when run, recreates the
same configuration. If `configure' exits with an error after
disturbing the status quo, it removes `config.status'. `configure'
also creates a file `config.cache' that saves the results of its tests
to make reconfiguring faster, and a file `config.log' containing compiler
output (useful mainly for debugging `configure'). You can give
`configure' the option `--cache-file=FILE' to use the results of the
tests in FILE instead of `config.cache'. Set FILE to `/dev/null' to
disable caching, for debugging `configure'.
If the description of the system configuration printed by `configure'
is not right, or if it claims some of the fatures or libraries are not
available when you know they are, look at the `config.log' file for
the trace of the failed tests performed by `configure' to check
whether these features are supported. Typically, some test fails
because the compiler cannot find some function in the system
libraries, or some macro-processor definition in the system headers.
Some tests might fail because the compiler should look in special
directories for some header files, or link against optional
libraries, or use special compilation options. You can force
`configure' and the build process which follows it to do that by
setting the variables CPPFLAGS, CFLAGS, LDFLAGS, LIBS, and CC before
running `configure'. CPPFLAGS lists the options passed to the
preprocessor, CFLAGS are compilation options, LDFLAGS are options used
when linking, LIBS are libraries to link against, and CC is the
command which invokes the compiler.
Here's an example of a `configure' invocation, assuming a Bourne-like
shell such as Bash, which uses these variables:
CPPFLAGS='-I/foo/myinclude' LDFLAGS='-L/bar/mylib' \
CFLAGS='-O3' LIBS='-lfoo -lbar' ./configure
(this is all one long line). This tells `configure' to instruct the
preprocessor to look in the `/foo/myinclude' directory for header
files (in addition to the standard directories), instruct the linker
to look in `/bar/mylib' for libraries, pass the -O3 optimization
switch to the compiler, and link against libfoo.a and libbar.a
libraries in addition to the standard ones.
The work of `configure' can be done by editing various files in the
distribution, but using `configure' is easier. See the section called
"CONFIGURATION BY HAND" below if you want to do the configuration
yourself.
3b) To build in a separate directory, go to that directory
and run the program `configure' as follows:
SOURCE-DIR/configure CONFIGURATION-NAME [--OPTION[=VALUE]] ...
SOURCE-DIR refers to the top-level Emacs source directory which is
where Emacs's configure script is located. `configure' looks for the
Emacs source code in the directory that `configure' is in.
To build in a separate directory, you must use a version of `make'
that supports the `VPATH' variable, such as GNU `make'.
3c) Some people try to build in a separate directory by filling
it full of symlinks to the files in the real source directory.
If you do that, `make all' does work, but `make install' fails:
it copies the symbolic links rather than the actual files.
As far as is known, there is no particular reason to use
a directory full of links rather than use the standard GNU
facilities to build in a separate directory (see 3b above).
4) Look at `./lisp/paths.el'; if some of those values are not right
for your system, set up the file `./lisp/site-init.el' with Emacs
Lisp code to override them; it is not a good idea to edit paths.el
itself. YOU MUST USE THE LISP FUNCTION `setq' TO ASSIGN VALUES,
rather than `defvar', as used by `./lisp/paths.el'. For example,
(setq news-inews-program "/usr/bin/inews")
is how you would override the default value of the variable
news-inews-program (which is "/usr/local/inews").
Before you override a variable this way, *look at the value* that the
variable gets by default! Make sure you know what kind of value the
variable should have. If you don't pay attention to what you are
doing, you'll make a mistake.
5) Put into `./lisp/site-init.el' or `./lisp/site-load.el' any Emacs
Lisp code you want Emacs to load before it is dumped out. Use
site-load.el for additional libraries if you arrange for their
documentation strings to be in the etc/DOC file (see
src/Makefile.in if you wish to figure out how to do that). For all
else, use site-init.el. Do not load byte-compiled code which
was build with a non-nil value of `byte-compile-dynamic'.
If you set load-path to a different value in site-init.el or
site-load.el, Emacs will use *precisely* that value when it starts up
again. If you do this, you are on your own!
Note that, on some systems, the code you place in site-init.el must
not use expand-file-name or any other function which may look
something up in the system's password and user information database.
See `./etc/PROBLEMS' for more details on which systems this affects.
The `site-*.el' files are nonexistent in the distribution. You do not
need to create them if you have nothing to put in them.
6) Refer to the file `./etc/TERMS' for information on fields you may
wish to add to various termcap entries. The files `./etc/termcap.ucb'
and `./etc/termcap.dat' may already contain appropriately-modified
entries.
7) Run `make' in the top directory of the Emacs distribution to finish
building Emacs in the standard way. The final executable file is
named `src/emacs'. You can execute this file "in place" without
copying it, if you wish; then it automatically uses the sibling
directories ../lisp, ../lib-src, ../info.
Or you can "install" the executable and the other Emacs into their
installed locations, with `make install'. By default, Emacs's files
are installed in the following directories:
`/usr/local/bin' holds the executable programs users normally run -
`emacs', `etags', `ctags', `b2m', `emacsclient',
and `rcs-checkin'.
`/usr/local/share/emacs/VERSION/lisp' holds the Emacs Lisp library;
`VERSION' stands for the number of the Emacs version
you are installing, like `18.59' or `19.27'. Since the
Lisp library changes from one version of Emacs to
another, including the version number in the path
allows you to have several versions of Emacs installed
at the same time; in particular, you don't have to
make Emacs unavailable while installing a new version.
`/usr/local/share/emacs/VERSION/site-lisp' holds the local Emacs Lisp
files installed for Emacs version VERSION only.
`/usr/local/share/emacs/site-lisp' holds the local Emacs Lisp
files installed for all Emacs versions.
When Emacs is installed, it searches for its Lisp files
in `/usr/local/share/emacs/VERSION/site-lisp', then in
`/usr/local/share/emacs/site-lisp', and finally in
`/usr/local/share/emacs/VERSION/lisp'.
`/usr/local/share/emacs/VERSION/etc' holds the Emacs tutorial, the DOC
file, the `yow' database, and other
architecture-independent files Emacs might need while
running. VERSION is as specified for `.../lisp'.
`/usr/local/libexec/emacs/VERSION/CONFIGURATION-NAME' contains executable
programs used by Emacs that users are not expected to
run themselves.
`VERSION' is the number of the Emacs version you are
installing, and `CONFIGURATION-NAME' is the argument
you gave to the `configure' program to identify the
architecture and operating system of your machine,
like `mips-dec-ultrix' or `sparc-sun-sunos'. Since
these files are specific to the version of Emacs,
operating system, and architecture in use, including
the configuration name in the path allows you to have
several versions of Emacs for any mix of machines and
operating systems installed at the same time; this is
useful for sites at which different kinds of machines
share the file system Emacs is installed on.
`/usr/local/info' holds the on-line documentation for Emacs, known as
"info files". Many other GNU programs are documented
using info files as well, so this directory stands
apart from the other, Emacs-specific directories.
`/usr/local/man/man1' holds the man pages for the programs installed
in `/usr/local/bin'.
If these directories are not what you want, you can specify where to
install Emacs's libraries and data files or where Emacs should search
for its Lisp files by giving values for `make' variables as part of
the command. See the section below called `MAKE VARIABLES' for more
information on this.
8) Check the file `dir' in your site's info directory (usually
/usr/local/info) to make sure that it has a menu entry for the Emacs
info files.
9) If your system uses lock files to interlock access to mailer inbox files,
then you might need to make the movemail program setuid or setgid
to enable it to write the lock files. We believe this is safe.
10) You are done! You can remove executables and object files from
the build directory by typing `make clean'. To also remove the files
that `configure' created (so you can compile Emacs for a different
configuration), type `make distclean'. If you don't need some, or all
of the input methods from the Leim package, you can remove the
unneeded files in the leim subdirectories of your site's lisp
directory (usually /usr/local/share/emacs/VERSION/).
MAKE VARIABLES
You can change where the build process installs Emacs and its data
files by specifying values for `make' variables as part of the `make'
command line. For example, if you type
make install bindir=/usr/local/gnubin
the `bindir=/usr/local/gnubin' argument indicates that the Emacs
executable files should go in `/usr/local/gnubin', not
`/usr/local/bin'.
Here is a complete list of the variables you may want to set.
`bindir' indicates where to put executable programs that users can
run. This defaults to /usr/local/bin.
`datadir' indicates where to put the architecture-independent
read-only data files that Emacs refers to while it runs; it
defaults to /usr/local/share. We create the following
subdirectories under `datadir':
- `emacs/VERSION/lisp', containing the Emacs Lisp library, and
- `emacs/VERSION/etc', containing the Emacs tutorial, the DOC
file, and the `yow' database.
`VERSION' is the number of the Emacs version you are installing,
like `18.59' or `19.0'. Since these files vary from one version
of Emacs to another, including the version number in the path
allows you to have several versions of Emacs installed at the
same time; this means that you don't have to make Emacs
unavailable while installing a new version.
`libexecdir' indicates where to put architecture-specific data files that
Emacs refers to as it runs; it defaults to `/usr/local/libexec'.
We create the following subdirectories under `libexecdir':
- `emacs/VERSION/CONFIGURATION-NAME', containing executable
programs used by Emacs that users are not expected to run
themselves.
`VERSION' is the number of the Emacs version you are installing,
and `CONFIGURATION-NAME' is the argument you gave to the
`configure' program to identify the architecture and operating
system of your machine, like `mips-dec-ultrix' or
`sparc-sun-sunos'. Since these files are specific to the version
of Emacs, operating system, and architecture in use, including
the configuration name in the path allows you to have several
versions of Emacs for any mix of machines and operating systems
installed at the same time; this is useful for sites at which
different kinds of machines share the file system Emacs is
installed on.
`infodir' indicates where to put the info files distributed with
Emacs; it defaults to `/usr/local/info'.
`mandir' indicates where to put the man pages for Emacs and its
utilities (like `etags'); it defaults to
`/usr/local/man/man1'.
`manext' gives the extension the man pages should be installed with.
It should contain a period, followed by the appropriate
digit. It defaults to `.1'. For example given the default
values for `mandir' and `manext', the Emacs man page would be
installed as `/usr/local/man/man1/emacs.1'.
`prefix' doesn't give a path for any specific part of Emacs; instead,
its value is used to determine the defaults for all the
architecture-independent path variables - `datadir',
`sharedstatedir', `infodir', and `mandir'. Its default value is
`/usr/local'; the other variables add on `lib' or `man' to it
by default.
For example, suppose your site generally places GNU software
under `/usr/users/software/gnusoft' instead of `/usr/local'.
By including
`prefix=/usr/users/software/gnusoft'
in the arguments to `make', you can instruct the build process
to place all of the Emacs data files in the appropriate
directories under that path.
`exec_prefix' serves the same purpose as `prefix', but instead
determines the default values for the architecture-dependent
path variables - `bindir' and `libexecdir'.
The above variables serve analogous purposes in the makefiles for all
GNU software; this variable is specific to Emacs.
`archlibdir' indicates where Emacs installs and expects the executable
files and other architecture-dependent data it uses while
running. Its default value, based on `libexecdir' (which
see), is `/usr/local/libexec/emacs/VERSION/CONFIGURATION-NAME'
(where VERSION and CONFIGURATION-NAME are as described above).
Remember that you must specify any variable values you need each time
you run `make' in the top directory. If you run `make' once to build
emacs, test it, and then run `make' again to install the files, you
must provide the same variable settings each time. To make the
settings persist, you can edit them into the `Makefile' in the top
directory, but be aware that running the `configure' program erases
`Makefile' and rebuilds it from `Makefile.in'.
The path for finding Lisp files is specified in src/paths.h,
a file which is generated by running configure. To change the path,
you can edit the definition of PATH_LOADSEARCH in that file
before you run `make'.
The top-level Makefile stores the variable settings it used in the
Makefiles for the subdirectories, so you don't have to specify them
when running make in the subdirectories.
CONFIGURATION BY HAND
Instead of running the `configure' program, you have to perform the
following steps.
1) Copy `./src/config.in' to `./src/config.h'.
2) Consult `./etc/MACHINES' to see what configuration name you should
use for your system. Look at the code of the `configure' script to
see which operating system and architecture description files from
`src/s' and `src/m' should be used for that configuration name. Edit
`src/config.h', and change the two `#include' directives to include
the appropriate system and architecture description files.
2) Edit `./src/config.h' to set the right options for your system. If
you need to override any of the definitions in the s/*.h and m/*.h
files for your system and machine, do so by editing config.h, not by
changing the s/*.h and m/*.h files. Occasionally you may need to
redefine parameters used in `./lib-src/movemail.c'.
3) Create src/Makefile and lib-src/Makefile from the corresponding
`Makefile.in' files. First copy `Makefile.in' to `Makefile.c',
then edit in appropriate substitutions for the @...@ constructs,
and then copy the shell commands near the end of `configure'
that run cpp to construct `Makefile'.
4) Create `Makefile' files in various other directories
from the corresponding `Makefile.in' files. This isn't so hard,
just a matter of substitution.
The `configure' script is built from `configure.in' by the `autoconf'
program. You need version 2.51 or newer of `autoconf' to rebuild
`configure'.
BUILDING GNU EMACS BY HAND
Once Emacs is configured, running `make' in the top directory performs
the following steps.
1) Run `make src/paths.h' in the top directory. This produces
`./src/paths.h' from the template file `./src/paths.in', changing
the paths to the values specified in `./Makefile'.
2) Go to directory `./lib-src' and run `make'. This creates
executables named `ctags' and `etags' and `wakeup' and `make-docfile'
and `digest-doc' and `test-distrib'. And others.
3) Go to directory `./src' and Run `make'. This refers to files in
the `./lisp' and `./lib-src' subdirectories using names `../lisp' and
`../lib-src'.
This creates a file `./src/emacs' which is the runnable Emacs,
which has another name that contains a version number.
Each time you do this, that version number increments in the last place.
It also creates a file in `./etc' whose name is `DOC' followed by the
current Emacs version. This file contains documentation strings for
all the functions in Emacs. Each time you run make to make a new
emacs, a new DOC file with a new name is made. You must keep the DOC
file for an Emacs version as long as you keep using that Emacs
version.
INSTALLATION BY HAND
The steps below are done by running `make install' in the main
directory of the Emacs distribution.
1) Copy `./lisp' and its subdirectories, `./etc', and the executables
in `./lib-src' to their final destinations, as selected in `./src/paths.h'.
Strictly speaking, not all of the executables in `./lib-src' need be copied.
- The programs `cvtmail', `fakemail', `hexl',
`movemail', `profile', `rcs2log', `timer', `vcdiff', `wakeup',
and `yow' are used by Emacs; they do need to be copied.
- The programs `etags', `ctags', `emacsclient', `b2m', and `rcs-checkin'
are intended to be run by users; they are handled below.
- The programs `make-docfile' and `test-distrib' were
used in building Emacs, and are not needed any more.
- The programs `digest-doc' and `sorted-doc' convert a `DOC' file into
a file for users to read. There is no important reason to move them.
2) Copy the files in `./info' to the place specified in
`./lisp/site-init.el' or `./lisp/paths.el'. Note that if the
destination directory already contains a file named `dir', you
probably don't want to replace it with the `dir' file in the Emacs
distribution. Instead, you should make sure that the existing `dir'
file contains an appropriate menu entry for the Emacs info.
3) Copy `./src/emacs' to `/usr/local/bin', or to some other directory
in users' search paths. `./src/emacs' has an alternate name
`./src/emacs-EMACSVERSION'; you may wish to make a symbolic link named
`/usr/local/bin/emacs' pointing to that alternate name, as an easy way
of installing different versions.
You can delete `./src/temacs'.
4) Copy the programs `b2m', `emacsclient', `ctags', `etags', and
`rcs-checkin' from `./lib-src' to `/usr/local/bin'. These programs are
intended for users to run.
5) Copy the man pages in `./etc' for emacs, ctags, and etags into the
appropriate man directories.
6) The files in the `./src' subdirectory, except for `emacs', are not
used by Emacs once it is built. However, it is very desirable to keep
the source on line for debugging.
PROBLEMS
See the file PROBLEMS in etc subdirectory for a list of various
problems sometimes encountered, and what to do about them.
Installation on MSDOG (a.k.a. MSDOS)
To install on MSDOG, you need to have the GNU C compiler for MSDOG
(also known as djgpp), GNU Make, rm, mv, and sed. See the remarks in
config.bat for more information about locations and versions. The
file etc/FAQ includes pointers to Internet sites where you can find
the necessary utilities; search for "MS-DOS". The configuration step
(see below) will test for these utilities and will refuse to continue
if any of them isn't found.
Recompiling Lisp files in the `lisp' subdirectory using the various
targets in the lisp/Makefile file requires additional utilities:
`find' and `xargs' (from Findutils), `touch' (from Fileutils) GNU
`echo' and `test' (from Sh-utils), `tr, `sort', and `uniq' (from
Textutils), and a port of Bash. However, you should not normally need
to run lisp/Makefile, as all the Lisp files are distributed in
byte-compiled form as well.
If you are building the MSDOG version of Emacs on an MSDOG-like system
which supports long file names (e.g. Windows 95), you need to make
sure that long file names are handled consistently both when you
unpack the distribution and compile it. If you intend to compile with
DJGPP v2.0 or later, and long file names support is enabled (LFN=y in
the environment), you need to unpack Emacs distribution in a way that
doesn't truncate the original long filenames to the DOS 8.3 namespace;
the easiest way to do this is to use djtar program which comes with
DJGPP, since it will note the LFN setting and behave accordingly.
DJGPP v1 doesn't support long filenames, so you must unpack Emacs with
a program that truncates the filenames to 8.3 naming as it extracts
files; again, using djtar after setting LFN=n is the recommended way.
You can build Emacs with LFN=n even if you use DJGPP v2, if some of
your tools don't support long file names: just ensure that LFN is set
to `n' during both unpacking and compiling.
(By the time you read this, you have already unpacked the Emacs
distribution, but if the explanations above imply that you should have
done it differently, it's safer to delete the directory tree created
by the unpacking program and unpack Emacs again, than to risk running
into problems during the build process.)
It is important to understand that the runtime support of long file
names by the Emacs binary is NOT affected by the LFN setting during
compilation; Emacs compiled with DJGPP v2.0 or later will always
support long file names on Windows 9X no matter what was the setting
of LFN at compile time. However, if you compiled with LFN disabled
and want to enable LFN support after Emacs was already built, you need
to make sure that the support files in the lisp, etc and info
directories are called by their original long names as found in the
distribution. You can do this either by renaming the files manually,
or by extracting them from the original distribution archive with
djtar after you set LFN=y in the environment.
To unpack Emacs with djtar, type this command:
djtar -x emacs.tgz
(This assumes that the Emacs distribution is called `emacs.tgz' on
your system.)
If you want to print international characters, install the intlfonts
distribution. For this, create a directory called `fonts' under the
Emacs top-level directory (usually called `emacs-XX.YY') created by
unpacking emacs.tgz, chdir into the directory emacs-XX.YY/fonts, and
type this:
djtar -x intlfonts.tgz
When unpacking is done, a directory called `emacs-XX.YY' will be
created, where XX.YY is the Emacs version. To build and install
Emacs, chdir to that directory and type these commands:
config msdos
make install
Running "config msdos" checks for several programs that are required
to configure and build Emacs; if one of those programs is not found,
CONFIG.BAT stops and prints an error message. If you have DJGPP
version 2.0 or 2.01, it will complain about a program called
DJECHO.EXE. These old versions of DJGPP shipped that program under
the name ECHO.EXE, so you can simply copy ECHO.EXE to DJECHO.EXE and
rerun CONFIG.BAT. If you have neither ECHO.EXE nor DJECHO.EXE, you
should be able to find them in your djdevNNN.zip archive (where NNN is
the DJGPP version number).
On Windows NT or Windows 2000, running "config msdos" might print an
error message like "VDM has been already loaded". This is because
those systems have a program called `redir.exe' which is incompatible
with a program by the same name supplied with DJGPP, which is used by
config.bat. To resolve this, move the DJGPP's `bin' subdirectory to
the front of your PATH environment variable.
To install the international fonts, chdir to the intlfonts-X.Y
directory created when you unpacked the intlfonts distribution (X.Y is
the version number of the fonts' distribution), and type the following
command:
make bdf INSTALLDIR=..
After Make finishes, you may remove the directory intlfonts-X.Y; the
fonts are installed into the fonts/bdf subdirectory of the top-level
Emacs directory, and that is where Emacs will look for them by
default.
Building Emacs creates executable files in the src and lib-src
directories. Installing Emacs on MSDOS moves these executables to a
sibling directory called bin. For example, if you build in directory
/emacs, installing moves the executables from /emacs/src and
/emacs/lib-src to the directory /emacs/bin, so you can then delete the
subdirectories /emacs/src and /emacs/lib-src if you wish. The only
subdirectories you need to keep are bin, lisp, etc and info. (If you
installed intlfonts, keep the fonts directory and all its
subdirectories as well.) The bin subdirectory should be added to your
PATH. The msdos subdirectory includes a PIF and an icon file for
Emacs which you might find useful if you run Emacs under MS Windows.
Emacs on MSDOS finds the lisp, etc and info directories by looking in
../lisp, ../etc and ../info, starting from the directory where the
Emacs executable was run from. You can override this by setting the
environment variables EMACSDATA (for the location of `etc' directory),
EMACSLOADPATH (for the location of `lisp' directory) and INFOPATH (for
the location of the `info' directory).
MSDOG is a not a multitasking operating system, so Emacs features such
as asynchronous subprocesses that depend on multitasking will not
work. Synchronous subprocesses do work.
Version 2.0 of djgpp has two bugs that affect Emacs. We've included
corrected versions of two files from djgpp in the msdos subdirectory:
is_exec.c and sigaction.c. To work around the bugs, compile these
files and link them into temacs. Djgpp versions 2.01 and later have
these bugs fixed, so upgrade if you can before building Emacs.
COPYING PERMISSIONS
Permission is granted to anyone to make or distribute verbatim copies
of this document as received, in any medium, provided that the
copyright notice and permission notice are preserved,
and that the distributor grants the recipient permission
for further redistribution as permitted by this notice.
Permission is granted to distribute modified versions
of this document, or of portions of it,
under the above conditions, provided also that they
carry prominent notices stating who last changed them,
and that any new or changed statements about the activities
of the Free Software Foundation are approved by the Foundation.

View file

@ -1,44 +0,0 @@
Building and Installing Emacs from CVS
Some of the files that are included in the Emacs tarball, such as
byte-compiled Lisp files, are not stored in the CVS repository.
Therefore, to build from CVS you must run "make bootstrap"
instead of just "make":
$ ./configure
$ make bootstrap
The bootstrap process makes sure all necessary files are rebuilt
before it builds the final Emacs binary.
Normally, it is not necessary to use "make bootstrap" after every CVS
update. Unless there are problems, we suggest the following
procedure:
$ ./configure
$ make
$ cd lisp
$ make recompile EMACS=../src/emacs
$ cd ..
$ make
(If you want to install the Emacs binary, type "make install" instead
of "make" in the last command.)
If the above procedure fails, try "make bootstrap".
Users of non-Posix systems (MS-Windows etc.) should run the
platform-specific configuration scripts (nt/configure.bat, config.bat,
etc.) before "make bootstrap" or "make"; the rest of the procedure is
applicable to those systems as well.
Note that "make bootstrap" overwrites some files that are under CVS
control, such as lisp/loaddefs.el. This could produce CVS conflicts
next time that you resync with the CVS. If you see such conflicts,
overwrite your local copy of the file with the clean version from the
CVS repository. For example:
cvs update -C lisp/loaddefs.el
Questions, requests, and bug reports about the CVS versions of Emacs
sould be sent to emacs-pretest-bug@gnu.org rather.

View file

@ -1,213 +0,0 @@
Emacs Maintainers
This file contains a description of who is responsible for maintaining
what parts of the Emacs distribution. The areas can be defined
"arbitrarily", but should provide fairly well-defined boundaries so
that there are not too many ambiguities.
The list below consists of 3 parts. First, the list of areas that
someone wants to be maintaining (i.e. has a particularly keen interest
for it); then the list of areas that someone is willing to maintain,
although he would not necessarily mind if someone else was the
official maintainer; and finally the list of areas for which no
maintainer has been found so far.
==============================================================================
1.
==============================================================================
Richard Stallman
???
Andrew Choi
MacOS
Jason Rumney
W32
Eli Zaretskii
The MS-DOS (a.k.a. DJGPP) port:
config.bat
msdos/*
src/msdos.[ch]
src/dosfns.[ch]
src/w16select.c
src/s/msdos.h
lisp/term/internal.el
lisp/term/pc-win.el
lisp/dos-fns.el
lisp/dos-w32.el
lisp/dos-vars.el
lisp/term/tty-colors.el
lisp/international/codepage.el
man/faq.texi
man/msdog.texi
Kenichi Handa
Mule
Stefan Monnier
src/regex.c
src/syntax.c
src/keymap.c
font-lock/jit-lock/syntax
minor-mode/major-mode infrastructure
text filling
minibuffer completion
lisp/textmodes/outline.el
Miles Bader
src/xfaces.c
field-property related stuff
lisp/comint.el
lisp/shell.el
[other comint-related packages]
lisp/button.el
lisp/image-file.el
lisp/minibuf-eldef.el
lisp/rfn-eshadow.el
==============================================================================
2.
==============================================================================
Eli Zaretskii
man/*
lispref/*
info/dir
src/xfaces.c
src/term.c
src/frame.c
src/dired.c
lisp/arc-mode.el
lisp/menu-bar.el
lisp/hexl.el
lisp/info.el
lisp/ls-lisp.el
lisp/startup.el
Stefan Monnier
src/intervals.c
src/keyboard.c
lisp/textmodes/tex-mode.el
lisp/progmodes/perl-mode.el
lisp/progmodes/tcl.el
lisp/emacs-lisp/easymenu.el
Miles Bader
src/eval.c
src/bytecode.c
src/editfns.c
lisp/textmodes/refill.el
==============================================================================
3.
==============================================================================
src/Makefile.in
src/abbrev.c
src/alloc.c
src/alloca.c
src/alloca.s
src/atimer.c
src/bitmaps/
src/buffer.c
src/callint.c
src/callproc.c
src/casefiddle.c
src/casetab.c
src/category.c
src/ccl.c
src/charset.c
src/cm.c
src/cmds.c
src/coding.c
src/composite.c
src/config.in
src/cxux-crt0.s
src/data.c
src/dispnew.c
src/doc.c
src/doprnt.c
src/ecrt0.c
src/emacs.c
src/epaths.in
src/fileio.c
src/filelock.c
src/filemode.c
src/firstfile.c
src/floatfns.c
src/fns.c
src/fontset.c
src/getloadavg.c
src/gmalloc.c
src/hftctl.c
src/indent.c
src/insdel.c
src/lastfile.c
src/lread.c
src/m/
src/macros.c
src/makefile.nt
src/makefile.w32-in
src/marker.c
src/md5.c
src/minibuf.c
src/mktime.c
src/mocklisp.c
src/pre-crt0.c
src/prefix-args.c
src/print.c
src/process.c
src/ralloc.c
src/region-cache.c
src/s/
src/scroll.c
src/search.c
src/sound.c
src/strftime.c
src/sunfns.c
src/sysdep.c
src/termcap.c
src/terminfo.c
src/textprop.c
src/tparam.c
src/undo.c
src/unexaix.c
src/unexalpha.c
src/unexapollo.c
src/unexconvex.c
src/unexec.c
src/unexelf.c
src/unexenix.c
src/unexhp9k800.c
src/unexmips.c
src/unexnext.c
src/unexsni.c
src/unexsunos4.c
src/unexw32.c
src/vm-limit.c
src/w32.c
src/w32bdf.c
src/w32console.c
src/w32fns.c
src/w32heap.c
src/w32inevt.c
src/w32menu.c
src/w32proc.c
src/w32reg.c
src/w32select.c
src/w32term.c
src/w32xfns.c
src/widget.c
src/window.c
src/xdisp.c
src/xfns.c
src/xmenu.c
src/xrdb.c
src/xselect.c
src/xterm.c

View file

@ -1,754 +0,0 @@
# DIST: This is the distribution Makefile for Emacs. configure can
# DIST: make most of the changes to this file you might want, so try
# DIST: that first.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
# This file is part of GNU Emacs.
# GNU Emacs is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# GNU Emacs is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with GNU Emacs; see the file COPYING. If not, write to
# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
# make all to compile and build Emacs.
# make install to install it.
# make TAGS to update tags tables.
#
# make clean or make mostlyclean
# Delete all files from the current directory that are normally
# created by building the program. Don't delete the files that
# record the configuration. Also preserve files that could be made
# by building, but normally aren't because the distribution comes
# with them.
#
# Delete `.dvi' files here if they are not part of the distribution.
#
# make distclean
# Delete all files from the current directory that are created by
# configuring or building the program. If you have unpacked the
# source and built the program without creating any other files,
# `make distclean' should leave only the files that were in the
# distribution.
#
# make maintainer-clean
# Delete everything from the current directory that can be
# reconstructed with this Makefile. This typically includes
# everything deleted by distclean, plus more: C source files
# produced by Bison, tags tables, info files, and so on.
#
# make extraclean
# Still more severe - delete backup and autosave files, too.
SHELL = /bin/sh
# If Make doesn't predefine MAKE, set it here.
@SET_MAKE@
# ==================== Things `configure' Might Edit ====================
CC=@CC@
CPP=@CPP@
C_SWITCH_SYSTEM=@c_switch_system@
ALLOCA=@ALLOCA@
LN_S=@LN_S@
CFLAGS=@CFLAGS@
LDFLAGS=@LDFLAGS@
CPPFLAGS=@CPPFLAGS@
C_SWITCH_X_SITE=@C_SWITCH_X_SITE@
LD_SWITCH_X_SITE=@LD_SWITCH_X_SITE@
YACC=@YACC@
EXEEXT=@EXEEXT@
### These help us choose version- and architecture-specific directories
### to install files in.
### This should be the number of the Emacs version we're building,
### like `18.59' or `19.0'.
version=@version@
### This should be the name of the configuration we're building Emacs
### for, like `mips-dec-ultrix' or `sparc-sun-sunos'.
configuration=@configuration@
# ==================== Where To Install Things ====================
# The default location for installation. Everything is placed in
# subdirectories of this directory. The default values for many of
# the variables below are expressed in terms of this one, so you may
# not need to change them. This defaults to /usr/local.
prefix=@prefix@
# Like `prefix', but used for architecture-specific files.
exec_prefix=@exec_prefix@
# Where to install Emacs and other binaries that people will want to
# run directly (like etags).
bindir=@bindir@
# Where to install architecture-independent data files. ${lispdir}
# and ${etcdir} are subdirectories of this.
datadir=@datadir@
# Where to install and expect the files that Emacs modifies as it
# runs. These files are all architecture-independent.
# Right now, this is not used.
sharedstatedir=@sharedstatedir@
# Where to install and expect executable files to be run by Emacs
# rather than directly by users, and other architecture-dependent
# data. ${archlibdir} is a subdirectory of this.
libexecdir=@libexecdir@
# Where to install Emacs's man pages, and what extension they should have.
mandir=@mandir@
manext=.1
man1dir=$(mandir)/man1
# Where to install and expect the info files describing Emacs. In the
# past, this defaulted to a subdirectory of ${prefix}/lib/emacs, but
# since there are now many packages documented with the texinfo
# system, it is inappropriate to imply that it is part of Emacs.
infodir=@infodir@
# Directory for local state files for all programs.
localstatedir=@localstatedir@
# Where to look for bitmap files.
bitmapdir=@bitmapdir@
# Where to find the source code. The source code for Emacs's C kernel is
# expected to be in ${srcdir}/src, and the source code for Emacs's
# utility programs is expected to be in ${srcdir}/lib-src. This is
# set by the configure script's `--srcdir' option.
# We use $(srcdir) explicitly in dependencies so as not to depend on VPATH.
srcdir=@srcdir@
# Tell make where to find source files; this is needed for the makefiles.
VPATH=@srcdir@
# Where to find the application default.
x_default_search_path=@x_default_search_path@
# Location to install Emacs.app on Mac OS X
carbon_appdir=@carbon_appdir@
# ==================== Emacs-specific directories ====================
# These variables hold the values Emacs will actually use. They are
# based on the values of the standard Make variables above.
# Where to install the lisp files distributed with
# Emacs. This includes the Emacs version, so that the
# lisp files for different versions of Emacs will install
# themselves in separate directories.
lispdir=@lispdir@
# Directories Emacs should search for lisp files specific
# to this site (i.e. customizations), before consulting
# ${lispdir}. This should be a colon-separated list of
# directories.
locallisppath=@locallisppath@
# Where Emacs will search to find its lisp files. Before
# changing this, check to see if your purpose wouldn't
# better be served by changing locallisppath. This
# should be a colon-separated list of directories.
lisppath=@lisppath@
# Where Emacs will search for its lisp files while
# building. This is only used during the process of
# compiling Emacs, to help Emacs find its lisp files
# before they've been installed in their final location.
# It's usually identical to lisppath, except that
# it does not include locallisppath, and the
# entry for the directory containing the installed lisp
# files has been replaced with ../lisp. This should be a
# colon-separated list of directories.
buildlisppath=${srcdir}/lisp
# Where to install the other architecture-independent
# data files distributed with Emacs (like the tutorial,
# the cookie recipes and the Zippy database). This path
# usually contains the Emacs version number, so the data
# files for multiple versions of Emacs may be installed
# at once.
etcdir=@etcdir@
# Where to put executables to be run by Emacs rather than
# the user. This path usually includes the Emacs version
# and configuration name, so that multiple configurations
# for multiple versions of Emacs may be installed at
# once.
archlibdir=@archlibdir@
# Where to put the docstring file.
docdir=@docdir@
# Where to install Emacs game score files.
gamedir=@gamedir@
# ==================== Utility Programs for the Build ====================
# Allow the user to specify the install program.
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_INFO = @INSTALL_INFO@
# By default, we uphold the dignity of our programs.
INSTALL_STRIP =
# ============================= Targets ==============================
# Program name transformation.
TRANSFORM = @program_transform_name@
# What emacs should be called when installed.
EMACS = `echo emacs${EXEEXT} | sed '$(TRANSFORM)'`
EMACSFULL = `echo emacs-${version}${EXEEXT} | sed '$(TRANSFORM)'`
# Subdirectories to make recursively. `lisp' is not included
# because the compiled lisp files are part of the distribution.
# leim is not included because it needs special handling.
SUBDIR = lib-src src
# The makefiles of the directories in $SUBDIR.
SUBDIR_MAKEFILES = lib-src/Makefile man/Makefile lispref/Makefile lispintro/Makefile src/Makefile oldXMenu/Makefile lwlib/Makefile leim/Makefile
# Subdirectories to install, and where they'll go.
# lib-src's makefile knows how to install it, so we don't do that here.
# leim's makefile also knows how to install it, so we don't do that here.
# When installing the info files, we need to do special things to
# avoid nuking an existing dir file, so we don't do that here;
# instead, we have written out explicit code in the `install' targets.
COPYDIR = ${srcdir}/etc ${srcdir}/lisp
COPYDESTS = ${etcdir} ${lispdir}
# Set to FRC to force running autoconf and autoheader
MAINT =
all: ${SUBDIR} leim
removenullpaths=sed -e 's/^://g' -e 's/:$$//g' -e 's/::/:/g'
# Generate epaths.h from epaths.in. This target is invoked by `configure'.
epaths-force: FRC
@(lisppath=`echo ${lisppath} | ${removenullpaths}` ; \
buildlisppath=`echo ${buildlisppath} | ${removenullpaths}` ; \
x_default_search_path=`echo ${x_default_search_path}`; \
gamedir=`echo ${gamedir}`; \
sed < ${srcdir}/src/epaths.in > epaths.h.$$$$ \
-e 's;\(#.*PATH_LOADSEARCH\).*$$;\1 "'$${lisppath}'";' \
-e 's;\(#.*PATH_DUMPLOADSEARCH\).*$$;\1 "'$${buildlisppath}'";' \
-e 's;\(#.*PATH_EXEC\).*$$;\1 "${archlibdir}";' \
-e 's;\(#.*PATH_INFO\).*$$;\1 "${infodir}";' \
-e 's;\(#.*PATH_DATA\).*$$;\1 "${etcdir}";' \
-e 's;\(#.*PATH_BITMAPS\).*$$;\1 "${bitmapdir}";' \
-e 's;\(#.*PATH_X_DEFAULTS\).*$$;\1 "${x_default_search_path}";' \
-e 's;\(#.*PATH_GAME\).*$$;\1 "${gamedir}";' \
-e 's;\(#.*PATH_DOC\).*$$;\1 "${docdir}";') && \
${srcdir}/move-if-change epaths.h.$$$$ src/epaths.h
# For parallel make, src should be build before leim.
# "export PARALLEL=0" is for SGI's Make, to prevent it from
# running more than 1 process in the leim directory, especially for
# the $TIT files there.
leim: src ${SUBDIR_MAKEFILES} FRC
(export PARALLEL; PARALLEL=0; cd $@; $(MAKE) all $(MFLAGS) \
CC='${CC}' CFLAGS='${CFLAGS}' CPPFLAGS='${CPPFLAGS}' \
LDFLAGS='${LDFLAGS}' MAKE='${MAKE}')
src: lib-src FRC
lib-src: FRC src/config.stamp
.RECURSIVE: ${SUBDIR} leim
${SUBDIR}: maybe_bootstrap ${SUBDIR_MAKEFILES} FRC
cd $@; $(MAKE) all $(MFLAGS) \
CC='${CC}' CFLAGS='${CFLAGS}' CPPFLAGS='${CPPFLAGS}' \
LDFLAGS='${LDFLAGS}' MAKE='${MAKE}'
blessmail: ${SUBDIR_MAKEFILES} src FRC
cd lib-src; $(MAKE) maybe-blessmail $(MFLAGS) \
MAKE='${MAKE}' archlibdir='$(archlibdir)'
Makefile: $(srcdir)/Makefile.in config.status
./config.status
config.status: ${srcdir}/configure
./config.status --recheck
${srcdir}/configure: $(MAINT)
cd ${srcdir} && autoconf
$(srcdir)/src/config.in: $(srcdir)/src/stamp-h.in
@true
$(srcdir)/src/stamp-h.in: $(MAINT)
cd ${srcdir} && autoheader
rm -f $(srcdir)/src/stamp-h.in
echo timestamp > $(srcdir)/src/stamp-h.in
src/Makefile: $(srcdir)/src/Makefile.in config.status
./config.status
src/config.stamp: $(srcdir)/src/config.in config.status
./config.status
touch src/config.stamp
lib-src/Makefile: $(srcdir)/lib-src/Makefile.in config.status
./config.status
man/Makefile: $(srcdir)/man/Makefile.in config.status
./config.status
lispref/Makefile: $(srcdir)/lispref/Makefile.in config.status
./config.status
lispintro/Makefile: $(srcdir)/lispintro/Makefile.in config.status
./config.status
oldXMenu/Makefile: $(srcdir)/oldXMenu/Makefile.in config.status
./config.status
lwlib/Makefile: $(srcdir)/lwlib/Makefile.in config.status
./config.status
leim/Makefile: $(srcdir)/leim/Makefile.in config.status
./config.status
# ==================== Installation ====================
## If we let lib-src do its own installation, that means we
## don't have to duplicate the list of utilities to install in
## this Makefile as well.
## On AIX, use tar xBf.
## On Xenix, use tar xpf.
.PHONY: install mkdir
## We delete each directory in ${COPYDESTS} before we copy into it;
## that way, we can reinstall over directories that have been put in
## place with their files read-only (perhaps because they are checked
## into RCS). In order to make this safe, we make sure that the
## source exists and is distinct from the destination.
### We do install-arch-indep first because
### the executable needs the Lisp files and DOC file to work properly.
install: all install-arch-indep install-arch-dep install-leim blessmail
@true
### Install the executables that were compiled specifically for this machine.
### It would be nice to do something for a parallel make
### to ensure that install-arch-indep finishes before this starts.
install-arch-dep: mkdir
(cd lib-src; \
$(MAKE) install $(MFLAGS) prefix=${prefix} \
exec_prefix=${exec_prefix} bindir=${bindir} \
libexecdir=${libexecdir} archlibdir=${archlibdir} \
INSTALL_STRIP=${INSTALL_STRIP})
${INSTALL_PROGRAM} $(INSTALL_STRIP) src/emacs${EXEEXT} ${bindir}/$(EMACSFULL)
-chmod 1755 ${bindir}/$(EMACSFULL)
rm -f ${bindir}/$(EMACS)
-ln ${bindir}/$(EMACSFULL) ${bindir}/$(EMACS)
-unset CDPATH; \
for f in `cd lib-src && echo fns-*.el`; do \
if test -r lib-src/$$f ; then \
${INSTALL_DATA} lib-src/$$f ${archlibdir}/$$f; \
else true; fi ; \
done
if test "${carbon_appdir}" != ""; then \
umask 022; mkdir -p ${carbon_appdir}/Emacs.app; \
(cd mac/Emacs.app; tar -chf - . ) | \
(cd ${carbon_appdir}/Emacs.app; umask 022; tar -xvf - \
&& cat > /dev/null) || exit 1; \
fi
### Install the files that are machine-independent.
### Most of them come straight from the distribution;
### the exception is the DOC-* files, which are copied
## from the build directory.
## Note that we copy DOC* and then delete DOC
## as a workaround for a bug in tar on Ultrix 4.2.
## If people complain about the h flag in tar command, take that out.
## That flag is also used in leim/Makefile.in
install-arch-indep: mkdir info
-set ${COPYDESTS} ; \
unset CDPATH; \
for dir in ${COPYDIR} ; do \
if [ `(cd $$1 && /bin/pwd)` != `(cd $${dir} && /bin/pwd)` ] ; then \
rm -rf $$1 ; \
fi ; \
shift ; \
done
-set ${COPYDESTS} ; \
mkdir ${COPYDESTS} ; \
chmod ugo+rx ${COPYDESTS} ; \
unset CDPATH; \
for dir in ${COPYDIR} ; do \
dest=$$1 ; shift ; \
[ -d $${dir} ] \
&& [ `(cd $${dir} && /bin/pwd)` != `(cd $${dest} && /bin/pwd)` ] \
&& (echo "Copying $${dir} to $${dest}..." ; \
(cd $${dir}; tar -chf - . ) \
| (cd $${dest}; umask 022; \
tar -xvf - && cat > /dev/null) || exit 1; \
find $${dest} -exec chown $${LOGNAME:-$$USERNAME} {} ';' ;\
for subdir in `find $${dest} -type d ! -name RCS ! -name CVS -print` ; do \
chmod a+rx $${subdir} ; \
rm -rf $${subdir}/RCS ; \
rm -rf $${subdir}/CVS ; \
rm -f $${subdir}/.cvsignore ; \
rm -f $${subdir}/\#* ; \
rm -f $${subdir}/.\#* ; \
rm -f $${subdir}/*~ ; \
rm -f $${subdir}/*.orig ; \
rm -f $${subdir}/[mM]akefile* ; \
rm -f $${subdir}/ChangeLog* ; \
rm -f $${subdir}/dired.todo ; \
done) ; \
done
-rm -f ${lispdir}/subdirs.el
$(srcdir)/update-subdirs ${lispdir}
if [ -f ${datadir}/emacs/${version}/site-lisp/subdirs.el ]; \
then true; \
else \
(echo "(if (fboundp 'normal-top-level-add-subdirs-to-load-path)"; \
echo " (normal-top-level-add-subdirs-to-load-path))") \
> ${datadir}/emacs/${version}/site-lisp/subdirs.el; \
fi
chmod a+r ${datadir}/emacs/${version}/site-lisp/subdirs.el
-if [ -f ${datadir}/emacs/site-lisp/subdirs.el ]; \
then true; \
else \
(echo "(if (fboundp 'normal-top-level-add-subdirs-to-load-path)"; \
echo " (normal-top-level-add-subdirs-to-load-path))") \
> ${datadir}/emacs/site-lisp/subdirs.el; \
fi
-chmod a+r ${datadir}/emacs/site-lisp/subdirs.el
-unset CDPATH; \
if [ `(cd ./etc; /bin/pwd)` != `(cd ${docdir}; /bin/pwd)` ]; \
then \
echo "Copying etc/DOC-* to ${docdir} ..." ; \
(cd ./etc; tar -chf - DOC*) \
|(cd ${docdir}; umask 022; tar -xvf - && cat > /dev/null) || exit 1; \
(cd $(docdir); chown $${LOGNAME:-$$USERNAME} DOC*; chmod a+r DOC*; \
if test "`echo DOC-*`" != "DOC-*"; then rm DOC; fi); \
else true; fi
-unset CDPATH; \
if [ -r ./lisp ] \
&& [ -r ./lisp/simple.el ] \
&& [ x`(cd ./lisp; /bin/pwd)` != x`(cd ${lispdir}; /bin/pwd)` ] \
&& [ x`(cd ${srcdir}/lisp; /bin/pwd)` != x`(cd ./lisp; /bin/pwd)` ]; \
then \
echo "Copying lisp/*.el and lisp/*.elc to ${lispdir} ..." ; \
(cd lisp; tar -chf - *.el *.elc) \
|(cd ${lispdir}; umask 022; tar -xvf - && cat > /dev/null) || exit 1; \
(cd ${lispdir}; find . -exec chown $${LOGNAME:-$$USERNAME} {} ';') ; \
else true; fi
-unset CDPATH; \
thisdir=`/bin/pwd`; \
if [ `(cd ${srcdir}/info && /bin/pwd)` != `(cd ${infodir} && /bin/pwd)` ]; \
then \
(cd ${infodir}; \
if [ -f dir ]; then true; \
else \
(cd $${thisdir}; \
${INSTALL_DATA} ${srcdir}/info/dir ${infodir}/dir; \
chmod a+r ${infodir}/dir); \
fi; \
cd ${srcdir}/info ; \
for f in ada-mode* autotype* calc* ccmode* cl* dired-x* ebrowse* ediff* efaq* eintr* elisp* emacs* eshell* eudc* forms* gnus* idlwave* info* message* mh-e* pcl-cvs* reftex* sc* speedbar* tramp* vip* widget* woman* smtpmail*; do \
(cd $${thisdir}; \
${INSTALL_DATA} ${srcdir}/info/$$f ${infodir}/$$f; \
chmod a+r ${infodir}/$$f); \
done); \
else true; fi
-unset CDPATH; \
thisdir=`/bin/pwd`; \
if [ `(cd ${srcdir}/info && /bin/pwd)` != `(cd ${infodir} && /bin/pwd)` ]; \
then \
for f in ada-mode autotype calc ccmode cl dired-x ebrowse ediff efaq elisp eintr emacs emacs-mime eshell eudc forms gnus idlwave info message mh-e pcl-cvs reftex sc speedbar tramp vip viper widget woman smtpmail; do \
(cd $${thisdir}; \
${INSTALL_INFO} --info-dir=${infodir} ${infodir}/$$f); \
done; \
else true; fi
-chmod -R a+r ${datadir}/emacs ${COPYDESTS} ${infodir}
thisdir=`/bin/pwd`; \
cd ${srcdir}/etc; \
for page in emacs emacsclient etags ctags ; do \
(cd $${thisdir}; \
${INSTALL_DATA} ${srcdir}/etc/$${page}.1 ${man1dir}/$${page}${manext}; \
chmod a+r ${man1dir}/$${page}${manext}); \
done
### Install LEIM files. Although they are machine-independent, we
### have separate target here instead of including it in
### `install-arch-indep'. People who extracted LEIM files after they
### insalled Emacs itself can install only LEIM files by this target.
install-leim: leim/Makefile mkdir
cd leim; $(MAKE) install
### Build Emacs and install it, stripping binaries while installing them.
install-strip:
$(MAKE) INSTALL_STRIP=-s install
### Build all the directories we're going to install Emacs in. Since
### we may be creating several layers of directories (for example,
### /usr/local/lib/emacs/19.0/mips-dec-ultrix4.2), we use mkinstalldirs
### instead of mkdir. Not all systems' mkdir programs have the `-p' flag.
mkdir: FRC
if [ -d ${datadir} ]; then true; else \
$(srcdir)/mkinstalldirs ${datadir}; \
chmod a+r ${datadir};\
fi
$(srcdir)/mkinstalldirs ${COPYDESTS} ${infodir} ${man1dir} \
${bindir} ${docdir} ${libexecdir} \
${datadir}/emacs/site-lisp \
${datadir}/emacs/${version}/site-lisp \
`echo ${locallisppath} | sed 's/:/ /g'`
### Delete all the installed files that the `install' target would
### create (but not the noninstalled files such as `make all' would
### create).
###
### Don't delete the lisp and etc directories if they're in the source tree.
uninstall:
(cd lib-src; \
$(MAKE) $(MFLAGS) uninstall \
prefix=${prefix} exec_prefix=${exec_prefix} \
bindir=${bindir} libexecdir=${libexecdir} archlibdir=${archlibdir})
-unset CDPATH; \
for dir in ${lispdir} ${etcdir} ; do \
if [ -d $${dir} ]; then \
case `(cd $${dir} ; /bin/pwd)` in \
`(cd ${srcdir} ; /bin/pwd)`* ) ;; \
* ) rm -rf $${dir} ;; \
esac ; \
case $${dir} in \
${datadir}/emacs/${version}/* ) \
rm -rf ${datadir}/emacs/${version} \
;; \
esac ; \
fi ; \
done
(cd ${archlibdir} && rm -f fns-*)
-rm -rf ${libexecdir}/emacs/${version}
(cd ${infodir} && rm -f cl* ada-mode* autotype* calc* ccmode* ebrowse* efaq* eintr elisp* eshell* eudc* idlwave* message* pcl-cvs* reftex* speedbar* tramp* widget* woman* dired-x* ediff* emacs* forms* gnus* info* mh-e* sc* vip* smtpmail*)
(cd ${man1dir} && rm -f emacs${manext} emacsclient${manext} etags${manext} ctags${manext})
(cd ${bindir} && rm -f $(EMACSFULL) $(EMACS))
FRC:
# ==================== Cleaning up and miscellanea ====================
.PHONY: mostlyclean clean distclean maintainer-clean extraclean
### `mostlyclean'
### Like `clean', but may refrain from deleting a few files that people
### normally don't want to recompile. For example, the `mostlyclean'
### target for GCC does not delete `libgcc.a', because recompiling it
### is rarely necessary and takes a lot of time.
mostlyclean: FRC
(cd src; $(MAKE) $(MFLAGS) mostlyclean)
(cd oldXMenu; $(MAKE) $(MFLAGS) mostlyclean)
(cd lwlib; $(MAKE) $(MFLAGS) mostlyclean)
(cd lib-src; $(MAKE) $(MFLAGS) mostlyclean)
-(cd man && $(MAKE) $(MFLAGS) mostlyclean)
-(cd lispref && $(MAKE) $(MFLAGS) mostlyclean)
-(cd lispintro && $(MAKE) $(MFLAGS) mostlyclean)
(cd leim; $(MAKE) $(MFLAGS) mostlyclean)
### `clean'
### Delete all files from the current directory that are normally
### created by building the program. Don't delete the files that
### record the configuration. Also preserve files that could be made
### by building, but normally aren't because the distribution comes
### with them.
###
### Delete `.dvi' files here if they are not part of the distribution.
clean: FRC
(cd src; $(MAKE) $(MFLAGS) clean)
(cd oldXMenu; $(MAKE) $(MFLAGS) clean)
(cd lwlib; $(MAKE) $(MFLAGS) clean)
(cd lib-src; $(MAKE) $(MFLAGS) clean)
-(cd man && $(MAKE) $(MFLAGS) clean)
-(cd lispref && $(MAKE) $(MFLAGS) clean)
-(cd lispintro && $(MAKE) $(MFLAGS) clean)
(cd leim; $(MAKE) $(MFLAGS) clean)
### `distclean'
### Delete all files from the current directory that are created by
### configuring or building the program. If you have unpacked the
### source and built the program without creating any other files,
### `make distclean' should leave only the files that were in the
### distribution.
top_distclean=\
rm -f config.status config.cache config.log ; \
rm -f Makefile ${SUBDIR_MAKEFILES} ; \
if [ -d lock ] ; then (cd lock && (rm -f * || true)); else true; fi
distclean: FRC
(cd src; $(MAKE) $(MFLAGS) distclean)
(cd oldXMenu; $(MAKE) $(MFLAGS) distclean)
(cd lwlib; $(MAKE) $(MFLAGS) distclean)
(cd lib-src; $(MAKE) $(MFLAGS) distclean)
(cd man && $(MAKE) $(MFLAGS) distclean)
(cd lispref && $(MAKE) $(MFLAGS) distclean)
(cd lispintro && $(MAKE) $(MFLAGS) distclean)
(cd leim; $(MAKE) $(MFLAGS) distclean)
(cd lisp; $(MAKE) $(MFLAGS) distclean)
${top_distclean}
### `maintainer-clean'
### Delete everything from the current directory that can be
### reconstructed with this Makefile. This typically includes
### everything deleted by distclean, plus more: C source files
### produced by Bison, tags tables, info files, and so on.
###
### One exception, however: `make maintainer-clean' should not delete
### `configure' even if `configure' can be remade using a rule in the
### Makefile. More generally, `make maintainer-clean' should not delete
### anything that needs to exist in order to run `configure' and then
### begin to build the program.
maintainer-clean: FRC
(cd src; $(MAKE) $(MFLAGS) maintainer-clean)
(cd oldXMenu; $(MAKE) $(MFLAGS) maintainer-clean)
(cd lwlib; $(MAKE) $(MFLAGS) maintainer-clean)
(cd lib-src; $(MAKE) $(MFLAGS) maintainer-clean)
-(cd man && $(MAKE) $(MFLAGS) maintainer-clean)
-(cd lispref && $(MAKE) $(MFLAGS) maintainer-clean)
-(cd lispintro && $(MAKE) $(MFLAGS) maintainer-clean)
(cd leim; $(MAKE) $(MFLAGS) maintainer-clean)
${top_distclean}
### This doesn't actually appear in the coding standards, but Karl
### says GCC supports it, and that's where the configuration part of
### the coding standards seem to come from. It's like distclean, but
### it deletes backup and autosave files too.
extraclean:
for i in ${SUBDIR} leim; do (cd $$i; $(MAKE) $(MFLAGS) extraclean); done
${top_distclean}
-rm -f config-tmp-*
-rm -f *~ \#*
### Unlocking and relocking. The idea of these productions is to reduce
### hassles when installing an incremental tar of Emacs. Do `make unlock'
### before unlocking the file to take the write locks off all sources so
### that tar xvof will overwrite them without fuss. Then do `make relock'
### afterward so that VC mode will know which files should be checked in
### if you want to mung them.
###
### Note: it's no disaster if these productions miss a file or two; tar
### and VC will swiftly let you know if this happens, and it is easily
### corrected.
SOURCES = ChangeLog FTP INSTALL Makefile.in \
README configure make-dist move-if-change
.PHONY: unlock relock
unlock:
chmod u+w $(SOURCES)
-(cd elisp; chmod u+w Makefile README *.texi)
(cd etc; $(MAKE) $(MFLAGS) unlock)
(cd lib-src; $(MAKE) $(MFLAGS) unlock)
(cd lisp; $(MAKE) $(MFLAGS) unlock)
(cd lisp/term; chmod u+w README *.el)
(cd man; chmod u+w *texi* ChangeLog split-man)
(cd lispref; chmod u+w *texi* ChangeLog)
(cd lispintro; chmod u+w *texi* ChangeLog)
(cd oldXMenu; chmod u+w *.[ch] Makefile README)
(cd lwlib; chmod u+w *.[ch] Makefile README)
(cd src; $(MAKE) $(MFLAGS) unlock)
relock:
chmod u-w $(SOURCES)
-(cd elisp; chmod u-w Makefile README *.texi)
(cd etc; $(MAKE) $(MFLAGS) relock)
(cd lib-src; $(MAKE) $(MFLAGS) relock)
(cd lisp; $(MAKE) $(MFLAGS) relock)
(cd lisp/term; chmod u+w README *.el)
(cd man; chmod u+w *texi* ChangeLog split-man)
(cd lispref; chmod u+w *texi* ChangeLog)
(cd lispintro; chmod u+w *texi* ChangeLog)
(cd oldXMenu; chmod u+w *.[ch] Makefile README)
(cd lwlib; chmod u+w *.[ch] Makefile README)
(cd src; $(MAKE) $(MFLAGS) relock)
# The src subdir knows how to do the right thing
# even when the build directory and source dir are different.
TAGS tags: lib-src src
cd src; $(MAKE) tags
check:
@echo "We don't have any tests for GNU Emacs yet."
dist:
cd ${srcdir}; ./make-dist
.PHONY: info dvi dist check html
force-info:
# Note that man/Makefile knows how to
# put the info files in $(srcdir),
# so we can do ok running make in the build dir.
info: force-info
(cd man; $(MAKE) $(MFLAGS) info)
(cd lispref; $(MAKE) $(MFLAGS) info)
(cd lispintro; $(MAKE) $(MFLAGS) info)
dvi:
(cd man; $(MAKE) $(MFLAGS) dvi)
(cd lispref; $(MAKE) $(MFLAGS) elisp.dvi)
(cd lispintro; $(MAKE) $(MFLAGS) emacs-lisp-intro.dvi)
#### Bootstrapping.
### This is meant for Emacs maintainers only. It first cleans the
### lisp subdirectory, removing all compiled Lisp files. Then a
### special emacs executable is built from Lisp sources, which is then
### used to compile Lisp files. The last step is a "normal" make.
.PHONY: bootstrap
.PHONY: maybe_bootstrap
maybe_bootstrap:
@bar="`echo $(srcdir)/lisp/*.elc`"; \
if [ \( "$$bar" = '$(srcdir)/lisp/*.elc' \) -o \( "$$bar" = '' \) ]; then \
echo "Your tree does not include the compiled Lisp files."; \
echo "You need to do \`make bootstrap' to build Emacs."; \
echo "Emacs now requires Texinfo version 4.2."; \
exit 1;\
fi
bootstrap: bootstrap-clean-before info FRC
(cd lisp; $(MAKE) $(MFLAGS) bootstrap-clean)
(cd src; $(MAKE) $(MFLAGS) bootstrap)
(cd lisp; $(MAKE) $(MFLAGS) bootstrap EMACS=../src/bootstrap-emacs${EXEEXT})
(cd src; $(MAKE) $(MFLAGS) mostlyclean)
$(MAKE) $(MFLAGS) all
(cd lisp; $(MAKE) $(MFLAGS) bootstrap-after)
### Used for `bootstrap' to avoid deleting existing dumped Emacs executables.
bootstrap-clean-before: FRC
(cd src; $(MAKE) $(MFLAGS) mostlyclean)
(cd oldXMenu; $(MAKE) $(MFLAGS) clean)
(cd lwlib; $(MAKE) $(MFLAGS) clean)
(cd lib-src; $(MAKE) $(MFLAGS) clean)
-(cd man && $(MAKE) $(MFLAGS) clean)
-(cd lispref && $(MAKE) $(MFLAGS) clean)
-(cd lispintro && $(MAKE) $(MFLAGS) clean)
(cd leim; $(MAKE) $(MFLAGS) clean)

105
README
View file

@ -1,105 +0,0 @@
This directory tree holds version 21.3.50 of GNU Emacs, the extensible,
customizable, self-documenting real-time display editor.
You may encounter bugs in this release. If you do, please report
them; your bug reports are valuable contributions to the FSF, since
they allow us to notice and fix problems on machines we don't have, or
in code we don't use often. See the file BUGS for more information on
how to report bugs.
See the file etc/NEWS for information on new features and other
user-visible changes in recent versions of Emacs.
The file INSTALL in this directory says how to bring up GNU Emacs on
various systems, once you have loaded the entire subtree of this
directory.
The file etc/PROBLEMS contains information on many common problems that
occur in building, installing and running Emacs.
Reports of bugs in Emacs should be sent to the mailing list
bug-gnu-emacs@gnu.org. See the "Bugs" section of the Emacs
manual for more information on how to report bugs. (The file `BUGS'
in this directory explains how you can find and read that section
using the Info files that come with Emacs.) See `etc/MAILINGLISTS'
for more information on mailing lists relating to GNU packages.
The `etc' subdirectory contains several other files, named in capital
letters, which you might consider looking at when installing GNU
Emacs.
The file `configure' is a shell script to acclimate Emacs to the
oddities of your processor and operating system. It creates the file
`Makefile' (a script for the `make' program), which automates the
process of building and installing Emacs. See INSTALL for more
detailed information.
The file `configure.in' is the input used by the autoconf program to
construct the `configure' script. Since Emacs has some configuration
requirements that autoconf can't meet directly, and for historical
reasons, `configure.in' uses an unholy marriage of custom-baked
configuration code and autoconf macros. If you want to rebuild
`configure' from `configure.in', you will need to install a recent
version of autoconf and GNU m4.
The file `Makefile.in' is a template used by `configure' to create
`Makefile'.
The file `make-dist' is a shell script to build a distribution tar
file from the current Emacs tree, containing only those files
appropriate for distribution. If you make extensive changes to Emacs,
this script will help you distribute your version to others.
There are several subdirectories:
`src' holds the C code for Emacs (the Emacs Lisp interpreter and
its primitives, the redisplay code, and some basic editing
functions).
`lisp' holds the Emacs Lisp code for Emacs (most everything else).
`leim' holds the library of Emacs input methods, Lisp code and
auxiliary data files required to type international characters
which can't be directly produced by your keyboard.
`lib-src' holds the source code for some utility programs for use by or
with Emacs, like movemail and etags.
`etc' holds miscellaneous architecture-independent data files
Emacs uses, like the tutorial text and the Zippy the Pinhead
quote database. The contents of the `lisp', `leim', `info',
`man', `lispref', and `lispintro' subdirectories are
architecture-independent too.
`info' holds the Info documentation tree for Emacs.
`man' holds the source code for the Emacs Manual. If you modify the
manual sources, you will need the `makeinfo' program to produce
an updated manual. `makeinfo' is part of the GNU Texinfo
package; you need version 4.2 or later of Texinfo.
`lispref' holds the source code for the Emacs Lisp reference manual.
`lispintro' holds the source code for the Introduction to Programming
in Emacs Lisp manual.
`msdos' holds configuration files for compiling Emacs under MSDOG.
`vms' holds instructions and useful files for running Emacs under VMS.
`nt' holds various command files and documentation files that pertain
to building and running Emacs on Windows 9X/ME/NT/2000/XP.
`mac' holds instructions, sources, and other useful files for building
and running Emacs on the Mac.
Building Emacs on non-Posix platforms requires to install tools
that aren't part of the standard distribution of the OS. The
platform-specific README files and installation instructions should
list the required tools.
VMS info:
Emacs 19.x and above do not compile out of the box on OpenVMS.
Richard Levitte <levitte@lp.se> is distributing and maintaining a
version of Emacs (currently based on version 19.28, but soon moving to
19.34 and then 20.1) that compiles and works on OpenVMS 5.5 and above
on both VAX and Alpha architectures. For more information see
http://vms.gnu.org/software/released1/emacs.html#get_emacs_1928_kit
There is also some effort going on with Emacs 21. Source code is
available at ftp://ftp.nvg.ntnu.no/pub/vms/emacs/. Look for most
recent stuff with ls -lta.
It is a working "development" version (editing and much more works).
More developers are needed; contact roart@nvg.ntnu.no.

View file

@ -1,7 +0,0 @@
#!/bin/sh
echo "Please read INSTALL-CVS for instructions on how to build Emacs from CVS."
# Exit with failure, since people may have generic build scripts that
# try things like "autogen.sh && ./configure && make".
exit 1

View file

@ -1,278 +0,0 @@
@echo off
rem ----------------------------------------------------------------------
rem Configuration script for MSDOS
rem Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2001
rem Free Software Foundation, Inc.
rem This file is part of GNU Emacs.
rem GNU Emacs is free software; you can redistribute it and/or modify
rem it under the terms of the GNU General Public License as published by
rem the Free Software Foundation; either version 2, or (at your option)
rem any later version.
rem GNU Emacs is distributed in the hope that it will be useful,
rem but WITHOUT ANY WARRANTY; without even the implied warranty of
rem MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
rem GNU General Public License for more details.
rem You should have received a copy of the GNU General Public License
rem along with GNU Emacs; see the file COPYING. If not, write to the
rem Free Software Foundation, Inc., 59 Temple Place - Suite 330,
rem Boston, MA 02111-1307, USA.
rem ----------------------------------------------------------------------
rem YOU'LL NEED THE FOLLOWING UTILITIES TO MAKE EMACS:
rem
rem + msdos version 3 or better.
rem + djgpp version 1.12maint1 or later (version 2.0 or later recommended).
rem + make utility that allows breaking of the 128 chars limit on
rem command lines. ndmake (as of version 4.5) won't work due to a
rem line length limit. The make that comes with djgpp does work.
rem + rm and mv (from GNU file utilities).
rem + sed (you can use the port that comes with DJGPP).
rem
rem You should be able to get all the above utilities from any SimTel
rem repository, e.g. ftp.simtel.net, in the directory
rem "pub/simtelnet/gnu/djgpp/v2gnu". As usual, please use your local
rem mirroring site to reduce trans-Atlantic traffic.
rem ----------------------------------------------------------------------
set X11=
set nodebug=
set djgpp_ver=
if "%1" == "" goto usage
rem ----------------------------------------------------------------------
rem See if their environment is large enough. We need 28 bytes.
set $foo$=789012345678901234567
if not "%$foo$%" == "789012345678901234567" goto SmallEnv
set $foo$=
:again
if "%1" == "" goto usage
if "%1" == "--with-x" goto withx
if "%1" == "--no-debug" goto nodebug
if "%1" == "msdos" goto msdos
:usage
echo Usage: config [--with-x] [--no-debug] msdos
echo [Read the script before you run it.]
goto end
rem ----------------------------------------------------------------------
:withx
set X11=Y
shift
goto again
rem ----------------------------------------------------------------------
:nodebug
set nodebug=Y
shift
goto again
rem ----------------------------------------------------------------------
:msdos
Echo Checking whether 'sed' is available...
sed -e "w junk.$$$" <Nul
If Exist junk.$$$ Goto sedOk
Echo To configure 'Emacs' you need to have 'sed'!
Goto End
:sedOk
Echo Checking whether 'rm' is available...
rm -f junk.$$$
If Not Exist junk.$$$ Goto rmOk
Echo To configure 'Emacs' you need to have 'rm'!
Goto End
:rmOk
Echo Checking whether 'mv' is available...
rm -f junk.1 junk.2
echo foo >junk.1
mv junk.1 ./junk.2
If Exist junk.2 Goto mvOk
Echo To configure 'Emacs' you need to have 'mv'!
rm -f junk.1
Goto End
:mvOk
rm -f junk.2
Echo Checking whether 'gcc' is available...
echo main(){} >junk.c
gcc -c junk.c
if exist junk.o goto gccOk
Echo To configure 'Emacs' you need to have 'gcc'!
rm -f junk.c
Goto End
:gccOk
rm -f junk.c junk.o junk junk.exe
Echo Checking what version of DJGPP is installed...
If Not "%DJGPP%" == "" goto djgppOk
Echo To compile 'Emacs' under MS-DOS you MUST have DJGPP installed!
Goto End
:djgppOk
echo int main() >junk.c
echo #ifdef __DJGPP__ >>junk.c
echo {return (__DJGPP__)*10;} >>junk.c
echo #else >>junk.c
echo #ifdef __GO32__ >>junk.c
echo {return 10;} >>junk.c
echo #else >>junk.c
echo {return 0;} >>junk.c
echo #endif >>junk.c
echo #endif >>junk.c
gcc -o junk junk.c
if not exist junk.exe coff2exe junk
junk
If ErrorLevel 10 Goto go32Ok
rm -f junk.c junk junk.exe
Echo To compile 'Emacs' under MS-DOS you MUST have DJGPP installed!
Goto End
:go32Ok
set djgpp_ver=1
If ErrorLevel 20 set djgpp_ver=2
rm -f junk.c junk junk.exe
rem DJECHO is used by the top-level Makefile
Echo Checking whether 'djecho' is available...
redir -o Nul -eo djecho -o junk.$$$ foo
If Exist junk.$$$ Goto djechoOk
Echo To build 'Emacs' you need the 'djecho.exe' program!
Echo 'djecho.exe' is part of 'djdevNNN.zip' basic DJGPP development kit.
Echo Versions of DJGPP before 2.02 called this program 'echo.exe'.
Echo Either unpack 'djecho.exe' from the 'djdevNNN.zip' archive,
Echo or, if you have 'echo.exe', copy it to 'djecho.exe'.
Echo Then run CONFIG.BAT again with the same arguments you did now.
Goto End
:djechoOk
rm -f junk.$$$
Echo Configuring for DJGPP Version %DJGPP_VER% ...
Rem ----------------------------------------------------------------------
Echo Configuring the source directory...
cd src
rem Create "epaths.h"
sed -f ../msdos/sed4.inp <epaths.in >epaths.tmp
update epaths.tmp epaths.h >nul
rm -f epaths.tmp
rem Create "config.h"
rm -f config.h2 config.tmp
sed -e '' config.in > config.tmp
if "%X11%" == "" goto src4
sed -f ../msdos/sed2x.inp <config.in >config.tmp
:src4
if "%DJGPP_VER%" == "2" Goto src41
sed -f ../msdos/sed2.inp <config.tmp >config.h2
goto src42
:src41
sed -f ../msdos/sed2v2.inp <config.tmp >config.h2
:src42
update config.h2 config.h >nul
rm -f config.tmp config.h2
rem On my system dir.h gets in the way. It's a VMS file so who cares.
if exist dir.h ren dir.h vmsdir.h
rem Create "makefile" from "makefile.in".
rm -f Makefile junk.c
sed -e "1,/== start of cpp stuff ==/s@^# .*$@@" <Makefile.in >junk.c
If "%DJGPP_VER%" == "1" Goto mfV1
gcc -E -traditional junk.c | sed -f ../msdos/sed1v2.inp >Makefile
goto mfDone
:mfV1
gcc -E -traditional junk.c | sed -f ../msdos/sed1.inp >Makefile
:mfDone
rm -f junk.c
if "%X11%" == "" goto src5
mv Makefile makefile.tmp
sed -f ../msdos/sed1x.inp <makefile.tmp >Makefile
rm -f makefile.tmp
:src5
if "%nodebug%" == "" goto src6
sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp
sed -e "/^LDFLAGS *=/s/=/=-s/" <makefile.tmp >Makefile
rm -f makefile.tmp
:src6
cd ..
rem ----------------------------------------------------------------------
Echo Configuring the library source directory...
cd lib-src
rem Create "makefile" from "makefile.in".
sed -e "1,/== start of cpp stuff ==/s@^# .*$@@" <Makefile.in >junk.c
gcc -E -traditional -I. -I../src junk.c | sed -e "s/^ / /" -e "/^#/d" -e "/^[ ]*$/d" >makefile.new
If "%DJGPP_VER%" == "2" goto libsrc-v2
sed -f ../msdos/sed3.inp <makefile.new >Makefile
Goto libsrc2
:libsrc-v2
sed -f ../msdos/sed3v2.inp <makefile.new >Makefile
:libsrc2
rm -f makefile.new junk.c
if "%nodebug%" == "" goto libsrc3
sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp
sed -e "/^ALL_CFLAGS *=/s/=/= -s/" <makefile.tmp >Makefile
rm -f makefile.tmp
:libsrc3
cd ..
rem ----------------------------------------------------------------------
if "%X11%" == "" goto oldx1
Echo Configuring the oldxmenu directory...
cd oldxmenu
sed -f ../msdos/sed5x.inp <Makefile.in >Makefile
if "%nodebug%" == "" goto oldx2
sed -e "/^CFLAGS *=/s/ *-gcoff//" <Makefile >makefile.tmp
mv -f makefile.tmp Makefile
:oldx2
cd ..
:oldx1
rem ----------------------------------------------------------------------
Echo Configuring the manual directory...
cd man
sed -f ../msdos/sed6.inp < Makefile.in > Makefile
cd ..
rem ----------------------------------------------------------------------
Echo Configuring the ELisp manual directory...
cd lispref
sed -f ../msdos/sed6.inp < Makefile.in > Makefile
cd ..
rem ----------------------------------------------------------------------
Echo Configuring the ELisp Introduction manual directory...
Rem The two variants for the line below is for when the shell
Rem supports long file names but DJGPP does not
if exist lispintro\Makefile.in cd lispintro
if exist lispintr\Makefile.in cd lispintr
sed -f ../msdos/sed6.inp < Makefile.in > Makefile
cd ..
rem ----------------------------------------------------------------------
Echo Configuring the lisp directory...
cd lisp
sed -f ../msdos/sedlisp.inp < Makefile.in > Makefile
cd ..
rem ----------------------------------------------------------------------
If not Exist leim\quail\latin-pre.el goto maindir
Echo Configuring the leim directory...
cd leim
sed -f ../msdos/sedleim.inp < Makefile.in > Makefile
cd ..
rem ----------------------------------------------------------------------
:maindir
Echo Configuring the main directory...
If "%DJGPP_VER%" == "1" goto mainv1
Echo Looking for the GDB init file...
If Exist src\.gdbinit update src/.gdbinit src/_gdbinit
If Exist src\_gdbinit goto gdbinitOk
Echo ERROR:
Echo I cannot find the GDB init file. It was called ".gdbinit" in
Echo the Emacs distribution, but was probably renamed to some other
Echo name without the leading dot when you untarred the archive.
Echo It should be in the "src/" subdirectory. Please make sure this
Echo file exists and is called "_gdbinit" with a leading underscore.
Echo Then run CONFIG.BAT again with the same arguments you did now.
goto End
:gdbinitOk
Echo Looking for the GDB init file...found
copy msdos\mainmake.v2 Makefile >nul
:mainv1
If "%DJGPP_VER%" == "1" copy msdos\mainmake Makefile >nul
rem ----------------------------------------------------------------------
goto End
:SmallEnv
echo Your environment size is too small. Please enlarge it and run me again.
echo For example, type "command.com /e:2048" to have 2048 bytes available.
set $foo$=
:end
set X11=
set nodebug=
set djgpp_ver=

1369
config.guess vendored

File diff suppressed because it is too large Load diff

1467
config.sub vendored

File diff suppressed because it is too large Load diff

19432
configure vendored

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

5
etc/.gitignore vendored
View file

@ -1,5 +0,0 @@
fns-*
*.ps
*.log
*.dvi
DOC DOC-*

176
etc/BABYL
View file

@ -1,176 +0,0 @@
Format of Version 5 Babyl Files:
Warning:
This was written Tuesday, 12 April 1983 (by Eugene Ciccarelli),
based on looking at a particular Babyl file and recalling various
issues. Therefore it is not guaranteed to be complete, but it is a
start, and I will try to point the reader to various Babyl functions
that will serve to clarify certain format questions.
Also note that this file will not contain control-characters,
but instead have two-character sequences starting with Uparrow.
Unless otherwise stated, an Uparrow <character> is to be read as
Control-<character>, e.g. ^L is a Control-L.
Versions:
First, note that each Babyl file contains in its BABYL OPTIONS
section the version for the Babyl file format. In principle, the
format can be changed in any way as long as we increment the format
version number; then programs can support both old and new formats.
In practice, version 5 is the only format version used, and the
previous versions have been obsolete for so long that Emacs does not
support them.
Overall Babyl File Structure:
A Babyl file consists of a BABYL OPTIONS section followed by
0 or more message sections. The BABYL OPTIONS section starts
with the line "BABYL OPTIONS:". Message sections start with
Control-Underscore Control-L Newline. Each section ends
with a Control-Underscore. (That is also the first character
of the starter for the next section, if any.) Thus, a three
message Babyl file looks like:
BABYL OPTIONS:
...the stuff within the Babyl Options section...
^_^L
...the stuff within the 1st message section...
^_^L
...the stuff within the 2nd message section...
^_^L
...the stuff within the last message section...
^_
Babyl is tolerant about some whitespace at the end of the
file -- the file may end with the final ^_ or it may have some
whitespace, e.g. a newline, after it.
The BABYL OPTIONS Section:
Each Babyl option is specified on one line (thus restricting
string values these options can currently have). Values are
either numbers or strings. The format is name, colon, and the
value, with whitespace after the colon ignored, e.g.:
Mail: ~/special-inbox
Unrecognized options are ignored.
Here are those options and the kind of values currently expected:
MAIL Filename, the input mail file for this
Babyl file. You may also use several file names
separated by commas.
Version Number. This should always be 5.
Labels String, list of labels, separated by commas.
Message Sections:
A message section contains one message and information
associated with it. The first line is the "status line", which
contains a bit (0 or 1 character) saying whether the message has
been reformed yet, and a list of the labels attached to this
message. Certain labels, called basic labels, are built into
Babyl in a fundamental way, and are separated in the status line
for convenience of operation. For example, consider the status
line:
1, answered,, zval, bug,
The 1 means this message has been reformed. This message is
labeled "answered", "zval", and "bug". The first, "answered", is
a basic label, and the other two are user labels. The basic
labels come before the double-comma in the line. Each label is
preceded by ", " and followed by ",". (The last basic label is
in fact followed by ",,".) If this message had no labels at all,
it would look like:
1,,
Or, if it had two basic labels, "answered" and "deleted", it
would look like:
1, answered, deleted,, zval, bug,
The & Label Babyl Message knows which are the basic labels.
Currently they are: deleted, unseen, recent, and answered.
After the status line comes the original header if any.
Following that is the EOOH line, which contains exactly the
characters "*** EOOH ***" (which stands for "end of original
header"). Note that the original header, if a network format
header, includes the trailing newline. And finally, following the
EOOH line is the visible message, header and text. For example,
here is a complete message section, starting with the message
starter, and ending with the terminator:
^_^L
1,, wordab, eccmacs,
Date: 11 May 1982 21:40-EDT
From: Eugene C. Ciccarelli <ECC at MIT-AI>
Subject: notes
To: ECC at MIT-AI
*** EOOH ***
Date: Tuesday, 11 May 1982 21:40-EDT
From: Eugene C. Ciccarelli <ECC>
To: ECC
Re: notes
Remember to pickup check at cashier's office, and deposit it
soon. Pay rent.
^_
;;; Babyl File BNF:
;;; Overall Babyl file structure:
Babyl-File ::= Babyl-Options-Section (Message-Section)*
;;; Babyl Options section:
Babyl-Options-Section
::= "BABYL OPTIONS:" newline (Babyl-Option)* Terminator
Babyl-Option ::= Option-Name ":" Horiz-Whitespace BOptValue newline
BOptValue ::= Number | 1-Line-String
;;; Message section:
Message-Section ::= Message-Starter Status-Line Orig-Header
EOOH-Line Message Terminator
Message-Starter ::= "^L" newline
Status-Line ::= Bit-Char "," (Basic-Label)* "," (User-Label)* newline
Basic-Label ::= Space BLabel-Name ","
User-Label ::= Space ULabel-Name ","
EOOH-Line ::= "*** EOOH ***" newline
Message ::= Visible-Header Message-Text
;;; Utilities:
Terminator ::= "^_"
Horiz-Whitespace
::= (Space | Tab)*
Bit-Char ::= "0" | "1"

View file

@ -1,88 +0,0 @@
Censoring my Software
Richard Stallman
[From Datamation, 1 March 1996]
Last summer, a few clever legislators proposed a bill to "prohibit
pornography" on the Internet. Last fall, right-wing Christians made
this cause their own. Last week, President Clinton signed the bill,
and we lost the freedom of the press for the public library of the
future. This week, I'm censoring GNU Emacs.
No, GNU Emacs does not contain pornography. It is a software package,
an award-winning extensible and programmable text editor. But the law
that was passed applies to far more than pornography. It prohibits
"indecent" speech, which can include anything from famous poems, to
masterpieces hanging in the Louvre, to advice about safe sex...to
software.
Naturally, there was a lot of opposition to this bill. Not only from
people who use the Internet, and people who appreciate erotica, but
from everyone who cares about freedom of the press.
But every time we tried to tell the public what was at stake, the
forces of censorship responded with a lie: they told the public that
the issue was simply pornography. By embedding this lie as a
presupposition in their statements about the issue, they succeeded in
misinforming the public. So here I am, censoring my software.
You see, Emacs contains a version of the famous "doctor program",
a.k.a. Eliza, originally developed by Professor Weizenbaum at MIT.
This is the program that imitates a Rogerian psychotherapist. The
user talks to the program, and the program responds--by playing back
the user's own statements, and by recognizing a long list of
particular words.
The Emacs doctor program was set up to recognize many common curse
words, and respond with an appropriately cute message such as, "Would
you please watch your tongue?" or "Let's not be vulgar." In order to
do this, it had to have a list of curse words. That means the source
code for the program was indecent.
Because of the censorship law, I had to remove this feature. (I
replaced it with a message announcing that the program has been
censored for your protection.) The new version of the doctor doesn't
recognize the indecent words. If you curse at it, it curses right
back to you--for lack of knowing better.
Now that people are facing the threat of two years in prison for
indecent network postings, it would be helpful if they could access
precise rules via the Internet for how to avoid imprisonment.
However, this is impossible. The rules would have to mention the
forbidden words, so posting them on the Internet would be against the
rules.
Of course, I'm making an assumption about just what "indecent" means.
I have to do this, because nobody knows for sure. The most obvious
possibile meaning is the meaning it has for television, so I'm using
that as a tentative assumption. However, there is a good chance that
our courts will reject that interpretation of the law as
unconstitutional.
We can hope that the courts will recognize the Internet as a medium of
publication like books and magazines. If they do, they will entirely
reject any law prohibiting "indecent" publications on the Internet.
What really worries me is that the courts might take a muddled
in-between escape route--by choosing another interpretation of
"indecent", one that permits the doctor program or a statement of the
decency rules, but prohibits some of the books that children can
browse through in the public library and the bookstore. Over the
years, as the Internet replaces the public library and the bookstore,
some of our freedom of the press will be lost.
Just a few weeks ago, another country imposed censorship on the
Internet. That was China. We don't think well of China in this
country--its government doesn't respect basic freedoms. But how well
does our government respect them? And do you care enough to preserve
them here?
If you care, stay in touch with the Voters Telecommunications Watch.
Look in their Web site http://www.vtw.org/ for background information
and political action recommendations. Censorship won in February, but
we can beat it in November.
Copyright 1996 Richard Stallman
Verbatim copying and distribution is permitted in any medium
provided this notice is preserved.

View file

@ -1,157 +0,0 @@
[Someone sent this in from California, and we decided to extend
our campaign against information hoarding to recipes as well
as software. (Recipes are the closest thing, not involving computers,
to software.)
The story appears to be a myth, according to the Chicago Tribune,
which says that Mrs Fields Cookies hoards the information completely.
Therefore, this recipe can be thought of as a compatible replacement.
We have reports that the cookies it makes are pretty good.]
Someone at PG&E called the Mrs. Fields Cookie office
and requested the recipe for her cookies. They asked
her for her charge card number, and she gave it to them
thinking the cost would be $15 to $25. It turned out
to be $200!
Therefore, this person is giving the recipe to anyone
and everyone she knows (and doesn't know) so that
someone can get use of her $200. Anyway, just keep
passing it on.
Cream together: 2 cups butter
2 cups sugar
2 cups brown sugar
Add: 4 eggs
2 tsp. vanilla
Mis together in
separate bowl: 4 cups flour
5 cups oatmeal (put small
amounts of oatmeal in blender until it turns to
powder. Measure out 5 cups of oatmeal and only
"powderize" that, NOT 5 cups "powderized" oatmeal)
1 tsp salt
2 tsp baking powder
2 tsp baking soda
Mix: All of the above
Add: 24 oz. bag of chocolate chips and
1 finely grated 8 oz Hershey bar (plain)
Add: 3 cups chopped nuts (any kind)
Bake on greased cookie sheet (make golf ball sized balls) and
bake about two inches apart. Bake at 350 degrees for 8 - 10
minutes. DO NOT OVERBAKE. Makes 112.
From: ucdavis!lll-lcc!hplabs!parcvax!bane@ucbvax.berkeley.edu (John R. Bane)
Subject: Re: free cookie foundation?
Hi! I "stole" your very expensive cookie recipe off the net. If you
want to send me your SnailMail address, I'll be glad to send you a
dollar (I would like to suggest this to the net, but I think there is
some netiquette rule against asking for money - or is that only money
for oneself?) to help defray the cost (it's not much, but if EVERYone
who took the recipe sent you a dollar, it would help).
Here also is another cookie recipe which I'm very fond of.
Makes 6-8 dozen
Bake at 375 degrees for ~10 min.
Cream together:
1 cup shortening (I use Weight Watcher's Reduced Calorie Margarine!)
1/4 cup peanut butter (I recommend the non-sugared kind)
1/2 cup sugar
1/2 cup brown sugar
2 eggs
1 teaspoon vanilla
Add:
1/2 cup flour
1 teaspoon soda
1/2 teaspoon salt
2 cups rolled oats (I use the 5-min variety)
1-2 cups chocolate chips (I use 2 cups semi-sweet - ummmm!)
1 cup nuts (I use pecan pieces - don't get them crushed, or the extra
oil will make greasy cookies)
1 cup shredded or flaked coconut
(The nuts were listed as optional and I added the coconut myself, but
I really love them there! You could also add things like m&m's, or
raisins (I don't care for raisins in cookies, but you might). I've
always wanted to try banana chips.)
Mix well. Drop by teaspoonfuls on greased cookie sheet (I use pam).
Bake at 375 degrees for approx. 10 min.
My aunt found this recipe in an Amish book called something like
"Eating Well When The Whole World Is Starving," and although I thought
a cookie recipe was a bit odd for a book like that, they are about the
healthiest a cookie is ever likely to get.
They are also very easy to make (no blending, sifting, rolling, etc.)
and extremely delicious. I get rave reviews and recipe requests whenever
I make them.
- rene
Chocolate Chip Cookies - Glamorous, crunchy, rich with chocolate bits & nuts.
Also known as "Toll House" Cookies ... from Kenneth and Ruth Wakefield's
charming New England Toll House on the outskirts of Whitman, Massachusetts.
These cookies were first introduced to American homemakers in 1939 through
our series of radio talks on "Famous Foods From Famous Eating Places."
Mix Thoroughly :
2/3 cup soft shortening ( part butter )
1/2 cup granulated sugar
1/2 cup brown sugar ( packed )
1 egg
1 tsp vanilla
Sift together and stir in :
1-1/2 cups sifted flour (*)
1/2 tsp soda
1/2 tsp salt
Stir in :
1/2 cup cut-up nuts
6 oz package of semi-sweet chocolate pieces ( about 1-1/4 cups )
(*) for a softer, more rounded cookie, use 1-3/4 cups sifted flour.
Drop rounded teaspoonfuls about 2" apart on ungreased baking sheet. Bake until
delicately browned ... cookies should still be soft. Cool slightly before you
remove them from the baking sheet.
Temperature: 375 F. ( modern oven )
Time: bake 8 - 10 minutes
Amount: 4 - 5 dozen 2" cookies
=====
Personal comments :
I find it tastes better with a mixture of shortening and butter, as they say.
You don't need << all >> of that sugar, and it can be whatever color you want.
The nuts are optional. Feel free to play with the recipe. I put oatmeal in it,
reducing flour accordingly, and sometimes cinnamon.
I also find it useful to grease the cookie sheets.
I think I'm going to go bake some now ...
-- richard

View file

@ -1,340 +0,0 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

File diff suppressed because it is too large Load diff

649
etc/DEBUG
View file

@ -1,649 +0,0 @@
Debugging GNU Emacs
Copyright (c) 1985, 2000, 2001 Free Software Foundation, Inc.
Permission is granted to anyone to make or distribute verbatim copies
of this document as received, in any medium, provided that the
copyright notice and permission notice are preserved,
and that the distributor grants the recipient permission
for further redistribution as permitted by this notice.
Permission is granted to distribute modified versions
of this document, or of portions of it,
under the above conditions, provided also that they
carry prominent notices stating who last changed them.
[People who debug Emacs on Windows using native Windows debuggers
should read the Windows-specific section near the end of this
document.]
** When you debug Emacs with GDB, you should start it in the directory
where you built Emacs. That directory has a .gdbinit file that defines
various "user-defined" commands for debugging Emacs.
** It is a good idea to run Emacs under GDB (or some other suitable
debugger) *all the time*. Then, when Emacs crashes, you will be able
to debug the live process, not just a core dump. (This is especially
important on systems which don't support core files, and instead print
just the registers and some stack addresses.)
** If Emacs hangs, or seems to be stuck in some infinite loop, typing
"kill -TSTP PID", where PID is the Emacs process ID, will cause GDB to
kick in, provided that you run under GDB.
** Getting control to the debugger
`Fsignal' is a very useful place to put a breakpoint in.
All Lisp errors go through there.
It is useful, when debugging, to have a guaranteed way to return to
the debugger at any time. When using X, this is easy: type C-z at the
window where Emacs is running under GDB, and it will stop Emacs just
as it would stop any ordinary program. When Emacs is running in a
terminal, things are not so easy.
The src/.gdbinit file in the Emacs distribution arranges for SIGINT
(C-g in Emacs) to be passed to Emacs and not give control back to GDB.
On modern POSIX systems, you can override that with this command:
handle SIGINT stop nopass
After this `handle' command, SIGINT will return control to GDB. If
you want the C-g to cause a QUIT within Emacs as well, omit the
`nopass'.
A technique that can work when `handle SIGINT' does not is to store
the code for some character into the variable stop_character. Thus,
set stop_character = 29
makes Control-] (decimal code 29) the stop character.
Typing Control-] will cause immediate stop. You cannot
use the set command until the inferior process has been started.
Put a breakpoint early in `main', or suspend the Emacs,
to get an opportunity to do the set command.
** Examining Lisp object values.
When you have a live process to debug, and it has not encountered a
fatal error, you can use the GDB command `pr'. First print the value
in the ordinary way, with the `p' command. Then type `pr' with no
arguments. This calls a subroutine which uses the Lisp printer.
Note: It is not a good idea to try `pr' if you know that Emacs is in
deep trouble: its stack smashed (e.g., if it encountered SIGSEGV due
to stack overflow), or crucial data structures, such as `obarray',
corrupted, etc. In such cases, the Emacs subroutine called by `pr'
might make more damage, like overwrite some data that is important for
debugging the original problem.
Also, on some systems it is impossible to use `pr' if you stopped
Emacs while it was inside `select'. This is in fact what happens if
you stop Emacs while it is waiting. In such a situation, don't try to
use `pr'. Instead, use `s' to step out of the system call. Then
Emacs will be between instructions and capable of handling `pr'.
If you can't use `pr' command, for whatever reason, you can fall back
on lower-level commands. Use the `xtype' command to print out the
data type of the last data value. Once you know the data type, use
the command that corresponds to that type. Here are these commands:
xint xptr xwindow xmarker xoverlay xmiscfree xintfwd xboolfwd xobjfwd
xbufobjfwd xkbobjfwd xbuflocal xbuffer xsymbol xstring xvector xframe
xwinconfig xcompiled xcons xcar xcdr xsubr xprocess xfloat xscrollbar
Each one of them applies to a certain type or class of types.
(Some of these types are not visible in Lisp, because they exist only
internally.)
Each x... command prints some information about the value, and
produces a GDB value (subsequently available in $) through which you
can get at the rest of the contents.
In general, most of the rest of the contents will be additional Lisp
objects which you can examine in turn with the x... commands.
Even with a live process, these x... commands are useful for
examining the fields in a buffer, window, process, frame or marker.
Here's an example using concepts explained in the node "Value History"
of the GDB manual to print the variable frame from this line in
xmenu.c:
buf.frame_or_window = frame;
First, use these commands:
cd src
gdb emacs
b xmenu.c:1296
r -q
Then type C-x 5 2 to create a new frame, and it hits the breakpoint:
(gdb) p frame
$1 = 1077872640
(gdb) xtype
Lisp_Vectorlike
PVEC_FRAME
(gdb) xframe
$2 = (struct frame *) 0x3f0800
(gdb) p *$
$3 = {
size = 536871989,
next = 0x366240,
name = 809661752,
[...]
}
(gdb) p $3->name
$4 = 809661752
Now we can use `pr' to print the name of the frame:
(gdb) pr
"emacs@steenrod.math.nwu.edu"
The Emacs C code heavily uses macros defined in lisp.h. So suppose
we want the address of the l-value expression near the bottom of
`add_command_key' from keyboard.c:
XVECTOR (this_command_keys)->contents[this_command_key_count++] = key;
XVECTOR is a macro, and therefore GDB does not know about it.
GDB cannot evaluate "p XVECTOR (this_command_keys)".
However, you can use the xvector command in GDB to get the same
result. Here is how:
(gdb) p this_command_keys
$1 = 1078005760
(gdb) xvector
$2 = (struct Lisp_Vector *) 0x411000
0
(gdb) p $->contents[this_command_key_count]
$3 = 1077872640
(gdb) p &$
$4 = (int *) 0x411008
Here's a related example of macros and the GDB `define' command.
There are many Lisp vectors such as `recent_keys', which contains the
last 100 keystrokes. We can print this Lisp vector
p recent_keys
pr
But this may be inconvenient, since `recent_keys' is much more verbose
than `C-h l'. We might want to print only the last 10 elements of
this vector. `recent_keys' is updated in keyboard.c by the command
XVECTOR (recent_keys)->contents[recent_keys_index] = c;
So we define a GDB command `xvector-elts', so the last 10 keystrokes
are printed by
xvector-elts recent_keys recent_keys_index 10
where you can define xvector-elts as follows:
define xvector-elts
set $i = 0
p $arg0
xvector
set $foo = $
while $i < $arg2
p $foo->contents[$arg1-($i++)]
pr
end
document xvector-elts
Prints a range of elements of a Lisp vector.
xvector-elts v n i
prints `i' elements of the vector `v' ending at the index `n'.
end
** Getting Lisp-level backtrace information within GDB
The most convenient way is to use the `xbacktrace' command. This
shows the names of the Lisp functions that are currently active.
If that doesn't work (e.g., because the `backtrace_list' structure is
corrupted), type "bt" at the GDB prompt, to produce the C-level
backtrace, and look for stack frames that call Ffuncall. Select them
one by one in GDB, by typing "up N", where N is the appropriate number
of frames to go up, and in each frame that calls Ffuncall type this:
p *args
pr
This will print the name of the Lisp function called by that level
of function calling.
By printing the remaining elements of args, you can see the argument
values. Here's how to print the first argument:
p args[1]
pr
If you do not have a live process, you can use xtype and the other
x... commands such as xsymbol to get such information, albeit less
conveniently. For example:
p *args
xtype
and, assuming that "xtype" says that args[0] is a symbol:
xsymbol
** Debugging what happens while preloading and dumping Emacs
Type `gdb temacs' and start it with `r -batch -l loadup dump'.
If temacs actually succeeds when running under GDB in this way, do not
try to run the dumped Emacs, because it was dumped with the GDB
breakpoints in it.
** Debugging `temacs'
Debugging `temacs' is useful when you want to establish whether a
problem happens in an undumped Emacs. To run `temacs' under a
debugger, type "gdb temacs", then start it with `r -batch -l loadup'.
** If you encounter X protocol errors
Try evaluating (x-synchronize t). That puts Emacs into synchronous
mode, where each Xlib call checks for errors before it returns. This
mode is much slower, but when you get an error, you will see exactly
which call really caused the error.
You can start Emacs in a synchronous mode by invoking it with the -xrm
option, like this:
emacs -xrm "emacs.synchronous: true"
Setting a breakpoint in the function `x_error_quitter' and looking at
the backtrace when Emacs stops inside that function will show what
code causes the X protocol errors.
Some bugs related to the X protocol disappear when Emacs runs in a
synchronous mode. To track down those bugs, we suggest the following
procedure:
- Run Emacs under a debugger and put a breakpoint inside the
primitive function which, when called from Lisp, triggers the X
protocol errors. For example, if the errors happen when you
delete a frame, put a breakpoint inside `Fdelete_frame'.
- When the breakpoint breaks, step through the code, looking for
calls to X functions (the ones whose names begin with "X" or
"Xt" or "Xm").
- Insert calls to `XSync' before and after each call to the X
functions, like this:
XSync (f->output_data.x->display_info->display, 0);
where `f' is the pointer to the `struct frame' of the selected
frame, normally available via XFRAME (selected_frame). (Most
functions which call X already have some variable that holds the
pointer to the frame, perhaps called `f' or `sf', so you shouldn't
need to compute it.)
If your debugger can call functions in the program being debugged,
you should be able to issue the calls to `XSync' without recompiling
Emacs. For example, with GDB, just type:
call XSync (f->output_data.x->display_info->display, 0)
before and immediately after the suspect X calls. If your
debugger does not support this, you will need to add these pairs
of calls in the source and rebuild Emacs.
Either way, systematically step through the code and issue these
calls until you find the first X function called by Emacs after
which a call to `XSync' winds up in the function
`x_error_quitter'. The first X function call for which this
happens is the one that generated the X protocol error.
- You should now look around this offending X call and try to figure
out what is wrong with it.
** If Emacs causes errors or memory leaks in your X server
You can trace the traffic between Emacs and your X server with a tool
like xmon, available at ftp://ftp.x.org/contrib/devel_tools/.
Xmon can be used to see exactly what Emacs sends when X protocol errors
happen. If Emacs causes the X server memory usage to increase you can
use xmon to see what items Emacs creates in the server (windows,
graphical contexts, pixmaps) and what items Emacs delete. If there
are consistently more creations than deletions, the type of item
and the activity you do when the items get created can give a hint where
to start debugging.
** If the symptom of the bug is that Emacs fails to respond
Don't assume Emacs is `hung'--it may instead be in an infinite loop.
To find out which, make the problem happen under GDB and stop Emacs
once it is not responding. (If Emacs is using X Windows directly, you
can stop Emacs by typing C-z at the GDB job.) Then try stepping with
`step'. If Emacs is hung, the `step' command won't return. If it is
looping, `step' will return.
If this shows Emacs is hung in a system call, stop it again and
examine the arguments of the call. If you report the bug, it is very
important to state exactly where in the source the system call is, and
what the arguments are.
If Emacs is in an infinite loop, try to determine where the loop
starts and ends. The easiest way to do this is to use the GDB command
`finish'. Each time you use it, Emacs resumes execution until it
exits one stack frame. Keep typing `finish' until it doesn't
return--that means the infinite loop is in the stack frame which you
just tried to finish.
Stop Emacs again, and use `finish' repeatedly again until you get back
to that frame. Then use `next' to step through that frame. By
stepping, you will see where the loop starts and ends. Also, examine
the data being used in the loop and try to determine why the loop does
not exit when it should.
** If certain operations in Emacs are slower than they used to be, here
is some advice for how to find out why.
Stop Emacs repeatedly during the slow operation, and make a backtrace
each time. Compare the backtraces looking for a pattern--a specific
function that shows up more often than you'd expect.
If you don't see a pattern in the C backtraces, get some Lisp
backtrace information by typing "xbacktrace" or by looking at Ffuncall
frames (see above), and again look for a pattern.
When using X, you can stop Emacs at any time by typing C-z at GDB.
When not using X, you can do this with C-g. On non-Unix platforms,
such as MS-DOS, you might need to press C-BREAK instead.
** If GDB does not run and your debuggers can't load Emacs.
On some systems, no debugger can load Emacs with a symbol table,
perhaps because they all have fixed limits on the number of symbols
and Emacs exceeds the limits. Here is a method that can be used
in such an extremity. Do
nm -n temacs > nmout
strip temacs
adb temacs
0xd:i
0xe:i
14:i
17:i
:r -l loadup (or whatever)
It is necessary to refer to the file `nmout' to convert
numeric addresses into symbols and vice versa.
It is useful to be running under a window system.
Then, if Emacs becomes hopelessly wedged, you can create
another window to do kill -9 in. kill -ILL is often
useful too, since that may make Emacs dump core or return
to adb.
** Debugging incorrect screen updating.
To debug Emacs problems that update the screen wrong, it is useful
to have a record of what input you typed and what Emacs sent to the
screen. To make these records, do
(open-dribble-file "~/.dribble")
(open-termscript "~/.termscript")
The dribble file contains all characters read by Emacs from the
terminal, and the termscript file contains all characters it sent to
the terminal. The use of the directory `~/' prevents interference
with any other user.
If you have irreproducible display problems, put those two expressions
in your ~/.emacs file. When the problem happens, exit the Emacs that
you were running, kill it, and rename the two files. Then you can start
another Emacs without clobbering those files, and use it to examine them.
An easy way to see if too much text is being redrawn on a terminal is to
evaluate `(setq inverse-video t)' before you try the operation you think
will cause too much redrawing. This doesn't refresh the screen, so only
newly drawn text is in inverse video.
The Emacs display code includes special debugging code, but it is
normally disabled. You can enable it by building Emacs with the
pre-processing symbol GLYPH_DEBUG defined. Here's one easy way,
suitable for Unix and GNU systems, to build such a debugging version:
MYCPPFLAGS='-DGLYPH_DEBUG=1' make
Building Emacs like that activates many assertions which scrutinize
display code operation more than Emacs does normally. (To see the
code which tests these assertions, look for calls to the `xassert'
macros.) Any assertion that is reported to fail should be
investigated.
Building with GLYPH_DEBUG defined also defines several helper
functions which can help debugging display code. One such function is
`dump_glyph_matrix'. If you run Emacs under GDB, you can print the
contents of any glyph matrix by just calling that function with the
matrix as its argument. For example, the following command will print
the contents of the current matrix of the window whose pointer is in
`w':
(gdb) p dump_glyph_matrix (w->current_matrix, 2)
(The second argument 2 tells dump_glyph_matrix to print the glyphs in
a long form.) You can dump the selected window's current glyph matrix
interactively with "M-x dump-glyph-matrix RET"; see the documentation
of this function for more details.
Several more functions for debugging display code are available in
Emacs compiled with GLYPH_DEBUG defined; type "C-h f dump- TAB" and
"C-h f trace- TAB" to see the full list.
** Debugging LessTif
If you encounter bugs whereby Emacs built with LessTif grabs all mouse
and keyboard events, or LessTif menus behave weirdly, it might be
helpful to set the `DEBUGSOURCES' and `DEBUG_FILE' environment
variables, so that one can see what LessTif was doing at this point.
For instance
export DEBUGSOURCES="RowColumn.c:MenuShell.c:MenuUtil.c"
export DEBUG_FILE=/usr/tmp/LESSTIF_TRACE
emacs &
causes LessTif to print traces from the three named source files to a
file in `/usr/tmp' (that file can get pretty large). The above should
be typed at the shell prompt before invoking Emacs, as shown by the
last line above.
Running GDB from another terminal could also help with such problems.
You can arrange for GDB to run on one machine, with the Emacs display
appearing on another. Then, when the bug happens, you can go back to
the machine where you started GDB and use the debugger from there.
** Debugging problems which happen in GC
The array `last_marked' (defined on alloc.c) can be used to display up
to 500 last objects marked by the garbage collection process.
Whenever the garbage collector marks a Lisp object, it records the
pointer to that object in the `last_marked' array. The variable
`last_marked_index' holds the index into the `last_marked' array one
place beyond where the pointer to the very last marked object is
stored.
The single most important goal in debugging GC problems is to find the
Lisp data structure that got corrupted. This is not easy since GC
changes the tag bits and relocates strings which make it hard to look
at Lisp objects with commands such as `pr'. It is sometimes necessary
to convert Lisp_Object variables into pointers to C struct's manually.
Use the `last_marked' array and the source to reconstruct the sequence
that objects were marked.
Once you discover the corrupted Lisp object or data structure, it is
useful to look at it in a fresh Emacs session and compare its contents
with a session that you are debugging.
** Debugging problems with non-ASCII characters
If you experience problems which seem to be related to non-ASCII
characters, such as \201 characters appearing in the buffer or in your
files, set the variable byte-debug-flag to t. This causes Emacs to do
some extra checks, such as look for broken relations between byte and
character positions in buffers and strings; the resulting diagnostics
might pinpoint the cause of the problem.
** Debugging the TTY (non-windowed) version
The most convenient method of debugging the character-terminal display
is to do that on a window system such as X. Begin by starting an
xterm window, then type these commands inside that window:
$ tty
$ echo $TERM
Let's say these commands print "/dev/ttyp4" and "xterm", respectively.
Now start Emacs (the normal, windowed-display session, i.e. without
the `-nw' option), and invoke "M-x gdb RET emacs RET" from there. Now
type these commands at GDB's prompt:
(gdb) set args -nw -t /dev/ttyp4
(gdb) set environment TERM xterm
(gdb) run
The debugged Emacs should now start in no-window mode with its display
directed to the xterm window you opened above.
Similar arrangement is possible on a character terminal by using the
`screen' package.
** Running Emacs built with malloc debugging packages
If Emacs exhibits bugs that seem to be related to use of memory
allocated off the heap, it might be useful to link Emacs with a
special debugging library, such as Electric Fence (a.k.a. efence) or
GNU Checker, which helps find such problems.
Emacs compiled with such packages might not run without some hacking,
because Emacs replaces the system's memory allocation functions with
its own versions, and because the dumping process might be
incompatible with the way these packages use to track allocated
memory. Here are some of the changes you might find necessary
(SYSTEM-NAME and MACHINE-NAME are the names of your OS- and
CPU-specific headers in the subdirectories of `src'):
- In src/s/SYSTEM-NAME.h add "#define SYSTEM_MALLOC".
- In src/m/MACHINE-NAME.h add "#define CANNOT_DUMP" and
"#define CANNOT_UNEXEC".
- Configure with a different --prefix= option. If you use GCC,
version 2.7.2 is preferred, as some malloc debugging packages
work a lot better with it than with 2.95 or later versions.
- Type "make" then "make -k install".
- If required, invoke the package-specific command to prepare
src/temacs for execution.
- cd ..; src/temacs
(Note that this runs `temacs' instead of the usual `emacs' executable.
This avoids problems with dumping Emacs mentioned above.)
Some malloc debugging libraries might print lots of false alarms for
bitfields used by Emacs in some data structures. If you want to get
rid of the false alarms, you will have to hack the definitions of
these data structures on the respective headers to remove the `:N'
bitfield definitions (which will cause each such field to use a full
int).
** Some suggestions for debugging on MS Windows:
(written by Marc Fleischeuers, Geoff Voelker and Andrew Innes)
To debug Emacs with Microsoft Visual C++, you either start emacs from
the debugger or attach the debugger to a running emacs process.
To start emacs from the debugger, you can use the file bin/debug.bat.
The Microsoft Developer studio will start and under Project, Settings,
Debug, General you can set the command-line arguments and Emacs's
startup directory. Set breakpoints (Edit, Breakpoints) at Fsignal and
other functions that you want to examine. Run the program (Build,
Start debug). Emacs will start and the debugger will take control as
soon as a breakpoint is hit.
You can also attach the debugger to an already running Emacs process.
To do this, start up the Microsoft Developer studio and select Build,
Start debug, Attach to process. Choose the Emacs process from the
list. Send a break to the running process (Debug, Break) and you will
find that execution is halted somewhere in user32.dll. Open the stack
trace window and go up the stack to w32_msg_pump. Now you can set
breakpoints in Emacs (Edit, Breakpoints). Continue the running Emacs
process (Debug, Step out) and control will return to Emacs, until a
breakpoint is hit.
To examine the contents of a Lisp variable, you can use the function
'debug_print'. Right-click on a variable, select QuickWatch (it has
an eyeglass symbol on its button in the toolbar), and in the text
field at the top of the window, place 'debug_print(' and ')' around
the expression. Press 'Recalculate' and the output is sent to stderr,
and to the debugger via the OutputDebugString routine. The output
sent to stderr should be displayed in the console window that was
opened when the emacs.exe executable was started. The output sent to
the debugger should be displayed in the 'Debug' pane in the Output
window. If Emacs was started from the debugger, a console window was
opened at Emacs' startup; this console window also shows the output of
'debug_print'.
For example, start and run Emacs in the debugger until it is waiting
for user input. Then click on the `Break' button in the debugger to
halt execution. Emacs should halt in `ZwUserGetMessage' waiting for
an input event. Use the `Call Stack' window to select the procedure
`w32_msp_pump' up the call stack (see below for why you have to do
this). Open the QuickWatch window and enter
"debug_print(Vexec_path)". Evaluating this expression will then print
out the contents of the Lisp variable `exec-path'.
If QuickWatch reports that the symbol is unknown, then check the call
stack in the `Call Stack' window. If the selected frame in the call
stack is not an Emacs procedure, then the debugger won't recognize
Emacs symbols. Instead, select a frame that is inside an Emacs
procedure and try using `debug_print' again.
If QuickWatch invokes debug_print but nothing happens, then check the
thread that is selected in the debugger. If the selected thread is
not the last thread to run (the "current" thread), then it cannot be
used to execute debug_print. Use the Debug menu to select the current
thread and try using debug_print again. Note that the debugger halts
execution (e.g., due to a breakpoint) in the context of the current
thread, so this should only be a problem if you've explicitly switched
threads.
It is also possible to keep appropriately masked and typecast Lisp
symbols in the Watch window, this is more convenient when steeping
though the code. For instance, on entering apply_lambda, you can
watch (struct Lisp_Symbol *) (0xfffffff & args[0]).
Optimizations often confuse the MS debugger. For example, the
debugger will sometimes report wrong line numbers, e.g., when it
prints the backtrace for a crash. It is usually best to look at the
disassembly to determine exactly what code is being run--the
disassembly will probably show several source lines followed by a
block of assembler for those lines. The actual point where Emacs
crashes will be one of those source lines, but not neccesarily the one
that the debugger reports.
Another problematic area with the MS debugger is with variables that
are stored in registers: it will sometimes display wrong values for
those variables. Usually you will not be able to see any value for a
register variable, but if it is only being stored in a register
temporarily, you will see an old value for it. Again, you need to
look at the disassembly to determine which registers are being used,
and look at those registers directly, to see the actual current values
of these variables.

View file

@ -1,102 +0,0 @@
-*- text -*-
For an order form for all Emacs and FSF distributions deliverable from
the USA, see the file `ORDERS' in this directory (etc/ in the GNU
Emacs distribution or http://www.gnu.org/order/order.html).
GNU Emacs availability information, October 2000
Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1995, 1998, 2000
Free Software Foundation, Inc.
Permission is granted to anyone to make or distribute
verbatim copies of this document provided that the
copyright notice and this permission notice are preserved.
GNU Emacs is legally owned by the Free Software Foundation, but we
regard the foundation more as its custodian on behalf of the public.
In the GNU project, when we speak of "free software", this refers to
liberty, not price. Specifically, it refers to the users' freedom to
study, copy, change and improve the software. Sometimes users pay
money for copies of GNU software, and sometimes they get copies at no
charge. But regardless of how they got the software, or whether it
was modified by anyone else along the way, they have the freedom to
copy and change it--those freedoms are what "free software" means.
The precise conditions for copying and modification are stated in the
document "GNU General Public License," a copy of which is required to
be distributed with every copy of GNU Emacs. It is usually in a file
named `COPYING' in the same directory as this file. These conditions
are designed to make sure that everyone who has a copy of GNU Emacs
(including modified versions) has the freedom to redistribute and
change it.
If you do not know anyone to get a copy of GNU Emacs from, you can
order a cd-rom from the Free Software Foundation. We distribute
several Emacs versions. We also distribute nicely typeset copies of
the Emacs user manual, Emacs Lisp Reference Manual, the Emacs
reference card, etc. See file `ORDERS', or visit
http://www.gnu.org/order/order.html.
If you have Internet access, you can copy the latest Emacs
distribution from hosts, such as ftp.gnu.org. There are several ways
to do this; see http://www.gnu.org/software/software.html for more
information.
Emacs has been run on GNU/Linux, FreeBSD, NetBSD, OpenBSD, and on many
Unix systems, on a variety of types of cpu. It also works on VMS and
on Apollo computers, though with some deficiencies that reflect
problems in these operating systems. See the file `MACHINES' in this
directory (see above) for a full list of machines that GNU Emacs has
been tested on, with machine-specific installation notes and warnings.
There is also an MS-DOS version that works on MS-DOS and all platforms
that have some kind of ``DOS box'', and also an MS-Windows and a Mac
version.
Note that there is significant variation between Unix systems
supposedly running the same version of Unix; it is possible that what
works in GNU Emacs for me does not work on your system due to such an
incompatibility. Since I must avoid reading Unix source code, I
cannot even guess what such problems may exist.
GNU Emacs is distributed with no warranty (see the General Public
License for full details, in the file `COPYING' in this directory (see
above)), and neither I nor the Free Software Foundation promises any
kind of support or assistance to users. The foundation keeps a list
of people who are willing to offer support and assistance for hire.
See http://www.gnu.org/help/gethelp.html.
However, we plan to continue to improve GNU Emacs and keep it
reliable, so please send me any complaints and suggestions you have.
I will probably fix anything that I consider a malfunction. I may
make improvements that are suggested, but I may choose not to.
If you are on the Internet, report bugs to bug-gnu-emacs@gnu.org. You
can use the Emacs command M-x report-bug RET to mail a bug report.
Please read the Bugs section of the Emacs manual before reporting
bugs.
General questions about the GNU Project can be asked of gnu@gnu.org.
If you are a computer manufacturer, I encourage you to ship a copy of
GNU Emacs with every computer you deliver. The same copying
permission terms apply to computer manufacturers as to everyone else.
You should consider making a donation to help support the GNU project;
if you estimate what it would cost to distribute some commercial
product and divide it by five, that is a good amount.
If you like GNU Emacs, please express your satisfaction with a
donation: send me or the Foundation what you feel Emacs has been worth
to you. If you are glad that I developed GNU Emacs and distribute it
as freeware, rather than following the obstructive and antisocial
practices typical of software developers, reward me. If you would
like the Foundation to develop more free software, contribute.
Your donations will help to support the development of additional GNU
software. GNU/Linux systems (variants of GNU, based on the kernel
Linux) have millions of users, but there is still much to be done.
For more information on GNU, see the file `GNU' in this directory (see
above).
Richard M Stallman
Chief GNUisance,
President of the Free Software Foundation

View file

@ -1,93 +0,0 @@
-*- indented-text -*-
This file contains two sections:
1) An EBNF (Extended Backus Normal Form) description of the format of
the tags file created by etags.c and interpreted by etags.el;
2) A discussion of tag names and implicit tag names.
====================== 1) EBNF tag file description =====================
Productions created from current behaviour to aid extensions
Francesco Potorti` <pot@gnu.org> 2002
----------------
FF ::= #x0c /* tag section starter */
LF ::= #x0a /* line terminator */
DEL ::= #x7f /* pattern terminator */
SOH ::= #x01 /* name terminator */
regchar ::= [^#x0a#x0c#x7f] /* regular character */
regstring ::= { regchar } /* regular string */
unsint ::= [0-9] { [0-9] } /* non-negative integer */
tagfile ::= { tagsection } /* a tags file */
tagsection ::= FF LF ( includesec | regularsec ) LF
includesec ::= filename ",include" [ LF fileprop ]
regularsec ::= filename "," [ unsint ] [ LF fileprop ] { LF tag }
filename ::= regchar regstring /* a file name */
fileprop ::= "(" regstring ")" /* an elisp alist */
tag ::= directtag | patterntag
directtag ::= DEL realposition /* no pattern */
patterntag ::= pattern DEL [ tagname SOH ] position
pattern ::= regstring /* a tag pattern */
tagname ::= regchar regstring /* a tag name */
position ::= realposition | "," /* charpos,linepos */
realposition ::= "," unsint | unsint "," | unsint "," unsint
==================== end of EBNF tag file description ====================
======================= 2) discussion of tag names =======================
- WHAT ARE TAG NAMES
Tag lines in a tags file are usually made from the above defined pattern
and by an optional tag name. The pattern is a string that is searched
in the source file to find the tagged line.
- WHY TAG NAMES ARE GOOD
When a user looks for a tag, Emacs first compares the tag with the tag
names contained in the tags file. If no match is found, Emacs compares
the tag with the patterns. The tag name is then the preferred way to
look for tags in the tags file, because when the tag name is present
Emacs can find a tag faster and more accurately. These tag names are
part of tag lines in the tags file, so we call them "explicit".
- WHY IMPLICIT TAG NAMES ARE EVEN BETTER
When a tag line has no name, but a name can be deduced from the pattern,
we say that the tag line has an implicit tag name. Often tag names are
redundant; this happens when the name of a tag is an easily guessable
substring of the tag pattern. We define a set of rules to decide
whether it is possible to deduce the tag name from the pattern, and make
an unnamed tag in those cases. The name deduced from the pattern of an
unnamed tag is the implicit name of that tag.
When the user looks for a tag, and Emacs founds no explicit tag names
that match it, Emacs then looks for an tag whose implicit tag name
matches the request. etags.c uses implicit tag names when possible, in
order to reduce the size of the tags file.
An implicit tag name is deduced from the pattern by discarding the
last character if it is one of ` \f\t\n\r()=,;', then taking all the
rightmost consecutive characters in the pattern which are not one of
those.
===================== end of discussion of tag names =====================

View file

@ -1,2 +0,0 @@
Please refer to <http://www.gnu.org/software/emacs/> for information
about obtaining Emacs.

532
etc/GNU
View file

@ -1,532 +0,0 @@
Copyright (C) 1985, 1993 Free Software Foundation, Inc.
Permission is granted to anyone to make or distribute verbatim copies
of this document, in any medium, provided that the copyright notice and
permission notice are preserved, and that the distributor grants the
recipient permission for further redistribution as permitted by this
notice.
Modified versions may not be made.
The GNU Manifesto
*****************
The GNU Manifesto which appears below was written by Richard
Stallman at the beginning of the GNU project, to ask for
participation and support. For the first few years, it was
updated in minor ways to account for developments, but now it
seems best to leave it unchanged as most people have seen it.
Since that time, we have learned about certain common
misunderstandings that different wording could help avoid.
Footnotes added in 1993 help clarify these points.
For up-to-date information about the available GNU software,
please see the latest issue of the GNU's Bulletin. The list is
much too long to include here.
What's GNU? Gnu's Not Unix!
============================
GNU, which stands for Gnu's Not Unix, is the name for the complete
Unix-compatible software system which I am writing so that I can give it
away free to everyone who can use it.(1) Several other volunteers are
helping me. Contributions of time, money, programs and equipment are
greatly needed.
So far we have an Emacs text editor with Lisp for writing editor
commands, a source level debugger, a yacc-compatible parser generator,
a linker, and around 35 utilities. A shell (command interpreter) is
nearly completed. A new portable optimizing C compiler has compiled
itself and may be released this year. An initial kernel exists but
many more features are needed to emulate Unix. When the kernel and
compiler are finished, it will be possible to distribute a GNU system
suitable for program development. We will use TeX as our text
formatter, but an nroff is being worked on. We will use the free,
portable X window system as well. After this we will add a portable
Common Lisp, an Empire game, a spreadsheet, and hundreds of other
things, plus on-line documentation. We hope to supply, eventually,
everything useful that normally comes with a Unix system, and more.
GNU will be able to run Unix programs, but will not be identical to
Unix. We will make all improvements that are convenient, based on our
experience with other operating systems. In particular, we plan to
have longer file names, file version numbers, a crashproof file system,
file name completion perhaps, terminal-independent display support, and
perhaps eventually a Lisp-based window system through which several
Lisp programs and ordinary Unix programs can share a screen. Both C
and Lisp will be available as system programming languages. We will
try to support UUCP, MIT Chaosnet, and Internet protocols for
communication.
GNU is aimed initially at machines in the 68000/16000 class with
virtual memory, because they are the easiest machines to make it run
on. The extra effort to make it run on smaller machines will be left
to someone who wants to use it on them.
To avoid horrible confusion, please pronounce the `G' in the word
`GNU' when it is the name of this project.
Why I Must Write GNU
====================
I consider that the golden rule requires that if I like a program I
must share it with other people who like it. Software sellers want to
divide the users and conquer them, making each user agree not to share
with others. I refuse to break solidarity with other users in this
way. I cannot in good conscience sign a nondisclosure agreement or a
software license agreement. For years I worked within the Artificial
Intelligence Lab to resist such tendencies and other inhospitalities,
but eventually they had gone too far: I could not remain in an
institution where such things are done for me against my will.
So that I can continue to use computers without dishonor, I have
decided to put together a sufficient body of free software so that I
will be able to get along without any software that is not free. I
have resigned from the AI lab to deny MIT any legal excuse to prevent
me from giving GNU away.
Why GNU Will Be Compatible with Unix
====================================
Unix is not my ideal system, but it is not too bad. The essential
features of Unix seem to be good ones, and I think I can fill in what
Unix lacks without spoiling them. And a system compatible with Unix
would be convenient for many other people to adopt.
How GNU Will Be Available
=========================
GNU is not in the public domain. Everyone will be permitted to
modify and redistribute GNU, but no distributor will be allowed to
restrict its further redistribution. That is to say, proprietary
modifications will not be allowed. I want to make sure that all
versions of GNU remain free.
Why Many Other Programmers Want to Help
=======================================
I have found many other programmers who are excited about GNU and
want to help.
Many programmers are unhappy about the commercialization of system
software. It may enable them to make more money, but it requires them
to feel in conflict with other programmers in general rather than feel
as comrades. The fundamental act of friendship among programmers is the
sharing of programs; marketing arrangements now typically used
essentially forbid programmers to treat others as friends. The
purchaser of software must choose between friendship and obeying the
law. Naturally, many decide that friendship is more important. But
those who believe in law often do not feel at ease with either choice.
They become cynical and think that programming is just a way of making
money.
By working on and using GNU rather than proprietary programs, we can
be hospitable to everyone and obey the law. In addition, GNU serves as
an example to inspire and a banner to rally others to join us in
sharing. This can give us a feeling of harmony which is impossible if
we use software that is not free. For about half the programmers I
talk to, this is an important happiness that money cannot replace.
How You Can Contribute
======================
I am asking computer manufacturers for donations of machines and
money. I'm asking individuals for donations of programs and work.
One consequence you can expect if you donate machines is that GNU
will run on them at an early date. The machines should be complete,
ready to use systems, approved for use in a residential area, and not
in need of sophisticated cooling or power.
I have found very many programmers eager to contribute part-time
work for GNU. For most projects, such part-time distributed work would
be very hard to coordinate; the independently-written parts would not
work together. But for the particular task of replacing Unix, this
problem is absent. A complete Unix system contains hundreds of utility
programs, each of which is documented separately. Most interface
specifications are fixed by Unix compatibility. If each contributor
can write a compatible replacement for a single Unix utility, and make
it work properly in place of the original on a Unix system, then these
utilities will work right when put together. Even allowing for Murphy
to create a few unexpected problems, assembling these components will
be a feasible task. (The kernel will require closer communication and
will be worked on by a small, tight group.)
If I get donations of money, I may be able to hire a few people full
or part time. The salary won't be high by programmers' standards, but
I'm looking for people for whom building community spirit is as
important as making money. I view this as a way of enabling dedicated
people to devote their full energies to working on GNU by sparing them
the need to make a living in another way.
Why All Computer Users Will Benefit
===================================
Once GNU is written, everyone will be able to obtain good system
software free, just like air.(2)
This means much more than just saving everyone the price of a Unix
license. It means that much wasteful duplication of system programming
effort will be avoided. This effort can go instead into advancing the
state of the art.
Complete system sources will be available to everyone. As a result,
a user who needs changes in the system will always be free to make them
himself, or hire any available programmer or company to make them for
him. Users will no longer be at the mercy of one programmer or company
which owns the sources and is in sole position to make changes.
Schools will be able to provide a much more educational environment
by encouraging all students to study and improve the system code.
Harvard's computer lab used to have the policy that no program could be
installed on the system if its sources were not on public display, and
upheld it by actually refusing to install certain programs. I was very
much inspired by this.
Finally, the overhead of considering who owns the system software
and what one is or is not entitled to do with it will be lifted.
Arrangements to make people pay for using a program, including
licensing of copies, always incur a tremendous cost to society through
the cumbersome mechanisms necessary to figure out how much (that is,
which programs) a person must pay for. And only a police state can
force everyone to obey them. Consider a space station where air must
be manufactured at great cost: charging each breather per liter of air
may be fair, but wearing the metered gas mask all day and all night is
intolerable even if everyone can afford to pay the air bill. And the
TV cameras everywhere to see if you ever take the mask off are
outrageous. It's better to support the air plant with a head tax and
chuck the masks.
Copying all or parts of a program is as natural to a programmer as
breathing, and as productive. It ought to be as free.
Some Easily Rebutted Objections to GNU's Goals
==============================================
"Nobody will use it if it is free, because that means they can't
rely on any support."
"You have to charge for the program to pay for providing the
support."
If people would rather pay for GNU plus service than get GNU free
without service, a company to provide just service to people who have
obtained GNU free ought to be profitable.(3)
We must distinguish between support in the form of real programming
work and mere handholding. The former is something one cannot rely on
from a software vendor. If your problem is not shared by enough
people, the vendor will tell you to get lost.
If your business needs to be able to rely on support, the only way
is to have all the necessary sources and tools. Then you can hire any
available person to fix your problem; you are not at the mercy of any
individual. With Unix, the price of sources puts this out of
consideration for most businesses. With GNU this will be easy. It is
still possible for there to be no available competent person, but this
problem cannot be blamed on distribution arrangements. GNU does not
eliminate all the world's problems, only some of them.
Meanwhile, the users who know nothing about computers need
handholding: doing things for them which they could easily do
themselves but don't know how.
Such services could be provided by companies that sell just
hand-holding and repair service. If it is true that users would rather
spend money and get a product with service, they will also be willing
to buy the service having got the product free. The service companies
will compete in quality and price; users will not be tied to any
particular one. Meanwhile, those of us who don't need the service
should be able to use the program without paying for the service.
"You cannot reach many people without advertising, and you must
charge for the program to support that."
"It's no use advertising a program people can get free."
There are various forms of free or very cheap publicity that can be
used to inform numbers of computer users about something like GNU. But
it may be true that one can reach more microcomputer users with
advertising. If this is really so, a business which advertises the
service of copying and mailing GNU for a fee ought to be successful
enough to pay for its advertising and more. This way, only the users
who benefit from the advertising pay for it.
On the other hand, if many people get GNU from their friends, and
such companies don't succeed, this will show that advertising was not
really necessary to spread GNU. Why is it that free market advocates
don't want to let the free market decide this?(4)
"My company needs a proprietary operating system to get a
competitive edge."
GNU will remove operating system software from the realm of
competition. You will not be able to get an edge in this area, but
neither will your competitors be able to get an edge over you. You and
they will compete in other areas, while benefiting mutually in this
one. If your business is selling an operating system, you will not
like GNU, but that's tough on you. If your business is something else,
GNU can save you from being pushed into the expensive business of
selling operating systems.
I would like to see GNU development supported by gifts from many
manufacturers and users, reducing the cost to each.(5)
"Don't programmers deserve a reward for their creativity?"
If anything deserves a reward, it is social contribution.
Creativity can be a social contribution, but only in so far as society
is free to use the results. If programmers deserve to be rewarded for
creating innovative programs, by the same token they deserve to be
punished if they restrict the use of these programs.
"Shouldn't a programmer be able to ask for a reward for his
creativity?"
There is nothing wrong with wanting pay for work, or seeking to
maximize one's income, as long as one does not use means that are
destructive. But the means customary in the field of software today
are based on destruction.
Extracting money from users of a program by restricting their use of
it is destructive because the restrictions reduce the amount and the
ways that the program can be used. This reduces the amount of wealth
that humanity derives from the program. When there is a deliberate
choice to restrict, the harmful consequences are deliberate destruction.
The reason a good citizen does not use such destructive means to
become wealthier is that, if everyone did so, we would all become
poorer from the mutual destructiveness. This is Kantian ethics; or,
the Golden Rule. Since I do not like the consequences that result if
everyone hoards information, I am required to consider it wrong for one
to do so. Specifically, the desire to be rewarded for one's creativity
does not justify depriving the world in general of all or part of that
creativity.
"Won't programmers starve?"
I could answer that nobody is forced to be a programmer. Most of us
cannot manage to get any money for standing on the street and making
faces. But we are not, as a result, condemned to spend our lives
standing on the street making faces, and starving. We do something
else.
But that is the wrong answer because it accepts the questioner's
implicit assumption: that without ownership of software, programmers
cannot possibly be paid a cent. Supposedly it is all or nothing.
The real reason programmers will not starve is that it will still be
possible for them to get paid for programming; just not paid as much as
now.
Restricting copying is not the only basis for business in software.
It is the most common basis because it brings in the most money. If it
were prohibited, or rejected by the customer, software business would
move to other bases of organization which are now used less often.
There are always numerous ways to organize any kind of business.
Probably programming will not be as lucrative on the new basis as it
is now. But that is not an argument against the change. It is not
considered an injustice that sales clerks make the salaries that they
now do. If programmers made the same, that would not be an injustice
either. (In practice they would still make considerably more than
that.)
"Don't people have a right to control how their creativity is
used?"
"Control over the use of one's ideas" really constitutes control over
other people's lives; and it is usually used to make their lives more
difficult.
People who have studied the issue of intellectual property rights
carefully (such as lawyers) say that there is no intrinsic right to
intellectual property. The kinds of supposed intellectual property
rights that the government recognizes were created by specific acts of
legislation for specific purposes.
For example, the patent system was established to encourage
inventors to disclose the details of their inventions. Its purpose was
to help society rather than to help inventors. At the time, the life
span of 17 years for a patent was short compared with the rate of
advance of the state of the art. Since patents are an issue only among
manufacturers, for whom the cost and effort of a license agreement are
small compared with setting up production, the patents often do not do
much harm. They do not obstruct most individuals who use patented
products.
The idea of copyright did not exist in ancient times, when authors
frequently copied other authors at length in works of non-fiction. This
practice was useful, and is the only way many authors' works have
survived even in part. The copyright system was created expressly for
the purpose of encouraging authorship. In the domain for which it was
invented--books, which could be copied economically only on a printing
press--it did little harm, and did not obstruct most of the individuals
who read the books.
All intellectual property rights are just licenses granted by society
because it was thought, rightly or wrongly, that society as a whole
would benefit by granting them. But in any particular situation, we
have to ask: are we really better off granting such license? What kind
of act are we licensing a person to do?
The case of programs today is very different from that of books a
hundred years ago. The fact that the easiest way to copy a program is
from one neighbor to another, the fact that a program has both source
code and object code which are distinct, and the fact that a program is
used rather than read and enjoyed, combine to create a situation in
which a person who enforces a copyright is harming society as a whole
both materially and spiritually; in which a person should not do so
regardless of whether the law enables him to.
"Competition makes things get done better."
The paradigm of competition is a race: by rewarding the winner, we
encourage everyone to run faster. When capitalism really works this
way, it does a good job; but its defenders are wrong in assuming it
always works this way. If the runners forget why the reward is offered
and become intent on winning, no matter how, they may find other
strategies--such as, attacking other runners. If the runners get into
a fist fight, they will all finish late.
Proprietary and secret software is the moral equivalent of runners
in a fist fight. Sad to say, the only referee we've got does not seem
to object to fights; he just regulates them ("For every ten yards you
run, you can fire one shot"). He really ought to break them up, and
penalize runners for even trying to fight.
"Won't everyone stop programming without a monetary incentive?"
Actually, many people will program with absolutely no monetary
incentive. Programming has an irresistible fascination for some
people, usually the people who are best at it. There is no shortage of
professional musicians who keep at it even though they have no hope of
making a living that way.
But really this question, though commonly asked, is not appropriate
to the situation. Pay for programmers will not disappear, only become
less. So the right question is, will anyone program with a reduced
monetary incentive? My experience shows that they will.
For more than ten years, many of the world's best programmers worked
at the Artificial Intelligence Lab for far less money than they could
have had anywhere else. They got many kinds of non-monetary rewards:
fame and appreciation, for example. And creativity is also fun, a
reward in itself.
Then most of them left when offered a chance to do the same
interesting work for a lot of money.
What the facts show is that people will program for reasons other
than riches; but if given a chance to make a lot of money as well, they
will come to expect and demand it. Low-paying organizations do poorly
in competition with high-paying ones, but they do not have to do badly
if the high-paying ones are banned.
"We need the programmers desperately. If they demand that we stop
helping our neighbors, we have to obey."
You're never so desperate that you have to obey this sort of demand.
Remember: millions for defense, but not a cent for tribute!
"Programmers need to make a living somehow."
In the short run, this is true. However, there are plenty of ways
that programmers could make a living without selling the right to use a
program. This way is customary now because it brings programmers and
businessmen the most money, not because it is the only way to make a
living. It is easy to find other ways if you want to find them. Here
are a number of examples.
A manufacturer introducing a new computer will pay for the porting of
operating systems onto the new hardware.
The sale of teaching, hand-holding and maintenance services could
also employ programmers.
People with new ideas could distribute programs as freeware, asking
for donations from satisfied users, or selling hand-holding services.
I have met people who are already working this way successfully.
Users with related needs can form users' groups, and pay dues. A
group would contract with programming companies to write programs that
the group's members would like to use.
All sorts of development can be funded with a Software Tax:
Suppose everyone who buys a computer has to pay x percent of the
price as a software tax. The government gives this to an agency
like the NSF to spend on software development.
But if the computer buyer makes a donation to software development
himself, he can take a credit against the tax. He can donate to
the project of his own choosing--often, chosen because he hopes to
use the results when it is done. He can take a credit for any
amount of donation up to the total tax he had to pay.
The total tax rate could be decided by a vote of the payers of the
tax, weighted according to the amount they will be taxed on.
The consequences:
* The computer-using community supports software development.
* This community decides what level of support is needed.
* Users who care which projects their share is spent on can
choose this for themselves.
In the long run, making programs free is a step toward the
post-scarcity world, where nobody will have to work very hard just to
make a living. People will be free to devote themselves to activities
that are fun, such as programming, after spending the necessary ten
hours a week on required tasks such as legislation, family counseling,
robot repair and asteroid prospecting. There will be no need to be
able to make a living from programming.
We have already greatly reduced the amount of work that the whole
society must do for its actual productivity, but only a little of this
has translated itself into leisure for workers because much
nonproductive activity is required to accompany productive activity.
The main causes of this are bureaucracy and isometric struggles against
competition. Free software will greatly reduce these drains in the
area of software production. We must do this, in order for technical
gains in productivity to translate into less work for us.
---------- Footnotes ----------
(1) The wording here was careless. The intention was that nobody
would have to pay for *permission* to use the GNU system. But the
words don't make this clear, and people often interpret them as saying
that copies of GNU should always be distributed at little or no charge.
That was never the intent; later on, the manifesto mentions the
possibility of companies providing the service of distribution for a
profit. Subsequently I have learned to distinguish carefully between
"free" in the sense of freedom and "free" in the sense of price. Free
software is software that users have the freedom to distribute and
change. Some users may obtain copies at no charge, while others pay to
obtain copies--and if the funds help support improving the software, so
much the better. The important thing is that everyone who has a copy
has the freedom to cooperate with others in using it.
(2) This is another place I failed to distinguish carefully between
the two different meanings of "free". The statement as it stands is
not false--you can get copies of GNU software at no charge, from your
friends or over the net. But it does suggest the wrong idea.
(3) Several such companies now exist.
(4) The Free Software Foundation raises most of its funds from a
distribution service, although it is a charity rather than a company.
If *no one* chooses to obtain copies by ordering from the FSF, it
will be unable to do its work. But this does not mean that proprietary
restrictions are justified to force every user to pay. If a small
fraction of all the users order copies from the FSF, that is sufficient
to keep the FSF afloat. So we ask users to choose to support us in
this way. Have you done your part?
(5) A group of computer companies recently pooled funds to support
maintenance of the GNU C Compiler.

View file

@ -1,58 +0,0 @@
This is a list of ways to say hello in various languages.
Its purpose is to illustrate a number of scripts.
---------------------------------------------------------
Amharic ($(3"c!<!N"^(B) $(3!A!,!>(B
Arabic (38R(47d(3T!JSa(4W(3W(B
Czech (,Bh(Besky) Dobr,B}(B den
Danish (Dansk) Hej, Goddag
English Hello
Esperanto Saluton (E,C6(Bo,C~(Ban,Cx(Bo ,Cf(Biu,C<(Ba,C}(Bde)
Estonian Tere, Tervist
FORTRAN PROGRAM
Finnish (Suomi) Hei
French (Fran,Ag(Bais) Bonjour, Salut
German (Deutsch Nord) Guten Tag
German (Deutsch S,A|(Bd) Gr,A|_(B Gott
Greek (,FEkkgmij\(B) ,FCei\(B ,Fsar(B
Hebrew ,Hylem(B
Hindi (4$,4!}t%"+0$,15y55B14$,4!.v#"Yv#"20$,15f6 1(B) 4$,4!8v#")0$,15h14$,4!hv#")0$,15n14$,4!zv#!)v#")v#"D0$,15x6-5d6'1(B, 4$,4!8v#")0$,15h14$,4!hv#")0$,15n14$,4!zv# ev#"Rv#")0$,15x6-5U5~14$,4!nv#"W0$,15p1(B 4$,4 J0$,16D1(B
Italian (Italiano) Ciao, Buon giorno
Lao ((1>RJRERG(B) (1JP:R-04U1(B, 0(1"m1c0Ki1b*!04U1(B
Malayalam (4$,46A0$,1@N14$,46E0$,1@R14$,46Bv#6M0$,1@O@^14$,46Fv#6W0$,1@S@"1(B) 4$,46<0$,1@H14$,46A0$,1@N14$,46Kv#6Vv#6)v#6M0$,1@X@m@5@^14$,46Cv#6W0$,1@P@"1(B
Maltese (Malti) Bon,Cu(Bu, Sa,C11(Ba
Nederlands, Vlaams Hallo, Dag
Norwegian (Norsk) Hei, God dag
Polish Dzie,Bq(B dobry! Cze,B6f(B!
Russian (,L@caaZXY(B) ,L7T`PRabRcYbU(B!
Slovak (slovensky) Dobr,B}(B de,Br(B
Slovenian (sloven,B9h(Bina) Pozdravljeni!
Spanish (Espa,Aq(Bol) ,A!(BHola!
Swedish (Svenska) Hej, Goddag
Tamil (4$,4*N0$,1<D14$,4(i0$,1<N<_14$,4*Vv#)b0$,1<T<m1(B) 4$,4*U0$,1<U14$,4*M0$,1<C14$,4*Hv#)b0$,1<5<m14$,4*H0$,1<514$,4*Qv#)b0$,1<N<m1(B
Thai (,T@RIRd7B(B) ,TJ0GQ1J04U1$0CQ1:(B, ,TJ0GQ1J04U10$h1P(B
Tibetan (4$(7"7r'"]0"7"]14"20"21!;4%P0"G#!"Q14"20"21!;(B) 4$(7"70"714$P0"!#C"Q1!;4"Er'"S0"E"S14"G0"G1!;4"70"714"2r'"[0"2"[1!;4"Dr'"[0"D"[14"#0"#14"G0"G1!>(B
Tigrigna ($(3"8#r!N"^(B) $(3!Q!,!<"8(B
Turkish (T,M|(Brk,Mg(Be) Merhaba
Vietnamese (Ti,1*(Bng Vi,1.(Bt) Ch,1`(Bo b,1U(Bn
Japanese ($BF|K\8l(B) $B$3$s$K$A$O(B, (I:]FAJ(B
Chinese ($AVPND(B,$AFUM(;0(B,$A::So(B) $ADc:C(B
Cantonese ($(0GnM$(B,$(0N]0*Hd(B) $(0*/=((B, $(0+$)p(B
Korean ($(CGQ1[(B) $(C>H3gGO<<?d(B, $(C>H3gGO=J4O1n(B
Difference among chinese characters in GB, JIS, KSC, BIG5:
GB -- $AT*Fx(B $A?*7"(B
JIS -- $B855$(B $B3+H/(B
KSC -- $(Cj*Q((B $(CKR[!(B
BIG5 -- $(0&x86(B $(0DeBv(B
Just for a test of JISX0212: $BqV$(DiQ(B (the second character is of JISX0212)
A short test for Unicode characters:
Czech ($,1 -(Besky) Dobr,A}(B den
Esperanto Saluton (E$,1 E(Bo$,1 }(Ban$,1 =(Bo $,1 )(Biu$,1 U(Ba$,1!-(Bde)
Greek ($,1&u';';'7'='9':',(B) $,1&s'5'9',(B $,1'C'1'B(B
Hebrew $,1-),|,u,}(B
Russian ($,1(@(c(a(a(Z(X(Y(B) $,1(7(T(`(P(R(a(b(R(c(Y(b(U(B!
Maltese (Malti) Bon$,1 A(Bu, Sa$,1 G G(Ba

View file

@ -1,443 +0,0 @@
GNU'S NOT UNIX
Conducted by David Betz and Jon Edwards
Richard Stallman discusses his public-domain
UNIX-compatible software system
with BYTE editors
(July 1986)
Copyright (C) 1986 Richard Stallman. Permission is granted to make and
distribute copies of this article as long as the copyright and this notice
appear on all copies.
Richard Stallman has undertaken probably the most ambitious free software
development project to date, the GNU system. In his GNU Manifesto,
published in the March 1985 issue of Dr. Dobb's Journal, Stallman described
GNU as a "complete Unix-compatible software system which I am writing so
that I can give it away free to everyone who can use it... Once GNU is
written, everyone will be able to obtain good system software free, just
like air." (GNU is an acronym for GNU's Not UNIX; the "G" is pronounced.)
Stallman is widely known as the author of EMACS, a powerful text editor
that he developed at the MIT Artificial Intelligence Laboratory. It is no
coincidence that the first piece of software produced as part of the GNU
project was a new implementation of EMACS. GNU EMACS has already achieved a
reputation as one of the best implementations of EMACS currently available
at any price.
BYTE: We read your GNU Manifesto in the March 1985 issue of Dr. Dobb's.
What has happened since? Was that really the beginning, and how have you
progressed since then?
Stallman: The publication in Dr. Dobb's wasn't the beginning of the
project. I wrote the GNU Manifesto when I was getting ready to start the
project, as a proposal to ask computer manufacturers for funding. They
didn't want to get involved, and I decided that rather than spend my time
trying to pursue funds, I ought to spend it writing code. The manifesto was
published about a year and a half after I had written it, when I had barely
begun distributing the GNU EMACS. Since that time, in addition to making
GNU EMACS more complete and making it run on many more computers, I have
nearly finished the optimizing C compiler and all the other software that
is needed for running C programs. This includes a source-level debugger
that has many features that the other source-level debuggers on UNIX don't
have. For example, it has convenience variables within the debugger so you
can save values, and it also has a history of all the values that you have
printed out, making it tremendously easier to chase around list structures.
BYTE: You have finished an editor that is now widely distributed and you
are about to finish the compiler.
Stallman: I expect that it will be finished this October.
BYTE: What about the kernel?
Stallman: I'm currently planning to start with the kernel that was written
at MIT and was released to the public recently with the idea that I would
use it. This kernel is called TRIX; it's based on remote procedure call. I
still need to add compatibility for a lot of the features of UNIX which it
doesn't have currently. I haven't started to work on that yet. I'm
finishing the compiler before I go to work on the kernel. I am also going
to have to rewrite the file system. I intend to make it failsafe just by
having it write blocks in the proper order so that the disk structure is
always consistent. Then I want to add version numbers. I have a complicated
scheme to reconcile version numbers with the way people usually use UNIX.
You have to be able to specify filenames without version numbers, but you
also have to be able to specify them with explicit version numbers, and
these both need to work with ordinary UNIX programs that have not been
modified in any way to deal with the existence of this feature. I think I
have a scheme for doing this, and only trying it will show me whether it
really does the job.
BYTE: Do you have a brief description you can give us as to how GNU as a
system will be superior to other systems? We know that one of your goals is
to produce something that is compatible with UNIX. But at least in the area
of file systems you have already said that you are going to go beyond UNIX
and produce something that is better.
Stallman: The C compiler will produce better code and run faster. The
debugger is better. With each piece I may or may not find a way to improve
it. But there is no one answer to this question. To some extent I am
getting the benefit of reimplementation, which makes many systems much
better. To some extent it's because I have been in the field a long time
and worked on many other systems. I therefore have many ideas to bring to
bear. One way in which it will be better is that practically everything in
the system will work on files of any size, on lines of any size, with any
characters appearing in them. The UNIX system is very bad in that regard.
It's not anything new as a principle of software engineering that you
shouldn't have arbitrary limits. But it just was the standard practice in
writing UNIX to put those in all the time, possibly just because they were
writing it for a very small computer. The only limit in the GNU system is
when your program runs out of memory because it tried to work on too much
data and there is no place to keep it all.
BYTE: And that isn't likely to be hit if you've got virtual memory. You may
just take forever to come up with the solution.
Stallman: Actually these limits tend to hit in a time long before you take
forever to come up with the solution.
BYTE: Can you say something about what types of machines and environments
GNU EMACS in particular has been made to run under? It's now running on
VAXes; has it migrated in any form to personal computers?
Stallman: I'm not sure what you mean by personal computers. For example, is
a Sun a personal computer? GNU EMACS requires at least a megabyte of
available memory and preferably more. It is normally used on machines that
have virtual memory. Except for various technical problems in a few C
compilers, almost any machine with virtual memory and running a fairly
recent version of UNIX will run GNU EMACS, and most of them currently do.
BYTE: Has anyone tried to port it to Ataris or Macintoshes?
Stallman: The Atari 1040ST still doesn't have quite enough memory. The next
Atari machine, I expect, will run it. I also think that future Ataris will
have some forms of memory mapping. Of course, I am not designing the
software to run on the kinds of computers that are prevalent today. I knew
when I started this project it was going to take a few years. I therefore
decided that I didn't want to make a worse system by taking on the
additional challenge of making it run in the currently constrained
environment. So instead I decided I'm going to write it in the way that
seems the most natural and best. I am confident that in a couple of years
machines of sufficient size will be prevalent. In fact, increases in memory
size are happening so fast it surprises me how slow most of the people are
to put in virtual memory; I think it is totally essential.
BYTE: I think people don't really view it as being necessary for
single-user machines.
Stallman: They don't understand that single user doesn't mean single
program. Certainly for any UNIX-like system it's important to be able to
run lots of different processes at the same time even if there is only one
of you. You could run GNU EMACS on a nonvirtual-memory machine with enough
memory, but you couldn't run the rest of the GNU system very well or a UNIX
system very well.
BYTE: How much of LISP is present in GNU EMACS? It occurred to me that it
may be useful to use that as a tool for learning LISP.
Stallman: You can certainly do that. GNU EMACS contains a complete,
although not very powerful, LISP system. It's powerful enough for writing
editor commands. It's not comparable with, say, a Common LISP System,
something you could really use for system programming, but it has all the
things that LISP needs to have.
BYTE: Do you have any predictions about when you would be likely to
distribute a workable environment in which, if we put it on our machines or
workstations, we could actually get reasonable work done without using
anything other than code that you distribute?
Stallman: It's really hard to say. That could happen in a year, but of
course it could take longer. It could also conceivably take less, but
that's not too likely anymore. I think I'll have the compiler finished in a
month or two. The only other large piece of work I really have to do is in
the kernel. I first predicted GNU would take something like two years, but
it has now been two and a half years and I'm still not finished. Part of
the reason for the delay is that I spent a lot of time working on one
compiler that turned out to be a dead end. I had to rewrite it completely.
Another reason is that I spent so much time on GNU EMACS. I originally
thought I wouldn't have to do that at all.
BYTE: Tell us about your distribution scheme.
Stallman: I don't put software or manuals in the public domain, and the
reason is that I want to make sure that all the users get the freedom to
share. I don't want anyone making an improved version of a program I wrote
and distributing it as proprietary. I don't want that to ever be able to
happen. I want to encourage the free improvements to these programs, and
the best way to do that is to take away any temptation for a person to make
improvements nonfree. Yes, a few of them will refrain from making
improvements, but a lot of others will make the same improvements and
they'll make them free.
BYTE: And how do you go about guaranteeing that?
Stallman: I do this by copyrighting the programs and putting on a notice
giving people explicit permission to copy the programs and change them but
only on the condition that they distribute under the same terms that I
used, if at all. You don't have to distribute the changes you make to any
of my programs--you can just do it for yourself, and you don't have to give
it to anyone or tell anyone. But if you do give it to someone else, you
have to do it under the same terms that I use.
BYTE: Do you obtain any rights over the executable code derived from the C
compiler?
Stallman: The copyright law doesn't give me copyright on output from the
compiler, so it doesn't give me a way to say anything about that, and in
fact I don't try to. I don't sympathize with people developing proprietary
products with any compiler, but it doesn't seem especially useful to try to
stop them from developing them with this compiler, so I am not going to.
BYTE: Do your restrictions apply if people take pieces of your code to
produce other things as well?
Stallman: Yes, if they incorporate with changes any sizable piece. If it
were two lines of code, that's nothing; copyright doesn't apply to that.
Essentially, I have chosen these conditions so that first there is a
copyright, which is what all the software hoarders use to stop everybody
from doing anything, and then I add a notice giving up part of those
rights. So the conditions talk only about the things that copyright applies
to. I don't believe that the reason you should obey these conditions is
because of the law. The reason you should obey is because an upright person
when he distributes software encourages other people to share it further.
BYTE: In a sense you are enticing people into this mode of thinking by
providing all of these interesting tools that they can use but only if they
buy into your philosophy.
Stallman: Yes. You could also see it as using the legal system that
software hoarders have set up against them. I'm using it to protect the
public from them.
BYTE: Given that manufacturers haven't wanted to fund the project, who do
you think will use the GNU system when it is done?
Stallman: I have no idea, but it is not an important question. My purpose
is to make it possible for people to reject the chains that come with
proprietary software. I know that there are people who want to do that.
Now, there may be others who don't care, but they are not my concern. I
feel a bit sad for them and for the people that they influence. Right now a
person who perceives the unpleasantness of the terms of proprietary
software feels that he is stuck and has no alternative except not to use a
computer. Well, I am going to give him a comfortable alternative.
Other people may use the GNU system simply because it is technically
superior. For example, my C compiler is producing about as good a code as I
have seen from any C compiler. And GNU EMACS is generally regarded as being
far superior to the commercial competition. And GNU EMACS was not funded by
anyone either, but everyone is using it. I therefore think that many people
will use the rest of the GNU system because of its technical advantages.
But I would be doing a GNU system even if I didn't know how to make it
technically better because I want it to be socially better. The GNU project
is really a social project. It uses technical means to make a change in
society.
BYTE: Then it is fairly important to you that people adopt GNU. It is not
just an academic exercise to produce this software to give it away to
people. You hope it will change the way the software industry operates.
Stallman: Yes. Some people say no one will ever use it because it doesn't
have some attractive corporate logo on it, and other people say that they
think it is tremendously important and everyone's going to want to use it.
I have no way of knowing what is really going to happen. I don't know any
other way to try to change the ugliness of the field that I find myself in,
so this is what I have to do.
BYTE: Can you address the implications? You obviously feel that this is an
important political and social statement.
Stallman: It is a change. I'm trying to change the way people approach
knowledge and information in general. I think that to try to own knowledge,
to try to control whether people are allowed to use it, or to try to stop
other people from sharing it, is sabotage. It is an activity that benefits
the person that does it at the cost of impoverishing all of society. One
person gains one dollar by destroying two dollars' worth of wealth. I think
a person with a conscience wouldn't do that sort of thing except perhaps if
he would otherwise die. And of course the people who do this are fairly
rich; I can only conclude that they are unscrupulous. I would like to see
people get rewards for writing free software and for encouraging other
people to use it. I don't want to see people get rewards for writing
proprietary software because that is not really a contribution to society.
The principle of capitalism is the idea that people manage to make money by
producing things and thereby are encouraged to do what is useful,
automatically, so to speak. But that doesn't work when it comes to owning
knowledge. They are encouraged to do not really what's useful, and what
really is useful is not encouraged. I think it is important to say that
information is different from material objects like cars and loaves of
bread because people can copy it and share it on their own and, if nobody
attempts to stop them, they can change it and make it better for
themselves. That is a useful thing for people to do. This isn't true of
loaves of bread. If you have one loaf of bread and you want another, you
can't just put your loaf of bread into a bread copier. you can't make
another one except by going through all the steps that were used to make
the first one. It therefore is irrelevant whether people are permitted to
copy it--it's impossible.
Books were printed only on printing presses until recently. It was
possible to make a copy yourself by hand, but it wasn't practical because
it took so much more work than using a printing press. And it produced
something so much less attractive that, for all intents and purposes, you
could act as if it were impossible to make books except by mass producing
them. And therefore copyright didn't really take any freedom away from the
reading public. There wasn't anything that a book purchaser could do that
was forbidden by copyright.
But this isn't true for computer programs. It's also not true for tape
cassettes. It's partly false now for books, but it is still true that for
most books it is more expensive and certainly a lot more work to Xerox them
than to buy a copy, and the result is still less attractive. Right now we
are in a period where the situation that made copyright harmless and
acceptable is changing to a situation where copyright will become
destructive and intolerable. So the people who are slandered as "pirates"
are in fact the people who are trying to do something useful that they have
been forbidden to do. The copyright laws are entirely designed to help
people take complete control over the use of some information for their own
good. But they aren't designed to help people who want to make sure that
the information is accessible to the public and stop others from depriving
the public. I think that the law should recognize a class of works that are
owned by the public, which is different from public domain in the same
sense that a public park is different from something found in a garbage
can. It's not there for anybody to take away, it's there for everyone to
use but for no one to impede. Anybody in the public who finds himself being
deprived of the derivative work of something owned by the public should be
able to sue about it.
BYTE: But aren't pirates interested in getting copies of programs because
they want to use those programs, not because they want to use that
knowledge to produce something better?
Stallman: I don't see that that's the important distinction. More people
using a program means that the program contributes more to society. You
have a loaf of bread that could be eaten either once or a million times.
BYTE: Some users buy commercial software to obtain support. How does your
distribution scheme provide support?
Stallman: I suspect that those users are misled and are not thinking
clearly. It is certainly useful to have support, but when they start
thinking about how that has something to do with selling software or with
the software being proprietary, at that point they are confusing
themselves. There is no guarantee that proprietary software will receive
good support. Simply because sellers say that they provide support, that
doesn't mean it will be any good. And they may go out of business. In fact,
people think that GNU EMACS has better support than commercial EMACSes. One
of the reasons is that I'm probably a better hacker than the people who
wrote the other EMACSes, but the other reason is that everyone has sources
and there are so many people interested in figuring out how to do things
with it that you don't have to get your support from me. Even just the free
support that consists of my fixing bugs people report to me and
incorporating that in the next release has given people a good level of
support. You can always hire somebody to solve a problem for you, and when
the software is free you have a competitive market for the support. You can
hire anybody. I distribute a service list with EMACS, a list of people's
names and phone numbers and what they charge to provide support.
BYTE: Do you collect their bug fixes?
Stallman: Well, they send them to me. I asked all the people who wanted to
be listed to promise that they would never ask any of their customers to
keep secret whatever they were told or any changes they were given to the
GNU software as part of that support.
BYTE: So you can't have people competing to provide support based on their
knowing the solution to some problem that somebody else doesn't know.
Stallman: No. They can compete based on their being clever and more likely
to find the solution to your problem, or their already understanding more
of the common problems, or knowing better how to explain to you what you
should do. These are all ways they can compete. They can try to do better,
but they cannot actively impede their competitors.
BYTE: I suppose it's like buying a car. You're not forced to go back to the
original manufacturer for support or continued maintenance.
Stallman: Or buying a house--what would it be like if the only person who
could ever fix problems with your house was the contractor who built it
originally? That is the kind of imposition that's involved in proprietary
software. People tell me about a problem that happens in UNIX. Because
manufacturers sell improved versions of UNIX, they tend to collect fixes
and not give them out except in binaries. The result is that the bugs don't
really get fixed.
BYTE: They're all duplicating effort trying to solve bugs independently.
Stallman: Yes. Here is another point that helps put the problem of
proprietary information in a social perspective. Think about the liability
insurance crisis. In order to get any compensation from society, an injured
person has to hire a lawyer and split the money with that lawyer. This is a
stupid and inefficient way of helping out people who are victims of
accidents. And consider all the time that people put into hustling to take
business away from their competition. Think of the pens that are packaged
in large cardboard packages that cost more than the pen--just to make sure
that the pen isn't stolen. Wouldn't it be better if we just put free pens
on every street corner? And think of all the toll booths that impede the
flow of traffic. It's a gigantic social phenomenon. People find ways of
getting money by impeding society. Once they can impede society, they can
be paid to leave people alone. The waste inherent in owning information
will become more and more important and will ultimately make the difference
between the utopia in which nobody really has to work for a living because
it's all done by robots and a world just like ours where everyone spends
much time replicating what the next fellow is doing.
BYTE: Like typing in copyright notices on the software.
Stallman: More like policing everyone to make sure that they don't have
forbidden copies of anything and duplicating all the work people have
already done because it is proprietary.
BYTE: A cynic might wonder how you earn your living.
Stallman: From consulting. When I do consulting, I always reserve the right
to give away what I wrote for the consulting job. Also, I could be making
my living by mailing copies of the free software that I wrote and some that
other people wrote. Lots of people send in $150 for GNU EMACS, but now this
money goes to the Free Software Foundation that I started. The foundation
doesn't pay me a salary because it would be a conflict of interest.
Instead, it hires other people to work on GNU. As long as I can go on
making a living by consulting I think that's the best way.
BYTE: What is currently included in the official GNU distribution tape?
Stallman: Right now the tape contains GNU EMACS (one version fits all
computers); Bison, a program that replaces YACC; MIT Scheme, which is
Professor Sussman's super-simplified dialect of LISP; and Hack, a
dungeon-exploring game similar to Rogue.
BYTE: Does the printed manual come with the tape as well?
Stallman: No. Printed manuals cost $15 each or copy them yourself. Copy
this interview and share it, too.
BYTE: How can you get a copy of that?
Stallman: Write to the Free Software Foundation, 675 Massachusetts Ave.,
Cambridge, MA 02139.
[In June 1995, this address changed to:
Free Software Foundation
59 Temple Place - Suite 330
Boston, MA 02111-1307, USA
Voice: +1-617-542-5942
Fax: +1-617-542-2652
-gnu@prep.ai.mit.edu
]
BYTE: What are you going to do when you are done with the GNU system?
Stallman: I'm not sure. Sometimes I think that what I'll go on to do is the
same thing in other areas of software.
BYTE: So this is just the first of a whole series of assaults on the
software industry?
Stallman: I hope so. But perhaps what I'll do is just live a life of ease
working a little bit of the time just to live. I don't have to live
expensively. The rest of the time I can find interesting people to hang
around with or learn to do things that I don't know how to do.
Editorial Note: BYTE holds the right to provide this interview on BIX but
will not interfere with its distribution.
Richard Stallman, 545 Technology Square, Room 703, Cambridge, MA 02139.
Copyright (C) 1986 Richard Stallman. Permission is granted to make and
distribute copies of this article as long as the copyright and this notice
appear on all copies.

642
etc/JOKES
View file

@ -1,642 +0,0 @@
From: Don Chiasson <G.CHIASSON@DREA-XX.ARPA>
Subject: Some gnu jokes
To: jokes@DREA-XX.ARPA, gergely@DREA-XX.ARPA, broome@DREA-XX.ARPA
cc: G.CHIASSON@DREA-XX.ARPA
Message-ID: <12329394624.13.G.CHIASSON@DREA-XX.ARPA>
Richard M. Stallman (RMS, widely known for creating EMACS) is writing
a UNIX clone called GNU (which means Gnu's Not Unix--a recursive acronym).
This seems to open the way to a whole gnu class of jokes. For example:
Q: What do you call a person who hacks while wearing no clothes?
A: A gnudist.
Q: What do you call an eligible young hacker?
A: Gnubile.
Q: What is a hacker's favorite candy?
A: Gnugat. (Though it contains little gnutrition.)
Q: What do you call a computer filled with air?
A: Gnumatic.
Q: What do you call a novice hacker who keeps pestering you
with foolish questions?
A: A gnuisance.
Q: What do you call a subtle, clever hack in the favorite language?
A: A gnuanCe.
Q: What do you use a supercomputer for?
A: Gnumerical analysis.
Q: What do you call a hacker who collects coins?
A: A gnumismatist.
Well, there are more, just too gnumerous to tell all at once. I think
I'd better go before someone starts firing gnuclear weapons at me.
Don
From: patl@athena.mit.edu (Patrick J. LoPresti)
Message-ID: <1991Jul11.031731.9260@athena.mit.edu>
Sender: news@athena.mit.edu (News system)
Subject: The True Path (long)
Date: 11 Jul 91 03:17:31 GMT
Path: ai-lab!mintaka!olivea!samsung!zaphod.mps.ohio-state.edu!think.com!snorkelwacker.mit.edu!bloom-picayune.mit.edu!athena.mit.edu!patl
Newsgroups: alt.religion.emacs,alt.slack
Organization: Massachusetts Institute of Technology
Lines: 95
Xref: ai-lab alt.religion.emacs:244 alt.slack:1935
When I log into my Xenix system with my 110 baud teletype, both vi
*and* Emacs are just too damn slow. They print useless messages like,
'C-h for help' and '"foo" File is read only'. So I use the editor
that doesn't waste my VALUABLE time.
Ed, man! !man ed
ED(1) UNIX Programmer's Manual ED(1)
NAME
ed - text editor
SYNOPSIS
ed [ - ] [ -x ] [ name ]
DESCRIPTION
Ed is the standard text editor.
---
Computer Scientists love ed, not just because it comes first
alphabetically, but because it's the standard. Everyone else loves ed
because it's ED!
"Ed is the standard text editor."
And ed doesn't waste space on my Timex Sinclair. Just look:
-rwxr-xr-x 1 root 24 Oct 29 1929 /bin/ed
-rwxr-xr-t 4 root 1310720 Jan 1 1970 /usr/ucb/vi
-rwxr-xr-x 1 root 5.89824e37 Oct 22 1990 /usr/bin/emacs
Of course, on the system *I* administrate, vi is symlinked to ed.
Emacs has been replaced by a shell script which 1) Generates a syslog
message at level LOG_EMERG; 2) reduces the user's disk quota by 100K;
and 3) RUNS ED!!!!!!
"Ed is the standard text editor."
Let's look at a typical novice's session with the mighty ed:
golem> ed
?
help
?
?
?
quit
?
exit
?
bye
?
hello?
?
eat flaming death
?
^C
?
^C
?
^D
?
---
Note the consistent user interface and error reportage. Ed is
generous enough to flag errors, yet prudent enough not to overwhelm
the novice with verbosity.
"Ed is the standard text editor."
Ed, the greatest WYGIWYG editor of all.
ED IS THE TRUE PATH TO NIRVANA! ED HAS BEEN THE CHOICE OF EDUCATED
AND IGNORANT ALIKE FOR CENTURIES! ED WILL NOT CORRUPT YOUR PRECIOUS
BODILY FLUIDS!! ED IS THE STANDARD TEXT EDITOR! ED MAKES THE SUN
SHINE AND THE BIRDS SING AND THE GRASS GREEN!!
When I use an editor, I don't want eight extra KILOBYTES of worthless
help screens and cursor positioning code! I just want an EDitor!!
Not a "viitor". Not a "emacsitor". Those aren't even WORDS!!!! ED!
ED! ED IS THE STANDARD!!!
TEXT EDITOR.
When IBM, in its ever-present omnipotence, needed to base their
"edlin" on a UNIX standard, did they mimic vi? No. Emacs? Surely
you jest. They chose the most karmic editor of all. The standard.
Ed is for those who can *remember* what they are working on. If you
are an idiot, you should use Emacs. If you are an Emacs, you should
not be vi. If you use ED, you are on THE PATH TO REDEMPTION. THE
SO-CALLED "VISUAL" EDITORS HAVE BEEN PLACED HERE BY ED TO TEMPT THE
FAITHLESS. DO NOT GIVE IN!!! THE MIGHTY ED HAS SPOKEN!!!
?
From: The Unknown User <anonymous@nowhere.uucp>
Subject: EMACS -- What does it mean?
To: mit-prep!info-gnu-emacs@TOPAZ.RUTGERS.EDU
EMACS belongs in <sys/errno.h>: Editor too big!
Escape-Meta-Alt-Control-Shift
From: harvard!topaz!BLUE!BRAIL@mit-eddie
Date: 9 Sep 85 17:25:27 EDT
Subject: EMACS -- What does it mean?
To: mit-prep!info-gnu-emacs@TOPAZ.RUTGERS.EDU
EMACS may stand for "Editing MACroS," but some friends of mine
suggested some more creative definitions. Here they are. Anyone have
any additions?
--------
Eight
Megabytes
And
Constantly
Swapping
Even a
Master of
Arts
Comes
Simpler
Emacs
Manuals
Are
Cryptic and
Surreal
Energetic
Merchants
Always
Cultivate
Sales
Each
Manual's
Audience is
Completely
Stupified
Emacs
Means
A
Crappy
Screen
Eventually
Munches
All
Computer
Storage
Even
My
Aunt
Crashes the
System
Eradication of
Memory
Accomplished with
Complete
Simplicity
Elsewhere
Maybe
Alternative
Civilizations
Survive
Egregious
Managers
Actively
Court
Stallman
Esoteric
Malleability
Always
Considered
Silly
Emacs
Manuals
Always
Cause
Senility
Easily
Maintained with the
Assistance of
Chemical
Solutions
EMACS
MACRO
ACTED
CREDO
SODOM
Edwardian
Manifestation of
All
Colonial
Sins
Generally
Not
Used
Except by
Middle
Aged
Computer
Scientists
Extended
Macros
Are
Considered
Superfluous
Every
Mode
Accelerates
Creation of
Software
Elsewhere
Maybe
All
Commands are
Simple
Emacs
May
Allow
Customized
Screwups
Excellent
Manuals
Are
Clearly
Suppressed
Emetic
Macros
Assault
Core and
Segmentation
Embarrassed
Manual-Writer
Accused of
Communist
Subversion
Extensibility and
Modifiability
Aggravate
Confirmed
Simpletons
Emacs
May
Annihilate
Command
Structures
Easily
Mangles,
Aborts,
Crashes and
Stupifies
Extraneous
Macros
And
Commands
Stink
Exceptionally
Mediocre
Algorithm for
Computer
Scientists
EMACS
Makes no
Allowances
Considering its
Stiff price
Equine
Mammals
Are
Considerably
Smaller
Embarrassingly
Mundane
Advertising
Cuts
Sales
Every
Moron
Assumes
CCA is
Superior
Exceptionally
Mediocre
Autocratic
Control
System
EMACS
May
Alienate
Clients and
Supporters
Excavating
Mayan
Architecture
Comes
Simpler
Erasing
Minds
Allows
Complete
Submission
Every
Male
Adolescent
Craves
Sex
Elephantine
Memory
Absolutely
Considered
Sine que non
Emacs
Makers
Are
Crazy
Sickos
Eenie-Meenie-Miney-Mo-
Macros
Are
Completely
Slow
Experience the
Mildest
Ad
Campaign ever
Seen
Emacs
Makefiles
Annihilate
C-
Shells
Eradication of
Memory
Accomplished with
Complete
Simplicity
Emetic
Macros
Assault
Core and
Segmentation
Epileptic
MLisp
Aggravates
Compiler
Seizures
Eleven thousand
Monkeys
Asynchronously
Crank out these
Slogans
-------
From: ihnss!warren@mit-eddie (Warren Montgomery)
Newsgroups: net.emacs
Subject: Re: EMACS -- What does it mean?
Date: Tue, 10-Sep-85 09:14:24 EDT
Organization: AT&T Bell Labs, Naperville, IL
Apparently-To: emacs-netnews-distribution@mit-prep
Someone at a luncheon suggested it meant:
Evenings,
Mornings,
And a
Couple of
Saturdays
(In reference to the odd hours that went into the creation of my
implementation).
--
Warren Montgomery
ihnss!warren
IH ((312)-979) x2494
Date: Wed, 18 Sep 85 10:11:04 edt
From: inmet!tower@inmet.inmet (Leonard H. Tower Jr.) <inmet!tower@cca-unix>
Subject: Re: EMACS -- What does it mean?
To: tower@MIT-PREP.ARPA
Received: by inmet.uucp (4.12/inmet) id AA02199; Wed, 18 Sep 85 09:10:17 edt
Date: Wed, 18 Sep 85 09:10:17 edt
Message-Id: <8509181310.AA02199@inmet.uucp>
Uucp-Paths: {bellcore,ima,ihnp4}!inmet!tower
Arpa-Path: ima!inmet!tower@CCA-UNIX.ARPA
Organization: Intermetrics, Inc., Cambridge, MA, USA
Home: 36 Porter Street, Somerville, MA 02143, USA +1 (617) 623-7739
/* Written 6:48 pm Sep 14, 1985 by gml@ssc-vax in inmet:net.emacs */
/* ---------- "Re: EMACS -- What does it mean?" ---------- */
Pleeeeeeeze!!! Nice try on the meaning of EMACS. I believe the
correct acronym is:
Emacs
Makes
All
Computing
Simple
Thank you, and Good Night
/* End of text from inmet:net.emacs */
From: ho95e!wcs@mit-eddie (Bill.Stewart.4K435.x0705)
Newsgroups: net.emacs
Subject: Re: EMACS -- What does it mean?
Date: Thu, 26-Sep-85 21:43:54 EDT
Organization: AT&T Bell Labs, Holmdel NJ
Apparently-To: emacs-netnews-distribution@mit-prep
> > very interesting, but what does GNU stand for ?
> GNU = Gnu's Not UNIX. There is also MINCE, for Mince Is Not a Complete Emacs.
> More recursive acronyms, anyone?
Many people have also seen FINE Is Not Emacs, but the one that has
character is THief Isn't Even Fine.
--
## Bill Stewart, AT&T Bell Labs, Holmdel NJ 1-201-949-0705 ihnp4!ho95c!wcs
Path: mit-eddie!think!harvard!bbnccv!bbncca!linus!decvax!mcnc!ncsu!uvacs!edison!ta2
From: edison!ta2@mit-eddie (tom allebrandi)
Newsgroups: net.emacs
Subject: Re: Re: EMACS -- What does it mean?
Date: Sun, 29-Sep-85 18:11:55 EDT
Organization: General Electric's Mountain Resort
Apparently-To: emacs-netnews-distribution@mit-prep
> GNU = Gnu's Not UNIX. There is also MINCE, for Mince Is Not a Complete Emacs.
>
> More recursive acronyms, anyone?
>
For the DEC-system-10/20: FINE - Fine Is Not Emacs.....
--
...............
tom allebrandi 2, general electric aco, charlottesville, va
{decvax,duke}!mcnc!ncsu!uvacs!edison!ta2
box 8106, charlottesville, va, 22906
(804) 978-5566
...............
Date: Wed, 16 Oct 85 01:38:12 edt
From: inmet!tower (Leonard H. Tower Jr.) <inmet!tower@cca-unix>
Subject: more names
To: tower@MIT-PREP.ARPA
Received: by inmet.uucp (4.12/inmet) id AA12997; Tue, 15 Oct 85 22:31:39 edt
Date: Tue, 15 Oct 85 22:31:39 edt
Message-Id: <8510160231.AA12997@inmet.uucp>
Uucp-Paths: {bellcore,ima,ihnp4}!inmet!tower
Arpa-Path: ima!inmet!tower@CCA-UNIX.ARPA
Organization: Intermetrics, Inc., Cambridge, MA, USA
Home: 36 Porter Street, Somerville, MA 02143, USA +1 (617) 623-7739
/* Written 12:20 pm Oct 14, 1985 by rs@mirror.UUCP in inmet:net.emacs */
SINE: Sine Is Not Emacs
(MIT Architecture Machine Group)
EINE: Eine is Not Emacs
(MIT Lisp Machine)
ZWEI: Zwei Was Eine Initially
("rev2" of EINE)
--
Rich $alz {mit-eddie, ihnp4!inmet, wjh12, cca, datacube} !mirror!rs
Mirror Systems 2067 Massachusetts Ave.
617-661-0777 Cambridge, MA, 02140
/* End of text from inmet:net.emacs */
Path: mit-eddie!genrad!panda!talcott!harvard!seismo!gatech!ulysses!pajb
From: ulysses!pajb@mit-eddie (Paul Bennett)
Newsgroups: net.emacs
Subject: Here we go again ...
Date: Sat, 19-Oct-85 17:26:49 EDT
Organization: AT&T Bell Laboratories, Murray Hill
Apparently-To: emacs-netnews-distribution@mit-prep
> EINE: Eine is Not Emacs
> (MIT Lisp Machine)
>
> ZWEI: Zwei Was Eine Initially
> ("rev2" of EINE)
DREI: DREI - Really Emacs Inside
(Exists only in my head)
From: friedman@gnu.ai.mit.edu (Noah Friedman)
Sender: friedman@gnu.ai.mit.edu
To: jimb@gnu.ai.mit.edu, rms@gnu.ai.mit.edu
Subject: etc/emacs.names
Date: Fri, 9 Oct 92 00:54:57 edt
The following should be added:
Emacs
Makes
A
Computer
Slow
From: S_TITZ@iravcl.ira.uka.de (Olaf Titz)
Newsgroups: alt.religion.emacs
Subject: Re: what emacs stands for
Date: 12 Oct 92 19:29:32 GMT
Emacs Masquerades As Comfortable Shell
Ever Made A Control-key Setup?
Emacs: My Alternative Computer Story
Emacs Made Almost Completely Screwed
(by extensive use of M-x global-unset-key)
Emacs Macht Alle Computer Schoen
(deutsch) (=Emacs makes all computers beautiful)
Each Mail A Continued Surprise
Every Mode Acknowledges Customized Strokes
(keystrokes, of course :-)
Eating Memory And Cycle-Sucking
Everyday Material Almost Compiled Successfully
now enough bashing for today :-)
From: elvis@gnu.ai.mit.edu
To: emacs-19-bugs@gnu.ai.mit.edu
Subject: missing from etc/emacs.names
Date: Thu, 20 May 93 02:21:27 edt
Elvis
Masterminds
All
Computer
Software
Just so you boys know the score.
Thank you very Much,
The King

View file

@ -1,77 +0,0 @@
Date: 17 Apr 85 15:45:42 EST (Wed)
From: Martin David Connor <mdc@MIT-HTVAX.ARPA>
Date: Sat, 13 Apr 85 16:28:15 est
From: Richard M. Stallman <rms@mit-prep>
Can you help this person? Also, can you give me the rest of ledit
to distribute, plus some info on how to use it?
I have put the files "ledit.l" and "leditcfns.c" on prep:~mdc.
Much to my disgust ledit.l relied on some bogus little package of
functions on HT, so I had to massage it a bit.
To get it to work, one must:
- Compile leditcfns.c with something like:
cc leditcfns.c
- Edit ledit.l, changing the line beginning "(cfasl" to
have the right pathname for the cfns file you compiled in
the last step.
- Compile ledit.l with:
liszt ledit.l
Then put the following lines in your .lisprc file:
;load in functions for emacs interface
(load "//src//mdc//ledit//ledit") ; Location of Ledit library
(set-proc-str "%gnumacs") ; Name of editor
Then you can use ^E <RETURN> to get from LISP back to gnumacs.
Here is the part of my .emacs file that pertains to ledit.
;;; Set up ledit mode
(setq ledit-go-to-lisp-string "%lisp")
(setq lisp-mode-hook 'ledit-from-lisp-mode)
Date: Sat, 13 Apr 85 11:26:32 cst
From: neves@wisc-ai.arpa (David Neves)
This is a documentation question.
I cannot figure out how to use Ledit. I suspect I need some
function on the Franz Lisp end of things to go to Emacs and read in
the temporary file. Is this true? Is the Lisp job started within
Emacs or outside of emacs? I'm just plain confused. Perhaps a couple
of words from someone in the know would help.
A related question. I have been using a shell buffer when interacting
with Lisp (ie. put a definition in the kill buffer and then yank it
into the shell buffer to redefine it). This is nice but tends to fill
up the shell buffer with lots of code (I'd rather keep calls to functions
in the shell and not the functions themselves).
My question: Is using the shell buffer "better" than ledit? Am I using
it in the best way (i.e. copying definitions from an edit buffer to the
shell buffer)? -Thanks, David Neves
I have found that ledit works well for doing programming development
when you are changing lots of little pieces of a file and don't wish
to recompile the whole file. Of course M-X Compile is very nice for
calling up a liszt on a buffer and watching it in the another window.
Of course the interface of something like NIL is even better because
you can compile your function directly into your lisp. But since NIL
doesn't run under Unix, this is probably the next best thing.
I have tried the 2 window method (shell in lower window, lisp code in
upper), and have found it a little awkward. It does have certain
advantages, but most of the time, I get be fine using M-C-D to save a
defun for lisp, and C-X Z to jump back to LISP. C-E RETURN from lisp
is also mnemonic for getting back to gnumacs.
I hope this helps somewhat.

View file

@ -1,147 +0,0 @@
Linux and the GNU system
The GNU project started in 1984 with the goal of developing a complete
free Unix-like operating system: GNU. "Free" refers to freedom, not
price; it means you are free to run, copy, distribute, study, change,
and improve the software.
A Unix-like system consists of many different programs. We found some
components already available as free software--for example, X Windows
and TeX. We obtained other components by helping to convince their
developers to make them free--for example, the Berkeley network
utilities. This left many missing components that we had to write in
order to produce GNU--for example, GNU Emacs, the GNU C compiler, the
GNU C library, Bash, and Ghostscript. The GNU system consists of all
these components together.
The GNU project is not just about developing and distributing some
useful free software. The heart of the GNU project is an idea: that
software should be free, that software users should have freedom to
participate in a community. To run your computer, you need an
operating system; if it is not free, your freedom has been denied. To
have freedom, you need a free operating system. We therefore set out
to write one.
In the long run, though, we cannot expect to keep the free operating
system free unless the users are aware of the freedom it gives them,
and value that freedom. People who do not appreciate their freedom
will not keep it long. If we want to make freedom last, we need to
spread awareness of the freedoms they have in free software.
The GNU project's method is that free software and the idea of users'
freedom support each other. We develop GNU software, and as people
encounter GNU programs or the GNU system and start to use them, they
also think about the GNU idea. The software shows that the idea can
work in practice. Some of these people come to agree with the idea,
and then they are more likely to write additional free software.
Thus, the software embodies the idea, spreads the idea, and grows from
the idea.
Early on in the development of GNU, various parts of it became popular
even though users needed proprietary systems to run them on. Porting
the system to many systems and maintaining them required a lot of
work. After that work, most GNU software is easily configured for a
variety of different platforms.
By 1991, we had found or written all of the essential major components
of the system except the kernel, which we were writing. (This kernel
consists of the Mach microkernel plus the GNU HURD. The first test
release was made in 1996. Now, in 2002, it is running well, and
Hurd-based GNU systems are starting to be used.)
That was the situation when Linux came into being. Linux is a kernel,
like the kernel of Unix; it was written by Linus Torvalds, who
released it under the GNU General Public License. He did not write
this kernel for GNU, but it fit into the gap in GNU. The combination
of GNU and Linux included all the major essential components of a
Unix-compatible operating system. Other people, with some work made
the combination into a usable system. The principal use of Linux, the
kernel, is as part of this combination.
The popularity of the GNU/Linux combination is success, in the sense
of popularity, for GNU. Ironically, the popularity of GNU/Linux
undermines our method of communicating the ideas of GNU to people who
use GNU.
When GNU programs were only usable individually on top of another
operating system, installing and using them meant knowing and
appreciating these programs, and thus being aware of GNU, which led
people to think about the philosophical base of GNU. Now users can
install a unified operating system which is basically GNU, but they
usually think these are "Linux systems". At first impression, a
"Linux system" sounds like something completely distinct from the "GNU
system," and that is what most users think.
This leads many users to identify themselves as a separate community
of "Linux users", distinct from the GNU user community. They use more
than just some GNU programs, they use almost all of the GNU system,
but they don't think of themselves as GNU users. Often they never
hear about the GNU idea; if they do, they may not think it relates to
them.
Most introductions to the "Linux system" acknowledge that GNU software
components play a role in it, but they don't say that the system as a
whole is a modified version of the GNU system that the GNU project has
been developing and compiling since Linus Torvalds was in junior high
school. They don't say that the main reason this free operating
exists is that the GNU Project worked persistently to achieve its goal
of freedom.
As a result, most users don't know these things. They believe that
the "Linux system" was developed by Linus Torvalds "just for fun", and
that their freedom is a matter of good fortune rather than the
dedicated pursuit of freedom. This creates a danger that they will
leave the survival of free software to fortune as well.
Since human beings tend to correct their first impressions less than
called for by additional information they learn later, these users
will tend to continue to underestimate their connection to GNU even if
they do learn the facts.
When we began trying to support the GNU/Linux system, we found this
widespread misinformation led to a practical problem--it hampered
cooperation on software maintenance. Normally when users change a GNU
program to make it work better on a particular system, they send the
change to the maintainer of that program; then they work with the
maintainer, explaining the change, arguing for it, and sometimes
rewriting it for the sake of the overall coherence and maintainability
of the package, to get the patch installed. But people who thought of
themselves as "Linux users" showed a tendency to release a forked
"Linux-only" version of the GNU program and consider the job done. In
some cases we had to redo their work in order to make GNU programs run
as released in GNU/Linux systems.
How should the GNU project encourage its users to cooperate? How
should we spread the idea that freedom for computer users is
important?
We must continue to talk about the freedom to share and change
software--and to teach other users to value these freedoms. If we
value having a free operating system, it makes sense to think about
preserving those freedoms for the long term. If we value having a
variety of free software, it makes sense to think about encouraging
others to write free software, instead of proprietary software.
However, it is not enough just to talk about freedom; we must also
make sure people know the reasons it is worth listening to what we
say.
Long explanations such as our philosophical articles are one way of
informing the public, but you may not want to spend so much time on
the matter. The most effective way you can help with a small amount
of work is simply by using the terms "Linux-based GNU system" or
"GNU/Linux system", instead of "Linux system," when you write about or
mention such a system. Seeing these terms will show many people the
reason to pay attention to our philosophical articles.
The system as a whole is more GNU than Linux; the name "GNU/Linux" is
fair. When you are choosing the name of a distribution or a user
group, a name with "GNU/Linux" will reflect both roots of the combined
system, and will bring users into connection with both--including the
spirit of freedom and community that is the basis and purpose of GNU.
Copyright 1996, 2002 Richard Stallman
Verbatim copying and redistribution is permitted
without royalty as long as this notice is preserved.

43
etc/LPF
View file

@ -1,43 +0,0 @@
Protect Your Freedom to Write Programs
Join the League for Programming Freedom
(Version of February 3, 1994)
Ten years ago, programmers were allowed to write programs using all
the techniques they knew, and providing whatever features they felt
were useful. This is no longer the case. New monopolies, known as
software patents and interface copyrights, have taken away our freedom
of expression and our ability to do a good job.
"Look and feel" lawsuits attempt to monopolize well-known command
languages; some have succeeded. Copyrights on command languages
enforce gratuitous incompatibility, close opportunities for
competition, and stifle incremental improvements.
Software patents are even more dangerous; they make every design
decision in the development of a program carry a risk of a lawsuit,
with draconian pretrial seizure. It is difficult and expensive to
find out whether the techniques you consider using are patented; it is
impossible to find out whether they will be patented in the future.
The League for Programming Freedom is a grass-roots organization of
professors, students, businessmen, programmers and users dedicated to
bringing back the freedom to write programs. The League is not
opposed to the legal system that Congress expressly established for
software--copyright on individual programs. Our aim is to reverse the
recent changes that prevent programmers from doing their work.
The League works to abolish the new monopolies by publishing articles,
talking with public officials, denouncing egregious offenders, and
filing amicus curiae briefs, most notably against Lotus in its suit
against Borland. We testified twice at the recent Patent Office
hearings on software patents. We welcome suggestions for other
activities, as well as help in carrying them out.
(Added 2003) The League for Programming Freedom is inactive nowadays,
though its web site www.programming-freedom.org is still maintained.
It would be very useful to find a person who could take the initiative
to get the LPF operating again. It will be a substantial job,
requiring persistence and working with a lawyer. If you want to do
it, please write to rms@gnu.org.

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,226 +0,0 @@
More Neat Stuff for your Emacs
This file describes GNU Emacs programs and resources that are
maintained by other people. Some of these may become part of the
Emacs distribution in the future. Others we unfortunately can't
distribute, even though they are free software, because we lack legal
papers for copyright purposes. Also included are sites where
development versions of some packages distributed with Emacs may be
found.
You might also look at the Emacs web page
<URL:http://www.gnu.org/software/emacs/emacs.html>. If you use the
Windows-32 version of Emacs, see the NTEmacs sites listed in the FAQ.
Please submit a bug report if you find that any of the addresses
listed here fail.
* The `Emacs Lisp List' at
<URL:http://www.anc.ed.ac.uk/%7Estephen/emacs/ell.html> has pointers
to sources of a large number of packages.
* gnu.emacs.sources
Packages posted to the gnu.emacs.sources newsgroup (see
etc/MAILINGLISTS) might be archived specifically (try a web search
engine) or retrievable from general Usenet archive services.
* Maintenance versions of some packages distributed with Emacs
You might find bug-fixes or enhancements in these places.
* Ada: <URL:http://libre.act-europe.fr/adamode>
* Autorevert, CWarn and Follow:
<URL:http://www.andersl.com/emacs/>
* Battery and Info Look: <URL:ftp://ftp.ul.bawue.de/pub/purple/emacs>
* BibTeX:
<URL:http://www.ida.ing.tu-bs.de/people/dirk/bibtex/index.html>
* BS: <URL:http://home.netsurf.de/olaf.sylvester/emacs>
* Calculator: <URL:http://www.cs.cornell.edu/eli/misc/calculator.el>
* CC mode: <URL:http://cc-mode.sourceforge.net/>
* CPerl: <URL:ftp://ftp.math.ohio-state.edu/pub/users/ilya>
* Ediff and Viper: <URL:ftp://ftp.cs.sunysb.edu/pub/TechReports/kifer/>
* Eldoc and Rlogin:
<URL:ftp://ftp.splode.com/pub/users/friedman/packages/>
* EShell: <URL:http://www.gci-net.com/users/j/johnw/emacs.html>
* Etags: <URL:ftp://pot.potorti.it/pub/software/unix/etags.tar.gz>
* EUDC: <URL:http://lspwww.epfl.ch/%7Efigueire/Software/eudc/>
* Expand: <URL:http://w3.teaser.fr/%7Eflepied/expand.el.gz>
* Find Func:
<URL:http://www.kurims.kyoto-u.ac.jp/%7Epetersen/emacs/find-func.el>
* Flyspell: <URL:http://kaolin.unice.fr/%7Eserrano/emacs/flyspell>
* Fortune: <URL:http://www.coling.uni-freiburg.de/%7Eschauer/emacs.html>
* Gnus: <URL:http://www.gnus.org/>
* Ffap: <URL:http://www.mathcs.emory.edu/%7Emic/ftp/emacs/>
(And some addons for it.)
* Hideshow: <URL:http://www.glug.org/people/ttn/software/hideshow/>
* Ispell: <URL:http://www.kdstevens.com/%7Estevens/ispell-page.html>
* Iswitchb: <URL:http://www.anc.ed.ac.uk/%7Estephen/emacs/iswitchb.el>
* PC Selection: <URL:ftp://ftp.thp.uni-duisburg.de/pub/source/elisp/>
* PS mode: <URL:http://odur.let.rug.nl/%7Ekleiweg/postscript/>
* PS-print: <URL:ftp://ftp.cpqd.com.br/pub/users/vinicius/>
* QuickURL: <URL:http://www.acemake.com/hagbard/archives/quickurl.el>
* RefTeX: <URL:http://www.strw.leidenuniv.nl/%7Edominik/Tools/>
* Speedbar, Checkdoc etc: <URL:ftp://www.ultranet.com/pub/zappo/>
* SQL: <URL:http://www.geocities.com/TimesSquare/6120/emacs.html>
* Sregex: <URL:http://www.zanshin.com/%7Ebobg/sregex.html>
* Webjump: <URL:http://www.neilvandyke.org/webjump>
* Whitespace: <URL:http://www.dsmit.com/lisp/>
* Auxiliary files
* (Tex)info files for use with Info-look that don't come from GNU
packages:
* Scheme: <URL:ftp://ftp-swiss.ai.mit.edu/pub/scm/r5rs.info.tar.gz>
* LaTeX: <URL:ftp://ctan.tug.org/tex-archive/info/latex2e-help-texinfo/
latex2e.texi> (or CTAN mirrors)
* Perl: <URL:ftp://ftp.cpan.org/pub/CPAN/doc/manual/texinfo/perl5/>
(or CPAN mirrors)
* Packages and add-ons not bundled with Emacs
Various major packages or useful additions aren't distributed as part of
Emacs for various reasons, sometimes because their authors haven't made
a copyright assignment to the FSF. Some of them may be integrated in
the future.
You might like to check whether they are packaged for your system.
Several are for Debian GNU/Linux in particular.
* AUCTeX: fancy (La)TeX support: <URL:http://sunsite.dk/auctex/>
There's an AUCTeX mail list/newsgroup:
<URL:news://sunsite.dk/emacs.auctex>.
* BBDB: personal Info Rolodex integrated with mail/news:
<URL:http://bbdb.sourceforge.net/>
[You might want to set the coding system of your .bbdb file to
emacs-mule, say by adding `("\\.bbdb\\'" . emacs-mule)' to
`file-coding-system-alist' for non-ASCII characters.]
* CJK-emacs: Converting MULE-encoded text to TeX:
<URL:ftp://ctan.tug.org/tex-archive/language/chinese/CJK/> and
mirrors of the `CTAN' TeX archives.
* Dismal: spreadsheet:
<URL:http://www.psychology.nottingham.ac.uk/staff/ritter/papers/dismal/
dismal.html>
* EDB: database:
<URL:http://sdg.lcs.mit.edu/%7Emernst/software/edb-mrp.tar.gz>
Not maintained?
* EIEIO (object system), ETalk (interface to Internet talk):
<URL:ftp://www.ultranet.com/pub/zappo/>
* EFS: enhanced version of ange-ftp:
<URL:http://www-uk.hpl.hp.com/people/ange/efs>
Version 1.16 is said not to work properly with Emacs 20.
* Elib library: <URL:http://www.gnu.org/software/elib/elib.html>
From GNU distribution mirrors. (Much of this functionality is now
in Emacs.)
* Emacspeak -- A Speech Output Subsystem For Emacs:
<URL:http://emacspeak.sourceforge.net/>
* Gnuserv:
<URL:ftp://ftp.splode.com/pub/users/friedman/packages/fgnuserv-1.0.tar.gz>
Enhanced emacsclient/emacsserver. See also
<URL:http://www.splode.com/users/friedman/software/emacs-lisp/> for
other Friedman Emacs hacks.
The latest versions of gnuserv are maintained by Martin Schwenke,
and are available from <URL:http://meltin.net/hacks/emacs/>. Also
available from this Web page: eiffel-mode.el.
* hm--html-menus:
<URL:ftp://ftp.tnt.uni-hannover.de/pub/editors/xemacs/contrib>
HTML-specific editing. Can work with PSGML.
* Hyperbole: `Hyperbole is an open, efficient, programmable
information management and hypertext system.'
From GNU distribution mirrors.
* ILISP: <URL:http://ilisp.cons.org/>
Provides an interactive environment for manipulating an inferior
process running some form of Lisp.
* JDE: <URL:http://sunsite.auc.dk/jde/>
Provides a Java-specific `Integrated Development Environment'.
* Mule-UCS: Universal enCoding System:
<URL:ftp://ftp.m17n.org/pub/mule/Mule-UCS/>
Extended coding systems for Mule, specifically for reading and
writing UTF-8 encoded Unicode. This does more than the built-in
utf-8 coding system.
* Mailcrypt:
<URL:http://www.pobox.com/%7Elbudney/linux/software/mailcrypt.html>
PGP and GPG support. PGP isn't free software, but GPG, the GNU
Privacy Guard, is a free replacement <URL:http://www.gnupg.org/>.
* Pointers to MIME packages:
<URL:http://bmrc.berkeley.edu/%7Etrey/emacs/mime.html>
* PSGML: <URL:http://www.lysator.liu.se/projects/about_psgml.html>
DTD-aware serious SGML/XML editing.
* Tamago: Chinese/Japanese/Korean input method
<URL:ftp://m17n.org/pub/tamago/>
Emacs Lisp package to provide input methods for CJK characters.
It can use these background conversion servers:
FreeWnn (jserver, cserver, tserver),
Wnn6,
SJ3 Ver.2
* Tramp: Remote file access via rsh/ssh
<URL:ftp://ls6.cs.uni-dortmund.de/pub/tramp.tar.gz>
* VM (View Mail): <URL:http://www.wonderworks.com/vm/> Alternative
mail reader. There is a VM newsgroup: <URL:news:gnu.emacs.vm.info>
* W3: <URL:http://www.cs.indiana.edu/elisp/w3/docs.html>
Web browser. There's a W3 mail list/newsgroup
<URL:news://sunsite.auc.dk/emacs.w3> and a W3 development mail
list/newsgroup <URL:news://sunsite.auc.dk/emacs.w3.dev>.
* X-Symbol: <URL:http://x-symbol.sf.net/>
Quasi-WYSIWYG editing of TeX & al. (It will be improved to take
better advantage of Emacs 21 features.)
Local Variables:
mode: text
mode: view
eval: (goto-address)
End:

View file

@ -1,176 +0,0 @@
STUDIES FIND REWARD OFTEN NO MOTIVATOR
Creativity and intrinsic interest diminish if task is done for gain
By Alfie Kohn
Special to the Boston Globe
[reprinted with permission of the author
from the Monday 19 January 1987 Boston Globe]
In the laboratory, rats get Rice Krispies. In the classroom the top
students get A's, and in the factory or office the best workers get
raises. It's an article of faith for most of us that rewards promote
better performance.
But a growing body of research suggests that this law is not nearly as
ironclad as was once thought. Psychologists have been finding that
rewards can lower performance levels, especially when the performance
involves creativity.
A related series of studies shows that intrinsic interest in a task -
the sense that something is worth doing for its own sake - typically
declines when someone is rewarded for doing it.
If a reward - money, awards, praise, or winning a contest - comes to
be seen as the reason one is engaging in an activity, that activity
will be viewed as less enjoyable in its own right.
With the exception of some behaviorists who doubt the very existence
of intrinsic motivation, these conclusions are now widely accepted
among psychologists. Taken together, they suggest we may unwittingly
be squelching interest and discouraging innovation among workers,
students and artists.
The recognition that rewards can have counter-productive effects is
based on a variety of studies, which have come up with such findings
as these: Young children who are rewarded for drawing are less likely
to draw on their own that are children who draw just for the fun of
it. Teenagers offered rewards for playing word games enjoy the games
less and do not do as well as those who play with no rewards.
Employees who are praised for meeting a manager's expectations suffer
a drop in motivation.
Much of the research on creativity and motivation has been performed
by Theresa Amabile, associate professor of psychology at Brandeis
University. In a paper published early last year on her most recent
study, she reported on experiments involving elementary school and
college students. Both groups were asked to make "silly" collages.
The young children were also asked to invent stories.
The least-creative projects, as rated by several teachers, were done
by those students who had contracted for rewards. "It may be that
commissioned work will, in general, be less creative than work that is
done out of pure interest," Amabile said.
In 1985, Amabile asked 72 creative writers at Brandeis and at Boston
University to write poetry. Some students then were given a list of
extrinsic (external) reasons for writing, such as impressing teachers,
making money and getting into graduate school, and were asked to think
about their own writing with respect to these reasons. Others were
given a list of intrinsic reasons: the enjoyment of playing with
words, satisfaction from self-expression, and so forth. A third group
was not given any list. All were then asked to do more writing.
The results were clear. Students given the extrinsic reasons not only
wrote less creatively than the others, as judged by 12 independent
poets, but the quality of their work dropped significantly. Rewards,
Amabile says, have this destructive effect primarily with creative
tasks, including higher-level problem-solving. "The more complex the
activity, the more it's hurt by extrinsic reward," she said.
But other research shows that artists are by no means the only ones
affected.
In one study, girls in the fifth and sixth grades tutored younger
children much less effectively if they were promised free movie
tickets for teaching well. The study, by James Gabarino, now
president of Chicago's Erikson Institute for Advanced Studies in Child
Development, showed that tutors working for the reward took longer to
communicate ideas, got frustrated more easily, and did a poorer job in
the end than those who were not rewarded.
Such findings call into question the widespread belief that money is
an effective and even necessary way to motivate people. They also
challenge the behaviorist assumption that any activity is more likely
to occur if it is rewarded. Amabile says her research "definitely
refutes the notion that creativity can be operantly conditioned."
But Kenneth McGraw, associate professor of psychology at the
University of Mississippi, cautions that this does not mean
behaviorism itself has been invalidated. "The basic principles of
reinforcement and rewards certainly work, but in a restricted context"
- restricted, that is, to tasks that are not especially interesting.
Researchers offer several explanations for their surprising findings
about rewards and performance.
First, rewards encourage people to focus narrowly on a task, to do it
as quickly as possible and to take few risks. "If they feel that
'this is something I have to get through to get the prize,' they're
going to be less creative," Amabile said.
Second, people come to see themselves as being controlled by the
reward. They feel less autonomous, and this may interfere with
performance. "To the extent one's experience of being
self-determined is limited," said Richard Ryan, associate psychology
professor at the University of Rochester, "one's creativity will be
reduced as well."
Finally, extrinsic rewards can erode intrinsic interest. People who
see themselves as working for money, approval or competitive success
find their tasks less pleasurable, and therefore do not do them as
well.
The last explanation reflects 15 years of work by Ryan's mentor at the
University of Rochester, Edward Deci. In 1971, Deci showed that
"money may work to buy off one's intrinsic motivation for an activity"
on a long-term basis. Ten years later, Deci and his colleagues
demonstrated that trying to best others has the same effect. Students
who competed to solve a puzzle quickly were less likely than those who
were not competing to keep working at it once the experiment was over.
Control plays role
There is general agreement, however, that not all rewards have the
same effect. Offering a flat fee for participating in an experiment -
similar to an hourly wage in the workplace - usually does not reduce
intrinsic motivation. It is only when the rewards are based on
performing a given task or doing a good job at it - analogous to
piece-rate payment and bonuses, respectively - that the problem
develops.
The key, then, lies in how a reward is experienced. If we come to
view ourselves as working to get something, we will no longer find
that activity worth doing in its own right.
There is an old joke that nicely illustrates the principle. An
elderly man, harassed by the taunts of neighborhood children, finally
devises a scheme. He offered to pay each child a dollar if they would
all return Tuesday and yell their insults again. They did so eagerly
and received the money, but he told them he could only pay 25 cents on
Wednesday. When they returned, insulted him again and collected their
quarters, he informed them that Thursday's rate would be just a penny.
"Forget it," they said - and never taunted him again.
Means to and end
In a 1982 study, Stanford psychologist Mark L. Lepper showed that any
task, no matter how enjoyable it once seemed, would be devalued if it
were presented as a means rather than an end. He told a group of
preschoolers they could not engage in one activity they liked until
they first took part in another. Although they had enjoyed both
activities equally, the children came to dislike the task that was a
prerequisite for the other.
It should not be surprising that when verbal feedback is experienced
as controlling, the effect on motivation can be similar to that of
payment. In a study of corporate employees, Ryan found that those who
were told, "Good, you're doing as you /should/" were "significantly
less intrinsically motivated than those who received feedback
informationally."
There's a difference, Ryan says, between saying, "I'm giving you this
reward because I recognize the value of your work" and "You're getting
this reward because you've lived up to my standards."
A different but related set of problems exists in the case of
creativity. Artists must make a living, of course, but Amabile
emphasizes that "the negative impact on creativity of working for
rewards can be minimized" by playing down the significance of these
rewards and trying not to use them in a controlling way. Creative
work, the research suggests, cannot be forced, but only allowed to
happen.
/Alfie Kohn, a Cambridge, MA writer, is the author of "No Contest: The
Case Against Competition," recently published by Houghton Mifflin Co.,
Boston, MA. ISBN 0-395-39387-6. /

View file

@ -1,32 +0,0 @@
DESTDIR=
LIBDIR=/usr/local/lib
BINDIR=/usr/local/bin
MANDIR=/usr/man/man1
MANEXT=1
all:
mostlyclean:
-rm -f core *.dvi *.log
clean distclean maintainer-clean:
-rm -f DOC* core *.dvi *.log
SOURCES = [0-9A-QS-Z]* README *.[ch16] emacs.* etags.* ledit.l ms-* \
spook-lines tasks.texi termcap.* ulimit.hack *.tex
unlock:
chmod u+w $(SOURCES)
relock:
chmod u-w $(SOURCES)
# ${etcdir}/e/eterm is used by ../lisp/term.el.
# TERMINFO systems use terminfo files compiled by the Terminfo Compiler (tic).
# These files are binary, and depend on the version of tic, but they seem
# to be system-independent and backwardly compatible.
# So there should be no need to recompile the distributed binary version.
TIC=tic
e/eterm: e/eterm.ti
TERMINFO=`pwd`; export TERMINFO; $(TIC) e/eterm.ti

11484
etc/NEWS

File diff suppressed because it is too large Load diff

6484
etc/ONEWS

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,9 +0,0 @@
Printed copies of the GNU Emacs Manual, the Emacs Lisp Reference
Manual, "Programming in Emacs Lisp: An Introduction", and other
materials can be ordered directly from the Free Software Foundation.
For more information, see the order form on the web at
<http://www.gnu.org/order/order.html>. Your purchases will help support
further development of Emacs and other free software programs. You
can also make tax-deductable donations to the Free Software Foundation,
a not-for-profit organization (assuming you pay US taxes) - see
<http://www.gnu.org/help/donate.html>.

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,13 +0,0 @@
This directory contains the architecture-independent files used by or
with Emacs. This includes some text files of documentation for GNU
Emacs or of interest to Emacs users, and the file of dumped docstrings
for Emacs functions and variables.
Some of the *.tex files need special versions of TeX to typeset them.
The files cs-*.tex and sk-*.tex need csTeX, a special version of TeX
tailored to typesetting Czech and Slovak documents. We provide
PostScript files for these documents, so that you could print them
without installing the modified TeX versions.
`termcap.src' is included mainly for VMS. It is a copy of the
`/etc/termcap' file used on Unix.

File diff suppressed because it is too large Load diff

229
etc/TERMS
View file

@ -1,229 +0,0 @@
This file describes what you must or might want to do to termcap entries
to make terminals work properly and efficiently with Emacs. Information
on likely problems with specific types of terminals appears at the end
of the file.
*** What you want in a terminal ***
Vital
1. Easy to compute suitable padding for.
2. Never ever sends ^S/^Q unless you type them, at least in one mode.
Nice for speed
1. Supports insert/delete of multiple lines in one command.
2. Same for multiple characters, though doing them one by
one is usually fast enough except on emulators running on
machines with bitmap screens.
Nice for usability
1. Considerably more than 24 lines.
2. Meta key (shift-like key that controls the 0200 bit
in every character you type).
*** New termcap strings ***
Emacs supports certain termcap strings that are not described in the
4.2 manual but appear to be standard in system V. The one exception
is `cS', which I invented.
`AL' insert several lines. Takes one parameter, the number of
lines to be inserted. You specify how to send this parameter
using a %-construct, just like the cursor positions in the `cm'
string.
`DL' delete several lines. One parameter.
`IC' insert several characters. One parameter.
`DC' delete several characters. One parameter.
`rp' repeat a character. Takes two parameters, the character
to be repeated and the number of times to repeat it.
Most likely you will use `%.' for sending the character
to be repeated. Emacs interprets a padding spec with a *
as giving the amount of padding per repetition.
WARNING: Many terminals have a command to repeat the
*last character output* N times. This means that the character
will appear N+1 times in a row when the command argument is N.
However, the `rp' string's parameter is the total number of
times wanted, not one less. Therefore, such repeat commands
may be used in an `rp' string only if you use Emacs's special
termcap operator `%a-c\001' to subtract 1 from the repeat count
before substituting it into the string. It is probably safe
to use this even though the Unix termcap does not accept it
because programs other than Emacs probably won't look for `rp'
anyway.
`cs' set scroll region. Takes two parameters, the vertical
positions of the first line to include in the scroll region
and the last line to include in the scroll region.
Both parameters are origin-zero. The effect of this
should be to cause a following insert-line or delete-line
not to move lines below the bottom of the scroll region.
This is not the same convention that Emacs version 16 used.
That is because I was led astray by unclear documentation
of the meaning of %i in termcap strings. Since the termcap
documentation for `cs' is also unclear, I had to deduce the
correct parameter conventions from what would make the VT-100's
`cs' string work properly. From an incorrect assumption about
%i, I reached an incorrect conclusion about `cs', but the result
worked correctly on the VT100 and ANSII terminals. In Emacs
version 17, both `cs' and %i work correctly.
The version 16 convention was to pass, for the second parameter,
the line number of the first line beyond the end of the
scroll region.
`cS' set scroll region. Differs from `cs' in taking parameters
differently. There are four parameters:
1. Total number of lines on the screen.
2. Number of lines above desired scroll region.
3. Number of lines below (outside of) desired scroll region.
4. Total number of lines on the screen, like #1.
This is because an Ambassador needs the parameters like this.
`cr', `do', `le'
Emacs will not attempt to use ^M, ^J or ^H for cursor motion
unless these capabilities are present and say to use those
characters.
`km' Says the terminal has a Meta key.
Defining these strings is important for getting maximum performance
from your terminal.
Make sure that the `ti' string sets all modes needed for editing
in Emacs. For example, if your terminal has a mode that controls
wrap at the end of the line, you must decide whether to specify
the `am' flag in the termcap entry; whichever you decide, the `ti'
string should contain commands to set the mode that way.
(Emacs also sends the `vs' string after the `ti' string.
You can put the mode-setting commands in either one of them.)
*** Specific Terminal Types ***
Watch out for termcap entries for Ann Arbor Ambassadors that
give too little padding for clear-screen. 7.2 msec per line is right.
These are the strings whose padding you probably should change:
:al=1*\E[L:dl=1*\E[M:cd=7.2*\E[J:cl=7.2*\E[H\E[J:
I have sometimes seen `\E[2J' at the front of the `ti' string;
this is a clear-screen, very slow, and it can cause you to get
Control-s sent by the terminal at startup. I recommend removing
the `\E[2J' from the `ti' string.
The `ti' or `vs' strings also usually need stuff added to them, such as
\E[>33;52;54h\E[>30;37;38;39l
You might want to add the following to the `te' or `ve' strings:
\E[>52l\E[>37h
The following additional capabilities will improve performance:
:AL=1*\E[%dL:DL=1*\E[%dM:IC=4\E[%d@:DC=4\E[%dP:rp=1*%.\E[%a-c\001%db:
If you find that the Meta key does not work, make sure that
:km:
is present in the termcap entry.
Watch out for termcap entries for VT100's that fail to specify
the `sf' string, or that omit the padding needed for the `sf' and `sr'
strings (2msec per line affected). What you need is
:sf=2*^J:sr=2*\EM:cs=\E[%i%d;%dr:
The Concept-100 and Concept-108 have many modes that `ti' strings
often fail to initialize. If you have problems on one of these
terminals, that is probably the place to fix them. These terminals
can support an `rp' string.
Watch out on HP terminals for problems with standout disappearing on
part of the mode line. These problems are due to the absence of
:sg#0: which some HP terminals need.
The vi55 is said to require `ip=2'.
The Sun console should have these capabilities for good performance.
:AL=\E[%dL:DL=\E[%dM:IC=\E[%d@:DC=\E[%dP:
The vt220 needs to be set to vt220 mode, 7 bit, space parity
in order to work fully with TERM=vt220.
If you are using a LAT terminal concentrator, you need to issue these
commands to turn off flow control:
set port flow control disable
define port flow control disable
On System V, in the terminfo database, various terminals may have
the `xt' flag that should not have it. `xt' should be present only
for the Teleray 1061 or equivalent terminal.
In particular, System V for the 386 often has `xt' for terminal type
AT386 or AT386-M, which is used for the console. You should delete
this flag. Here is how:
You can get a copy of the terminfo "source" for at386 using the
command: `infocmp at386 >at386.tic'. Edit the file at386.tic and remove
the `xt' flag. Then compile the new entry with: `tic at386.tic'.
It is also reported that these terminal types sometimes have the wrong
reverse-scroll string. It should be \E[T, but sometimes is given as \E[S.
Here is what watserv1!maytag!focsys!larry recommends for these terminals:
# This copy of the terminfo description has been fixed.
# The suggestions came from a number of usenet postings.
#
# Intel AT/386 for color card with monochrome display
#
AT386-M|at386-m|386AT-M|386at-m|at/386 console,
am, bw, eo, xon,
cols#80, lines#25,
acsc=``a1fxgqh0jYk?lZm@nEooppqDrrsstCu4vAwBx3yyzz{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z,
clear=\E[2J\E[H,
cr=\r, cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB,
cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
cup=\E[%i%p1%02d;%p2%02dH, cuu=\E[%p1%dA, cuu1=\E[A,
dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[1M,
ech=\E[%p1%dX,ed=\E[J, el=\E[K, el1=\E[1K\E[X, flash=^G, home=\E[H,
hpa=\E[%i%p1%dG, ich=\E[%p1%d@, ich1=\E[1@, il=\E[%p1%dL, il1=\E[1L,
ind=\E[S, indn=\E[%p1%dS, invis=\E[9m,
is2=\E[0;10;38m, kbs=\b, kcbt=^], kclr=\E[2J,
kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
kdch1=\E[P, kend=\E[Y, kf1=\EOP, kf10=\EOY, kf11=\EOZ,
kf12=\EOA, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOT,
kf6=\EOU, kf7=\EOV, kf8=\EOW, kf9=\EOX, khome=\E[H,
kich1=\E[@, knp=\E[U, kpp=\E[V, krmir=\E0, rev=\E[7m, ri=\E[T,
rin=\E[%p1%dT, rmacs=\E[10m, rmso=\E[m, rmul=\E[m,
sgr=\E[10m\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p4%t;5%;%?%p6%t;1%;%?%p9%t;12%;%?%p7%t;9%;m,
sgr0=\E[0;10m, smacs=\E[12m, smso=\E[7m, smul=\E[4m,
#
# AT&T 386 color console
#
AT386|at386|386AT|386at|at/386 console,
colors#8, ncv#3, pairs#64,
is2=\E[0;10;39m,
op=\E[0m,
setb=\E[%?%p1%{0}%=%t40m
%e%p1%{1}%=%t44m
%e%p1%{2}%=%t42m
%e%p1%{3}%=%t46m
%e%p1%{4}%=%t41m
%e%p1%{5}%=%t45m
%e%p1%{6}%=%t43m
%e%p1%{7}%=%t47m%;,
setf=\E[%?%p1%{0}%=%t30m
%e%p1%{1}%=%t34m
%e%p1%{2}%=%t32m
%e%p1%{3}%=%t36m
%e%p1%{4}%=%t31m
%e%p1%{5}%=%t35m
%e%p1%{6}%=%t33m
%e%p1%{6}%=%t33m
%e%p1%{7}%=%t37m%;,
use=at386-m,
#
# Color console version that supports underline but maps blue
# foreground color to cyan.
#
AT386-UL|at386-ul|386AT-UL|386at-ul|at/386 console,
is2=\E[0;10;38m,
use=at386,

View file

@ -1,903 +0,0 @@
The GNU Project
by Richard Stallman
originally published in the book "Open Sources"
The first software-sharing community
When I started working at the MIT Artificial Intelligence Lab in 1971,
I became part of a software-sharing community that had existed for
many years. Sharing of software was not limited to our particular
community; it is as old as computers, just as sharing of recipes is as
old as cooking. But we did it more than most.
The AI Lab used a timesharing operating system called ITS (the
Incompatible Timesharing System) that the lab's staff hackers (1) had
designed and written in assembler language for the Digital PDP-10, one
of the large computers of the era. As a member of this community, an
AI lab staff system hacker, my job was to improve this system.
We did not call our software "free software", because that term did
not yet exist; but that is what it was. Whenever people from another
university or a company wanted to port and use a program, we gladly
let them. If you saw someone using an unfamiliar and interesting
program, you could always ask to see the source code, so that you
could read it, change it, or cannibalize parts of it to make a new
program.
(1) The use of "hacker" to mean "security breaker" is a confusion on
the part of the mass media. We hackers refuse to recognize that
meaning, and continue using the word to mean, "Someone who loves to
program and enjoys being clever about it."
The collapse of the community
The situation changed drastically in the early 1980s when Digital
discontinued the PDP-10 series. Its architecture, elegant and powerful
in the 60s, could not extend naturally to the larger address spaces
that were becoming feasible in the 80s. This meant that nearly all of
the programs composing ITS were obsolete.
The AI lab hacker community had already collapsed, not long before. In
1981, the spin-off company Symbolics had hired away nearly all of the
hackers from the AI lab, and the depopulated community was unable to
maintain itself. (The book Hackers, by Steve Levy, describes these
events, as well as giving a clear picture of this community in its
prime.) When the AI lab bought a new PDP-10 in 1982, its
administrators decided to use Digital's non-free timesharing system
instead of ITS.
The modern computers of the era, such as the VAX or the 68020, had
their own operating systems, but none of them were free software: you
had to sign a nondisclosure agreement even to get an executable copy.
This meant that the first step in using a computer was to promise not
to help your neighbor. A cooperating community was forbidden. The rule
made by the owners of proprietary software was, "If you share with
your neighbor, you are a pirate. If you want any changes, beg us to
make them."
The idea that the proprietary software social system--the system that
says you are not allowed to share or change software--is antisocial,
that it is unethical, that it is simply wrong, may come as a surprise
to some readers. But what else could we say about a system based on
dividing the public and keeping users helpless? Readers who find the
idea surprising may have taken proprietary social system as given, or
judged it on the terms suggested by proprietary software businesses.
Software publishers have worked long and hard to convince people that
there is only one way to look at the issue.
When software publishers talk about "enforcing" their "rights" or
"stopping piracy", what they actually *say* is secondary. The real
message of these statements is in the unstated assumptions they take
for granted; the public is supposed to accept them uncritically. So
let's examine them.
One assumption is that software companies have an unquestionable
natural right to own software and thus have power over all its users.
(If this were a natural right, then no matter how much harm it does to
the public, we could not object.) Interestingly, the US Constitution
and legal tradition reject this view; copyright is not a natural
right, but an artificial government-imposed monopoly that limits the
users' natural right to copy.
Another unstated assumption is that the only important thing about
software is what jobs it allows you to do--that we computer users
should not care what kind of society we are allowed to have.
A third assumption is that we would have no usable software (or, would
never have a program to do this or that particular job) if we did not
offer a company power over the users of the program. This assumption
may have seemed plausible, before the free software movement
demonstrated that we can make plenty of useful software without
putting chains on it.
If we decline to accept these assumptions, and judge these issues
based on ordinary common-sense morality while placing the users first,
we arrive at very different conclusions. Computer users should be free
to modify programs to fit their needs, and free to share software,
because helping other people is the basis of society.
There is no room here for an extensive statement of the reasoning
behind this conclusion, so I refer the reader to the web page,
<http://www.gnu.org/philosophy/why-free.html>.
A stark moral choice.
With my community gone, to continue as before was impossible. Instead,
I faced a stark moral choice.
The easy choice was to join the proprietary software world, signing
nondisclosure agreements and promising not to help my fellow hacker.
Most likely I would also be developing software that was released
under nondisclosure agreements, thus adding to the pressure on other
people to betray their fellows too.
I could have made money this way, and perhaps amused myself writing
code. But I knew that at the end of my career, I would look back on
years of building walls to divide people, and feel I had spent my life
making the world a worse place.
I had already experienced being on the receiving end of a
nondisclosure agreement, when someone refused to give me and the MIT
AI lab the source code for the control program for our printer. (The
lack of certain features in this program made use of the printer
extremely frustrating.) So I could not tell myself that nondisclosure
agreements were innocent. I was very angry when he refused to share
with us; I could not turn around and do the same thing to everyone
else.
Another choice, straightforward but unpleasant, was to leave the
computer field. That way my skills would not be misused, but they
would still be wasted. I would not be culpable for dividing and
restricting computer users, but it would happen nonetheless.
So I looked for a way that a programmer could do something for the
good. I asked myself, was there a program or programs that I could
write, so as to make a community possible once again?
The answer was clear: what was needed first was an operating system.
That is the crucial software for starting to use a computer. With an
operating system, you can do many things; without one, you cannot run
the computer at all. With a free operating system, we could again have
a community of cooperating hackers--and invite anyone to join. And
anyone would be able to use a computer without starting out by
conspiring to deprive his or her friends.
As an operating system developer, I had the right skills for this job.
So even though I could not take success for granted, I realized that I
was elected to do the job. I chose to make the system compatible with
Unix so that it would be portable, and so that Unix users could easily
switch to it. The name GNU was chosen following a hacker tradition, as
a recursive acronym for "GNU's Not Unix."
An operating system does not mean just a kernel, barely enough to run
other programs. In the 1970s, every operating system worthy of the
name included command processors, assemblers, compilers, interpreters,
debuggers, text editors, mailers, and much more. ITS had them, Multics
had them, VMS had them, and Unix had them. The GNU operating system
would include them too.
Later I heard these words, attributed to Hillel (1):
If I am not for myself, who will be for me?
If I am only for myself, what am I?
If not now, when?
The decision to start the GNU project was based on a similar spirit.
(1) As an Atheist, I don't follow any religious leaders, but I
sometimes find I admire something one of them has said.
Free as in freedom
The term "free software" is sometimes misunderstood--it has nothing to
do with price. It is about freedom. Here, therefore, is the definition
of free software: a program is free software, for you, a particular
user, if:
* You have the freedom to run the program, for any purpose.
* You have the freedom to modify the program to suit your needs. (To
make this freedom effective in practice, you must have access to
the source code, since making changes in a program without having
the source code is exceedingly difficult.)
* You have the freedom to redistribute copies, either gratis or for
a fee.
* You have the freedom to distribute modified versions of the
program, so that the community can benefit from your improvements.
Since "free" refers to freedom, not to price, there is no
contradiction between selling copies and free software. In fact, the
freedom to sell copies is crucial: collections of free software sold
on CD-ROMs are important for the community, and selling them is an
important way to raise funds for free software development. Therefore,
a program which people are not free to include on these collections is
not free software.
Because of the ambiguity of "free", people have long looked for
alternatives, but no one has found a suitable alternative. The English
Language has more words and nuances than any other, but it lacks a
simple, unambiguous, word that means "free," as in
freedom--"unfettered," being the word that comes closest in meaning.
Such alternatives as "liberated", "freedom" and "open" have either the
wrong meaning or some other disadvantage.
GNU software and the GNU system
Developing a whole system is a very large project. To bring it into
reach, I decided to adapt and use existing pieces of free software
wherever that was possible. For example, I decided at the very
beginning to use TeX as the principal text formatter; a few years
later, I decided to use the X Window System rather than writing
another window system for GNU.
Because of this decision, the GNU system is not the same as the
collection of all GNU software. The GNU system includes programs that
are not GNU software, programs that were developed by other people and
projects for their own purposes, but which we can use because they are
free software.
Commencing the project
In January 1984 I quit my job at MIT and began writing GNU software.
Leaving MIT was necessary so that MIT would not be able to interfere
with distributing GNU as free software. If I had remained on the
staff, MIT could have claimed to own the work, and could have imposed
their own distribution terms, or even turned the work into a
proprietary software package. I had no intention of doing a large
amount of work only to see it become useless for its intended purpose:
creating a new software-sharing community.
However, Professor Winston, then the head of the MIT AI Lab, kindly
invited me to keep using the lab's facilities.
The first steps
Shortly before beginning the GNU project, I heard about the Free
University Compiler Kit, also known as VUCK. (The Dutch word for
"free" is written with a V.) This was a compiler designed to handle
multiple languages, including C and Pascal, and to support multiple
target machines. I wrote to its author asking if GNU could use it.
He responded derisively, stating that the university was free but the
compiler was not. I therefore decided that my first program for the
GNU project would be a multi-language, multi-platform compiler.
Hoping to avoid the need to write the whole compiler myself, I
obtained the source code for the Pastel compiler, which was a
multi-platform compiler developed at Lawrence Livermore Lab. It
supported, and was written in, an extended version of Pascal, designed
to be a system-programming language. I added a C front end, and began
porting it to the Motorola 68000 computer. But I had to give that up
when I discovered that the compiler needed many megabytes of stack
space, and the available 68000 Unix system would only allow 64k.
I then realized that the Pastel compiler functioned by parsing the
entire input file into a syntax tree, converting the whole syntax tree
into a chain of "instructions", and then generating the whole output
file, without ever freeing any storage. At this point, I concluded I
would have to write a new compiler from scratch. That new compiler is
now known as GCC; none of the Pastel compiler is used in it, but I
managed to adapt and use the C front end that I had written. But that
was some years later; first, I worked on GNU Emacs.
GNU Emacs
I began work on GNU Emacs in September 1984, and in early 1985 it was
beginning to be usable. This enabled me to begin using Unix systems to
do editing; having no interest in learning to use vi or ed, I had done
my editing on other kinds of machines until then.
At this point, people began wanting to use GNU Emacs, which raised the
question of how to distribute it. Of course, I put it on the anonymous
ftp server on the MIT computer that I used. (This computer,
prep.ai.mit.edu, thus became the principal GNU ftp distribution site;
when it was decommissioned a few years later, we transferred the name
to our new ftp server.) But at that time, many of the interested
people were not on the Internet and could not get a copy by ftp. So
the question was, what would I say to them?
I could have said, "Find a friend who is on the net and who will make
a copy for you." Or I could have done what I did with the original
PDP-10 Emacs: tell them, "Mail me a tape and a SASE, and I will mail
it back with Emacs on it." But I had no job, and I was looking for
ways to make money from free software. So I announced that I would
mail a tape to whoever wanted one, for a fee of $150. In this way, I
started a free software distribution business, the precursor of the
companies that today distribute entire Linux-based GNU systems.
Is a program free for every user?
If a program is free software when it leaves the hands of its author,
this does not necessarily mean it will be free software for everyone
who has a copy of it. For example, public domain software (software
that is not copyrighted) is free software; but anyone can make a
proprietary modified version of it. Likewise, many free programs are
copyrighted but distributed under simple permissive licenses which
allow proprietary modified versions.
The paradigmatic example of this problem is the X Window System.
Developed at MIT, and released as free software with a permissive
license, it was soon adopted by various computer companies. They added
X to their proprietary Unix systems, in binary form only, and covered
by the same nondisclosure agreement. These copies of X were no more
free software than Unix was.
The developers of the X Window System did not consider this a
problem--they expected and intended this to happen. Their goal was not
freedom, just "success", defined as "having many users." They did not
care whether these users had freedom, only that they should be
numerous.
This lead to a paradoxical situation where two different ways of
counting the amount of freedom gave different answers to the question,
"Is this program free?" If you judged based on the freedom provided by
the distribution terms of the MIT release, you would say that X was
free software. But if you measured the freedom of the average user of
X, you would have to say it was proprietary software. Most X users
were running the proprietary versions that came with Unix systems, not
the free version.
Copyleft and the GNU GPL
The goal of GNU was to give users freedom, not just to be popular. So
we needed to use distribution terms that would prevent GNU software
from being turned into proprietary software. The method we use is
called "copyleft".(1)
Copyleft uses copyright law, but flips it over to serve the opposite
of its usual purpose: instead of a means of privatizing software, it
becomes a means of keeping software free.
The central idea of copyleft is that we give everyone permission to
run the program, copy the program, modify the program, and distribute
modified versions--but not permission to add restrictions of their
own. Thus, the crucial freedoms that define "free software" are
guaranteed to everyone who has a copy; they become inalienable rights.
For an effective copyleft, modified versions must also be free. This
ensures that work based on ours becomes available to our community if
it is published. When programmers who have jobs as programmers
volunteer to improve GNU software, it is copyleft that prevents their
employers from saying, "You can't share those changes, because we are
going to use them to make our proprietary version of the program."
The requirement that changes must be free is essential if we want to
ensure freedom for every user of the program. The companies that
privatized the X Window System usually made some changes to port it to
their systems and hardware. These changes were small compared with the
great extent of X, but they were not trivial. If making changes were
an excuse to deny the users freedom, it would be easy for anyone to
take advantage of the excuse.
A related issue concerns combining a free program with non-free code.
Such a combination would inevitably be non-free; whichever freedoms
are lacking for the non-free part would be lacking for the whole as
well. To permit such combinations would open a hole big enough to sink
a ship. Therefore, a crucial requirement for copyleft is to plug this
hole: anything added to or combined with a copylefted program must be
such that the larger combined version is also free and copylefted.
The specific implementation of copyleft that we use for most GNU
software is the GNU General Public License, or GNU GPL for short. We
have other kinds of copyleft that are used in specific circumstances.
GNU manuals are copylefted also, but use a much simpler kind of
copyleft, because the complexity of the GNU GPL is not necessary for
manuals.
(1) In 1984 or 1985, Don Hopkins (a very imaginative fellow) mailed me
a letter. On the envelope he had written several amusing sayings,
including this one: "Copyleft--all rights reversed." I used the word
"copyleft" to name the distribution concept I was developing at the
time.
The Free Software Foundation
As interest in using Emacs was growing, other people became involved
in the GNU project, and we decided that it was time to seek funding
once again. So in 1985 we created the Free Software Foundation, a
tax-exempt charity for free software development. The FSF also took
over the Emacs tape distribution business; later it extended this by
adding other free software (both GNU and non-GNU) to the tape, and by
selling free manuals as well.
The FSF accepts donations, but most of its income has always come from
sales--of copies of free software, and of other related services.
Today it sells CD-ROMs of source code, CD-ROMs with binaries, nicely
printed manuals (all with freedom to redistribute and modify), and
Deluxe Distributions (where we build the whole collection of software
for your choice of platform).
Free Software Foundation employees have written and maintained a
number of GNU software packages. Two notable ones are the C library
and the shell. The GNU C library is what every program running on a
GNU/Linux system uses to communicate with Linux. It was developed by a
member of the Free Software Foundation staff, Roland McGrath. The
shell used on most GNU/Linux systems is BASH, the Bourne Again
Shell(1), which was developed by FSF employee Brian Fox.
We funded development of these programs because the GNU project was
not just about tools or a development environment. Our goal was a
complete operating system, and these programs were needed for that
goal.
(1) "Bourne again Shell" is a joke on the name ``Bourne Shell'', which
was the usual shell on Unix.
Free software support
The free software philosophy rejects a specific widespread business
practice, but it is not against business. When businesses respect the
users' freedom, we wish them success.
Selling copies of Emacs demonstrates one kind of free software
business. When the FSF took over that business, I needed another way
to make a living. I found it in selling services relating to the free
software I had developed. This included teaching, for subjects such as
how to program GNU Emacs and how to customize GCC, and software
development, mostly porting GCC to new platforms.
Today each of these kinds of free software business is practiced by a
number of corporations. Some distribute free software collections on
CD-ROM; others sell support at levels ranging from answering user
questions, to fixing bugs, to adding major new features. We are even
beginning to see free software companies based on launching new free
software products.
Watch out, though--a number of companies that associate themselves
with the term "open source" actually base their business on non-free
software that works with free software. These are not free software
companies, they are proprietary software companies whose products
tempt users away from freedom. They call these "value added", which
reflects the values they would like us to adopt: convenience above
freedom. If we value freedom more, we should call them "freedom
subtracted" products.
Technical goals
The principal goal of GNU was to be free software. Even if GNU had no
technical advantage over Unix, it would have a social advantage,
allowing users to cooperate, and an ethical advantage, respecting the
user's freedom.
But it was natural to apply the known standards of good practice to
the work--for example, dynamically allocating data structures to avoid
arbitrary fixed size limits, and handling all the possible 8-bit codes
wherever that made sense.
In addition, we rejected the Unix focus on small memory size, by
deciding not to support 16-bit machines (it was clear that 32-bit
machines would be the norm by the time the GNU system was finished),
and to make no effort to reduce memory usage unless it exceeded a
megabyte. In programs for which handling very large files was not
crucial, we encouraged programmers to read an entire input file into
core, then scan its contents without having to worry about I/O.
These decisions enabled many GNU programs to surpass their Unix
counterparts in reliability and speed.
Donated computers
As the GNU project's reputation grew, people began offering to donate
machines running UNIX to the project. These were very useful, because
the easiest way to develop components of GNU was to do it on a UNIX
system, and replace the components of that system one by one. But they
raised an ethical issue: whether it was right for us to have a copy of
UNIX at all.
UNIX was (and is) proprietary software, and the GNU project's
philosophy said that we should not use proprietary software. But,
applying the same reasoning that leads to the conclusion that violence
in self defense is justified, I concluded that it was legitimate to
use a proprietary package when that was crucial for developing free
replacement that would help others stop using the proprietary package.
But, even if this was a justifiable evil, it was still an evil. Today
we no longer have any copies of Unix, because we have replaced them
with free operating systems. If we could not replace a machine's
operating system with a free one, we replaced the machine instead.
The GNU Task List
As the GNU project proceeded, and increasing numbers of system
components were found or developed, eventually it became useful to
make a list of the remaining gaps. We used it to recruit developers to
write the missing pieces. This list became known as the GNU task list.
In addition to missing Unix components, we listed added various other
useful software and documentation projects that, we thought, a truly
complete system ought to have.
Today, hardly any Unix components are left in the GNU task list--those
jobs have been done, aside from a few inessential ones. But the list
is full of projects that some might call "applications". Any program
that appeals to more than a narrow class of users would be a useful
thing to add to an operating system.
Even games are included in the task list--and have been since the
beginning. Unix included games, so naturally GNU should too. But
compatibility was not an issue for games, so we did not follow the
list of games that Unix had. Instead, we listed a spectrum of
different kinds of games that users might like.
The GNU Library GPL
The GNU C library uses a special kind of copyleft called the GNU
Library General Public License, which gives permission to link
proprietary software with the library. Why make this exception?
It is not a matter of principle; there is no principle that says
proprietary software products are entitled to include our code. (Why
contribute to a project predicated on refusing to share with us?)
Using the LGPL for the C library, or for any library, is a matter of
strategy.
The C library does a generic job; every proprietary system or compiler
comes with a C library. Therefore, to make our C library available
only to free software would not have given free software any
advantage--it would only have discouraged use of our library.
One system is an exception to this: on the GNU system (and this
includes GNU/Linux), the GNU C library is the only C library. So the
distribution terms of the GNU C library determine whether it is
possible to compile a proprietary program for the GNU system. There is
no ethical reason to allow proprietary applications on the GNU system,
but strategically it seems that disallowing them would do more to
discourage use of the GNU system than to encourage development of free
applications.
That is why using the Library GPL is a good strategy for the C
library. For other libraries, the strategic decision needs to be
considered on a case-by-case basis. When a library does a special job
that can help write certain kinds of programs, then releasing it under
the GPL, limiting it to free programs only, is a way of helping other
free software developers, giving them an advantage against proprietary
software.
Consider GNU Readline, a library that was developed to provide
command-line editing for BASH. Readline is released under the ordinary
GNU GPL, not the Library GPL. This probably does reduce the amount
Readline is used, but that is no loss for us. Meanwhile, at least one
useful application has been made free software specifically so it
could use Readline, and that is a real gain for the community.
Proprietary software developers have the advantages money provides;
free software developers need to make advantages for each other. I
hope some day we will have a large collection of GPL-covered libraries
that have no parallel available to proprietary software, providing
useful modules to serve as building blocks in new free software, and
adding up to a major advantage for further free software development.
Scratching an itch?
Eric Raymond says that "Every good work of software starts by
scratching a developer's personal itch." Maybe that happens sometimes,
but many essential pieces of GNU software were developed in order to
have a complete free operating system. They come from a vision and a
plan, not from impulse.
For example, we developed the GNU C library because a Unix-like system
needs a C library, the Bourne-Again Shell (bash) because a Unix-like
system needs a shell, and GNU tar because a Unix-like system needs a
tar program. The same is true for my own programs--the GNU C compiler,
GNU Emacs, GDB and GNU Make.
Some GNU programs were developed to cope with specific threats to our
freedom. Thus, we developed gzip to replace the Compress program,
which had been lost to the community because of the LZW patents. We
found people to develop LessTif, and more recently started GNOME and
Harmony, to address the problems caused by certain proprietary
libraries (see below). We are developing the GNU Privacy Guard to
replace popular non-free encryption software, because users should not
have to choose between privacy and freedom.
Of course, the people writing these programs became interested in the
work, and many features were added to them by various people for the
sake of their own needs and interests. But that is not why the
programs exist.
Unexpected developments
At the beginning of the GNU project, I imagined that we would develop
the whole GNU system, then release it as a whole. That is not how it
happened.
Since each component of the GNU system was implemented on a Unix
system, each component could run on Unix systems, long before a
complete GNU system existed. Some of these programs became popular,
and users began extending them and porting them---to the various
incompatible versions of Unix, and sometimes to other systems as well.
The process made these programs much more powerful, and attracted both
funds and contributors to the GNU project. But it probably also
delayed completion of a minimal working system by several years, as
GNU developers' time was put into maintaining these ports and adding
features to the existing components, rather than moving on to write
one missing component after another.
The GNU Hurd
By 1990, the GNU system was almost complete; the only major missing
component was the kernel. We had decided to implement our kernel as a
collection of server processes running on top of Mach. Mach is a
microkernel developed at Carnegie Mellon University and then at the
University of Utah; the GNU HURD is a collection of servers (or ``herd
of gnus'') that run on top of Mach, and do the various jobs of the
Unix kernel. The start of development was delayed as we waited for
Mach to be released as free software, as had been promised.
One reason for choosing this design was to avoid what seemed to be the
hardest part of the job: debugging a kernel program without a
source-level debugger to do it with. This part of the job had been
done already, in Mach, and we expected to debug the HURD servers as
user programs, with GDB. But it took a long time to make that
possible, and the multi-threaded servers that send messages to each
other have turned out to be very hard to debug. Making the HURD work
solidly has stretched on for many years.
Alix
The GNU kernel was not originally supposed to be called the HURD. Its
original name was Alix--named after the woman who was my sweetheart at
the time. She, a Unix system administrator, had pointed out how her
name would fit a common naming pattern for Unix system versions; as a
joke, she told her friends, "Someone should name a kernel after me." I
said nothing, but decided to surprise her with a kernel named Alix.
It did not stay that way. Michael Bushnell (now Thomas), the main
developer of the kernel, preferred the name HURD, and redefined Alix
to refer to a certain part of the kernel--the part that would trap
system calls and handle them by sending messages to HURD servers.
Ultimately, Alix and I broke up, and she changed her name;
independently, the HURD design was changed so that the C library would
send messages directly to servers, and this made the Alix component
disappear from the design.
But before these things happened, a friend of hers came across the
name Alix in the HURD source code, and mentioned the name to her. So
the name did its job.
Linux and GNU/Linux
The GNU Hurd is not ready for production use. Fortunately, another
kernel is available. In 1991, Linus Torvalds developed a
Unix-compatible kernel and called it Linux. Around 1992, combining
Linux with the not-quite-complete GNU system resulted in a complete
free operating system. (Combining them was a substantial job in
itself, of course.) It is due to Linux that we can actually run a
version of the GNU system today.
We call this system version GNU/Linux, to express its composition as a
combination of the GNU system with Linux as the kernel.
Challenges in our future
We have proved our ability to develop a broad spectrum of free
software. This does not mean we are invincible and unstoppable.
Several challenges make the future of free software uncertain; meeting
them will require steadfast effort and endurance, sometimes lasting
for years. It will require the kind of determination that people
display when they value their freedom and will not let anyone take it
away.
The following four sections discuss these challenges.
Secret hardware
Hardware manufacturers increasingly tend to keep hardware
specifications secret. This makes it difficult to write free drivers
so that Linux and XFree86 can support new hardware. We have complete
free systems today, but we will not have them tomorrow if we cannot
support tomorrow's computers.
There are two ways to cope with this problem. Programmers can do
reverse engineering to figure out how to support the hardware. The
rest of us can choose the hardware that is supported by free software;
as our numbers increase, secrecy of specifications will become a
self-defeating policy.
Reverse engineering is a big job; will we have programmers with
sufficient determination to undertake it? Yes--if we have built up a
strong feeling that free software is a matter of principle, and
non-free drivers are intolerable. And will large numbers of us spend
extra money, or even a little extra time, so we can use free drivers?
Yes, if the determination to have freedom is widespread.
Non-free libraries
A non-free library that runs on free operating systems acts as a trap
for free software developers. The library's attractive features are
the bait; if you use the library, you fall into the trap, because your
program cannot usefully be part of a free operating system. (Strictly
speaking, we could include your program, but it won't run with the
library missing.) Even worse, if a program that uses the proprietary
library becomes popular, it can lure other unsuspecting programmers
into the trap.
The first instance of this problem was the Motif toolkit, back in the
80s. Although there were as yet no free operating systems, it was
clear what problem Motif would cause for them later on. The GNU
Project responded in two ways: by asking individual free software
projects to support the free X toolkit widgets as well as Motif, and
by asking for someone to write a free replacement for Motif. The job
took many years; LessTif, developed by the Hungry Programmers, became
powerful enough to support most Motif applications only in 1997.
Between 1996 and 1998, another non-free GUI toolkit library, called
Qt, was used in a substantial collection of free software, the desktop
KDE.
Free GNU/Linux systems were unable to use KDE, because we could not
use the library. However, some commercial distributors of GNU/Linux
systems who were not strict about sticking with free software added
KDE to their systems--producing a system with more capabilities, but
less freedom. The KDE group was actively encouraging more programmers
to use Qt, and millions of new "Linux users" had never been exposed to
the idea that there was a problem in this. The situation appeared
grim.
The free software community responded to the problem in two ways:
GNOME and Harmony.
GNOME, the GNU Network Object Model Environment, is GNU's desktop
project. Started in 1997 by Miguel de Icaza, and developed with the
support of Red Hat Software, GNOME set out to provide similar desktop
facilities, but using free software exclusively. It has technical
advantages as well, such as supporting a variety of languages, not
just C++. But its main purpose was freedom: not to require the use of
any non-free software.
Harmony is a compatible replacement library, designed to make it
possible to run KDE software without using Qt.
In November 1998, the developers of Qt announced a change of license
which, when carried out, should make Qt free software. There is no way
to be sure, but I think that this was partly due to the community's
firm response to the problem that Qt posed when it was non-free. (The
new license is inconvenient and inequitable, so it remains desirable
to avoid using Qt.)
[Subsequent note: in September 2000, Qt was rereleased under the GNU
GPL, which essentially solved this problem.]
How will we respond to the next tempting non-free library? Will the
whole community understand the need to stay out of the trap? Or will
many of us give up freedom for convenience, and produce a major
problem? Our future depends on our philosophy.
Software patents
The worst threat we face comes from software patents, which can put
algorithms and features off limits to free software for up to twenty
years. The LZW compression algorithm patents were applied for in 1983,
and we still cannot release free software to produce proper compressed
GIFs. In 1998, a free program to produce MP3 compressed audio was
removed from distribution under threat of a patent suit.
There are ways to cope with patents: we can search for evidence that a
patent is invalid, and we can look for alternative ways to do a job.
But each of these methods works only sometimes; when both fail, a
patent may force all free software to lack some feature that users
want. What will we do when this happens?
Those of us who value free software for freedom's sake will stay with
free software anyway. We will manage to get work done without the
patented features. But those who value free software because they
expect it to be techically superior are likely to call it a failure
when a patent holds it back. Thus, while it is useful to talk about
the practical effectiveness of the "cathedral" model of development,
and the reliability and power of some free software, we must not stop
there. We must talk about freedom and principle.
Free documentation
The biggest deficiency in our free operating systems is not in the
software--it is the lack of good free manuals that we can include in
our systems. Documentation is an essential part of any software
package; when an important free software package does not come with a
good free manual, that is a major gap. We have many such gaps today.
Free documentation, like free software, is a matter of freedom, not
price. The criterion for a free manual is pretty much the same as for
free software: it is a matter of giving all users certain freedoms.
Redistribution (including commercial sale) must be permitted, on-line
and on paper, so that the manual can accompany every copy of the
program.
Permission for modification is crucial too. As a general rule, I don't
believe that it is essential for people to have permission to modify
all sorts of articles and books. For example, I don't think you or I
are obliged to give permission to modify articles like this one, which
describe our actions and our views.
But there is a particular reason why the freedom to modify is crucial
for documentation for free software. When people exercise their right
to modify the software, and add or change its features, if they are
conscientious they will change the manual too--so they can provide
accurate and usable documentation with the modified program. A manual
which does not allow programmers to be conscientious and finish the
job, does not fill our community's needs.
Some kinds of limits on how modifications are done pose no problem.
For example, requirements to preserve the original author's copyright
notice, the distribution terms, or the list of authors, are ok. It is
also no problem to require modified versions to include notice that
they were modified, even to have entire sections that may not be
deleted or changed, as long as these sections deal with nontechnical
topics. These kinds of restrictions are not a problem because they
don't stop the conscientious programmer from adapting the manual to
fit the modified program. In other words, they don't block the free
software community from making full use of the manual.
However, it must be possible to modify all the *technical* content of
the manual, and then distribute the result in all the usual media,
through all the usual channels; otherwise, the restrictions do
obstruct the community, the manual is not free, and we need another
manual.
Will free software developers have the awareness and determination to
produce a full spectrum of free manuals? Once again, our future
depends on philosophy.
We must talk about freedom
Estimates today are that there are ten million users of GNU/Linux
systems such as Debian GNU/Linux and Red Hat Linux. Free software has
developed such practical advantages that users are flocking to it for
purely practical reasons.
The good consequences of this are evident: more interest in developing
free software, more customers for free software businesses, and more
ability to encourage companies to develop commercial free software
instead of proprietary software products.
But interest in the software is growing faster than awareness of the
philosophy it is based on, and this leads to trouble. Our ability to
meet the challenges and threats described above depends on the will to
stand firm for freedom. To make sure our community has this will, we
need to spread the idea to the new users as they come into the
community.
But we are failing to do so: the efforts to attract new users into our
community are far outstripping the efforts to teach them the civics of
our community. We need to do both, and we need to keep the two efforts
in balance.
"Open Source"
Teaching new users about freedom became more difficult in 1998, when a
part of the community decided to stop using the term "free software"
and say "open source software" instead.
Some who favored this term aimed to avoid the confusion of "free" with
"gratis"--a valid goal. Others, however, aimed to set aside the spirit
of principle that had motivated the free software movement and the GNU
project, and to appeal instead to executives and business users, many
of whom hold an ideology that places profit above freedom, above
community, above principle. Thus, the rhetoric of "open source"
focuses on the potential to make high quality, powerful software, but
shuns the ideas of freedom, community, and principle.
The "Linux" magazines are a clear example of this--they are filled
with advertisements for proprietary software that works with
GNU/Linux. When the next Motif or Qt appears, will these magazines
warn programmers to stay away from it, or will they run ads for it?
The support of business can contribute to the community in many ways;
all else being equal, it is useful. But winning their support by
speaking even less about freedom and principle can be disastrous; it
makes the previous imbalance between outreach and civics education
even worse.
"Free software" and "open source" describe the same category of
software, more or less, but say different things about the software,
and about values. The GNU Project continues to use the term "free
software", to express the idea that freedom, not just technology, is
important.
Try!
Yoda's philosophy ("There is no `try'") sounds neat, but it doesn't
work for me. I have done most of my work while anxious about whether I
could do the job, and unsure that it would be enough to achieve the
goal if I did. But I tried anyway, because there was no one but me
between the enemy and my city. Surprising myself, I have sometimes
succeeded.
Sometimes I failed; some of my cities have fallen. Then I found
another threatened city, and got ready for another battle. Over time,
I've learned to look for threats and put myself between them and my
city, calling on other hackers to come and join me.
Nowadays, often I'm not the only one. It is a relief and a joy when I
see a regiment of hackers digging in to hold the line, and I realize,
this city may survive--for now. But the dangers are greater each year,
and now Microsoft has explicitly targeted our community. We can't take
the future of freedom for granted. Don't take it for granted! If you
want to keep your freedom, you must be prepared to defend it.
Copyright (C) 1998 Richard Stallman
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.

269
etc/TODO
View file

@ -1,269 +0,0 @@
-*-text-*-
If you are ready to start working on any of these TODO items, we
appreciate your help; please write to emacs-devel@gnu.org so we can be
aware that the problem is being addressed, and talk with you how to do
it best. Since Emacs is an FSF-copyrighted packages, please be
prepared to sign legal papers to transfer the copyright on your work
to the FSF.
Small but important fixes needed in existing features:
* Make compile.el record the markers that point to error loci
on text properties in the error message lines.
Important features:
* Provide user-friendly ways to list all available font families,
display a font as a sample, etc. [fx is looking at multilingual
font selection for Emacs 22.]
* Program Enriched mode to read and save in RTF. [Is there actually a
decent single definition of RTF?]
* Implement something better than the current Refill mode. This
probably needs some primitive support.
* Implement primitive and higher-level functions to allow filling
properly with variable-pitch faces.
* Implement a smoother vertical scroll facility, one that allows
C-v to scroll through a tall image.
* Implement other text formatting properties.
** Footnotes that can appear either in place or at the end of the page.
** text property that says "don't break line in middle of this".
Don't break the line between two characters that have the
same value of this property.
** Discretionary hyphens that are not visible when they are at end of line.
* Make movemail work with IMAP.
* Internationalize Emacs's messages. [Note that this is of limited
use until the menus can display multilingual text. It also doesn't
address important issues like using the names of symbols essentially
as documentation, e.g. in command names and Custom. -- fx]
* Make the Lucid menu widget display multilingual text. [This
probably needs to be done from actual Emacs buffers, either directly
in the menu or by rendering in an unmapped window and copying the
pixels. Note that the relevant Xlib functions assume a specific
locale; that isn't good enough even if X can render the arbitrary
text, which it often can't as far as I can tell. -- fx]
* Remove the limitation that window and frame widths and heights can
be only full columns/lines.
* Move fringe to be displayed between display margins and text area.
[KFS is looking into this].
* Set fringe widths per-window/per-buffer.
* Make fringe bitmaps user configurable. Maybe add ability to add
additional bitmaps to the fringe from lisp.
Other features we would like:
* Have a command suggestion help system that recognizes patterns
of commands which could be replaced with a simpler common command.
It should not make more than one suggestion per 10 minutes.
* Add a way to define input methods by computing them (when first used)
from other input methods. Then redefine C-x 8 to use a
user-selected input method, with the default being the union of
latin-1-prefix and latin-1-postfix.
* Implement a clean way to use different major modes for
different parts of a buffer.
* Give start-process the ability to direct standard-error
output to a different filter.
* Make desktop.el save the "frame configuration" of Emacs (in some
useful sense).
* Give desktop.el a feature to switch between different named
desktops.
* Replace finder.el with something that generates an Info file
which gives the same information through a menu structure. [Dave
Love started on this.]
* Implement a variant of uncompress.el or jka-compr.el that works with
GNU Privacy Guard for encryption. [Code exists but isn't assigned.
See the Gnus development sources for assigned code concerning GPG
use with mail, which is probably a good start.]
* Save undo information in files, and reload it when needed
for undoing.
* Merge the Emacs regex.c with the Glibc regex.c.
They split off a few years ago through negligence.
* Change the Windows NT menu code
so that it handles the deep_p argument and avoids
regenerating the whole menu bar menu tree except
when the user tries to use the menubar.
This requires the RIT to forward the WM_INITMENU message to
the main thread, and not return from that message until the main
thread has processed the MENU_BAR_ACTIVATE_EVENT and regenerated
the whole menu bar. In the mean time, it should process other messages.
* Get some major packages installed: W3/url (development version needs
significant work), PSGML. Check the assignments file for other
packages which might go in and have been missed.
* Make keymaps a first-class Lisp object (this means a rewrite of
keymap.c). What should it do apart from being opaque ?
multiple inheritance ? faster where-is ? no more fix_submap_inheritance ?
what else ?
* Provide real menus on ttys. The MS-DOS implementation can serve as
an example how to do part of this.
* Implement popular parts of the rest of the CL functions as compiler
macros in cl-macs.
* Highlight rectangles (`mouse-track-rectangle-p' in XEmacs). Already in CUA,
but it's a valuable feature worth making more general.
* Support simultaneous tty and X frames.
* Provide MIME support for Rmail using the Gnus MIME library. [Maybe
not now feasible, given Gnus maintenance decisions. fx looked at
this and can say where some of the problems are.]
* Eliminate the storm of warnings concerning char/unsigned char
mismatches that we get with proprietary compilers on various systems.
They make it difficult to spot the important warnings.
* Fix anything necessary to use `long long' EMACS_INTs with GCC.
* Split out parts of lisp.h and generate Makefile dependencies
automatically.
* Update the FAQ.
* Allow auto-compression-mode to use zlib calls if zlib is available.
[It's required for PNG, so may be linked anyhow.]
* Add a --pristine startup flag which does -q --no-site-file plus
ignoring X resources (Doze equivalents?) and most of the
environment. What should not be ignored needs consideration.
* Investigate using the language environment (or locale?) to set up
more things, such as the default Ispell dictionary, calendar
holidays, quoting characters?,...
* Improve the GC (generational, incremental). (We may be able to use
the Boehm collector.) [fx is working on this.]
* Check what hooks would help Emacspeak -- see the defadvising in W3.
* Implement some variety of (non-gtk) drag-and-drop support under X.
Using libdnd might be a good start.
* Add horizontal scroll bars.
* Provide an optional feature which computes a scroll bar slider's
size and its position from lines instead of characters.
* Make the Custom themes support do useful things.
* Investigate using GNU Lightning or similar system for incremental
compilation of selected bytecode functions to subrs. Converting CCL
programs to native code is probably the first thing to try, though.
* Add a feature to Info similar to "info --apropos SUBJECT".
* Add support for SVG (Scalable Vector Graphics) rendering to
Emacs.
* Allow unknown image types to be rendered via an external program
converting them to, say, PBM (in the same way as PostScript?).
* Allow displaying an X window from an external program in a buffer,
e.g. to render graphics from Java applets. [gerd and/or wmperry
thought this was feasible.]
* Allow images (not just text) in the margin to be mouse-sensitive.
(Requires recursing through display properties). Provide some way
to simulate mouse-clicks on marginal text without a mouse.
* Implement Lisp functions to determine properly whether a character
is displayable (particularly needed in XFree 4, sigh). Use it to
define useful glyphs that may be displayed as images or unicodes
(with ASCIIfied fallback via latin1-disp). Examples include
box-drawing graphics in Custom buffers, W3 rules and tables, and
tree displays generally, mode-line mail indicator. [See work done
already for Emacs 22 and consult fx.]
* Do something to make rms happy with fx's dynamic loading, and use it
to implement things like auto-loaded buffer parsers and database
access in cases which need more than Lisp.
* Extend ps-print to deal with multiple font sizes, images, and extra
encodings.
* Provide portable undumping using mmap (per gerd design).
* Replace gmalloc.c with the modified Doug Lea code from the current
GNU libc so that the special mmapping of buffers can be removed --
that apparently loses under Solaris, at least. [fx has mostly done
this.]
* Use the XIE X extension, if available, for image display.
* Make monochrome images display using the foreground and background
colors of the applicable faces.
* Add support for rendering antialiased text, probably using
XRender/Freetype.
* Rewrite make-docfile to be clean and maintainable.
* Port the conservative stack marking code of Emacs' garbage collector
to more systems, so that we can completely get rid of GCPROs.
* Reorder defcustom's in each package so that the more important
options come first in the Customize buffers. This could be done by
either rearranging the file (since options are shown in the order
they appear in the *.el files), or by adding a few :set-after
attributes.
* Maybe document the features of libraries missing from the manual (or
ancillary manuals, including the Lisp manual in some cases).
This is not worth doing for all of these packages and we need not
aim for completeness, but some may be worth documenting.
Here's a list which is probably not complete/correct: align, allout,
artist, ansi-color, array, battery, calculator, cdl, cmuscheme,
completion, cua, delim-col, dirtrack, double, echistory, elide-head,
easymenu, expand, flow-ctrl, format [format-alist],
generic/generic-x [various modes], kermit, log-edit, ledit
[obsolete?], makesum, midnight [other than in Kill Buffer node],
mouse-copy [?], mouse-drag, mouse-sel, net-utils, rcompile,
snmp-mode [?], soundex [should be interactive?], strokes [start from
the web page], talk, thingatpt [interactive functions?], type-break,
vcursor, xscheme, zone-mode [?], mlconvert [?], iso-cvt, iso-swed,
swedish, feedmail [?], uce, bruce, gametree, meese, page-ext,
refbib, refer, scribe, sgml-mode, spell, texinfo, underline,
cmacexp, hideif, mantemp [obsolete?], pcomplete, assoc, xml,
cvs-status (should be described in PCL-CVS manual); other progmodes,
probably in separate manual.
* Provide a means to extract image-relative coordinates from mouse
clicks on images. (Needed for W3, at least.) Also useful for W3
and Gnus: allow images to scroll properly.
* Convert the XPM bitmaps to PPM, replace the PBMs with them and scrap
the XPMs so that the colour versions work generally. (Requires care
with the colour used for the transparent regions.)
* Convenient access to the `values' variable. It would be nice to have an
interface that would show you the printed reps of the elements of the
list in a menu, let you select one of the values, and put it into some
other variable, without changing the value of `values'.
* Fix skip-chars-{for,back}ward to allow character classes.

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,28 +0,0 @@
This file contains the list of translators of the tutorial.
TUTORIAL.bg: Ognyan Kulev <ogi@fmi.uni-sofia.bg>
TUTORIAL.cn: Chao-Hong Liu <chliu@gnu.org>
TUTORIAL.cs: Milan Zamazal <pdm@zamazal.org>
Pavel Janík <Pavel@Janik.cz>
TUTORIAL.de: Werner Lemberg <wl@gnu.org>
TUTORIAL.es: Rafael Sepúlveda <drs@gnulinux.org.mx>
TUTORIAL.fr: Éric Jacoboni <jaco@teaser.fr>
TUTORIAL.it: Alfredo Finelli <alfredofnl@tiscali.it>
Italian GNU Translation Group <tp@lists.linux.it>
TUTORIAL.ja: Kenichi Handa <handa@m17n.org>
TUTORIAL.ko: Koaunghi Un <koaunghi@ling.cnu.ac.kr>
TUTORIAL.nl: Pieter Schoenmakers <tiggr@tiggr.net>
TUTORIAL.pl: Beatę Wierzchołowską <beataw@orient.uw.edu.pl>
Janusz S. Bien <jsbien@mail.uw.edu.pl>
TUTORIAL.ro: Tudor Hulubei <tudor@gnu.org>
TUTORIAL.ru: Alex Ott <ottalex@narod.ru>
TUTORIAL.sv: Mats Lidell <matsl@contactor.se>
TUTORIAL.sk: Miroslav Vaško <vasko@debian.cz>
Pavel Janík <Pavel@Janik.cz>
TUTORIAL.sl: Primož Peterlin <primoz.peterlin@biofiz.mf.uni-lj.si>
TUTORIAL.th: Virach Sornlertlamvanich <virach@nectec.or.th>
TUTORIAL.zh: Chao-Hong Liu <chliu@gnu.org>
;;; Local Variables:
;;; coding: utf-8
;;; End:

File diff suppressed because it is too large Load diff

View file

@ -1,244 +0,0 @@
Why Software Should Not Have Owners
by Richard Stallman
Digital information technology contributes to the world by making it
easier to copy and modify information. Computers promise to make this
easier for all of us.
Not everyone wants it to be easier. The system of copyright gives
software programs "owners", most of whom aim to withhold software's
potential benefit from the rest of the public. They would like to be
the only ones who can copy and modify the software that we use.
The copyright system grew up with printing--a technology for mass
production copying. Copyright fit in well with this technology
because it restricted only the mass producers of copies. It did not
take freedom away from readers of books. An ordinary reader, who did
not own a printing press, could copy books only with pen and ink, and
few readers were sued for that.
Digital technology is more flexible than the printing press: when
information has digital form, you can easily copy it to share it with
others. This very flexibility makes a bad fit with a system like
copyright. That's the reason for the increasingly nasty and draconian
measures now used to enforce software copyright. Consider these four
practices of the Software Publishers Association (SPA):
* Massive propaganda saying it is wrong to disobey the owners
to help your friend.
* Solicitation for stool pigeons to inform on their coworkers and
colleagues.
* Raids (with police help) on offices and schools, in which people are
told they must prove they are innocent of illegal copying.
* Prosecution (by the US government, at the SPA's request) of people
such as MIT's David LaMacchia, not for copying software (he is not
accused of copying any), but merely for leaving copying facilities
unguarded and failing to censor their use.
All four practices resemble those used in the former Soviet Union,
where every copying machine had a guard to prevent forbidden copying,
and where individuals had to copy information secretly and pass it
from hand to hand as "samizdat". There is of course a difference: the
motive for information control in the Soviet Union was political; in
the US the motive is profit. But it is the actions that affect us,
not the motive. Any attempt to block the sharing of information, no
matter why, leads to the same methods and the same harshness.
Owners make several kinds of arguments for giving them the power
to control how we use information:
* Name calling.
Owners use smear words such as "piracy" and "theft", as well as expert
terminology such as "intellectual property" and "damage", to suggest a
certain line of thinking to the public--a simplistic analogy between
programs and physical objects.
Our ideas and intuitions about property for material objects are about
whether it is right to *take an object away* from someone else. They
don't directly apply to *making a copy* of something. But the owners
ask us to apply them anyway.
* Exaggeration.
Owners say that they suffer "harm" or "economic loss" when users copy
programs themselves. But the copying has no direct effect on the
owner, and it harms no one. The owner can lose only if the person who
made the copy would otherwise have paid for one from the owner.
A little thought shows that most such people would not have bought
copies. Yet the owners compute their "losses" as if each and every
one would have bought a copy. That is exaggeration--to put it kindly.
* The law.
Owners often describe the current state of the law, and the harsh
penalties they can threaten us with. Implicit in this approach is the
suggestion that today's law reflects an unquestionable view of
morality--yet at the same time, we are urged to regard these penalties
as facts of nature that can't be blamed on anyone.
This line of persuasion isn't designed to stand up to critical
thinking; it's intended to reinforce a habitual mental pathway.
It's elemental that laws don't decide right and wrong. Every American
should know that, forty years ago, it was against the law in many
states for a black person to sit in the front of a bus; but only
racists would say sitting there was wrong.
* Natural rights.
Authors often claim a special connection with programs they have
written, and go on to assert that, as a result, their desires and
interests concerning the program simply outweigh those of anyone
else--or even those of the whole rest of the world. (Typically
companies, not authors, hold the copyrights on software, but we are
expected to ignore this discrepancy.)
To those who propose this as an ethical axiom--the author is more
important than you--I can only say that I, a notable software author
myself, call it bunk.
But people in general are only likely to feel any sympathy with the
natural rights claims for two reasons.
One reason is an overstretched analogy with material objects. When I
cook spaghetti, I do object if someone else takes it and stops me from
eating it. In this case, that person and I have the same material
interests at stake, and it's a zero-sum game. The smallest
distinction between us is enough to tip the ethical balance.
But whether you run or change a program I wrote affects you directly
and me only indirectly. Whether you give a copy to your friend
affects you and your friend much more than it affects me. I shouldn't
have the power to tell you not to do these things. No one should.
The second reason is that people have been told that natural rights
for authors is the accepted and unquestioned tradition of our society.
As a matter of history, the opposite is true. The idea of natural
rights of authors was proposed and decisively rejected when the US
Constitution was drawn up. That's why the Constitution only *permits*
a system of copyright and does not *require* one; that's why it says
that copyright must be temporary. It also states that the purpose of
copyright is to promote progress--not to reward authors. Copyright
does reward authors somewhat, and publishers more, but that is
intended as a means of modifying their behavior.
The real established tradition of our society is that copyright cuts
into the natural rights of the public--and that this can only be
justified for the public's sake.
* Economics.
The final argument made for having owners of software is that this
leads to production of more software.
Unlike the others, this argument at least takes a legitimate approach
to the subject. It is based on a valid goal--satisfying the users of
software. And it is empirically clear that people will produce more of
something if they are well paid for doing so.
But the economic argument has a flaw: it is based on the assumption
that the difference is only a matter of how much money we have to pay.
It assumes that "production of software" is what we want, whether the
software has owners or not.
People readily accept this assumption because it accords with our
experiences with material objects. Consider a sandwich, for instance.
You might well be able to get an equivalent sandwich either free or
for a price. If so, the amount you pay is the only difference.
Whether or not you have to buy it, the sandwich has the same taste,
the same nutritional value, and in either case you can only eat it
once. Whether you get the sandwich from an owner or not cannot
directly affect anything but the amount of money you have afterwards.
This is true for any kind of material object--whether or not it has an
owner does not directly affect what it *is*, or what you can do with
it if you acquire it.
But if a program has an owner, this very much affects what it is, and
what you can do with a copy if you buy one. The difference is not
just a matter of money. The system of owners of software encourages
software owners to produce something--but not what society really
needs. And it causes intangible ethical pollution that affects us
all.
What does society need? It needs information that is truly available
to its citizens--for example, programs that people can read, fix,
adapt, and improve, not just operate. But what software owners
typically deliver is a black box that we can't study or change.
Society also needs freedom. When a program has an owner, the users
lose freedom to control part of their own lives.
And above all society needs to encourage the spirit of voluntary
cooperation in its citizens. When software owners tell us that
helping our neighbors in a natural way is "piracy", they pollute our
society's civic spirit.
This is why we say that free software is a matter of freedom, not
price.
The economic argument for owners is erroneous, but the economic issue
is real. Some people write useful software for the pleasure of
writing it or for admiration and love; but if we want more software
than those people write, we need to raise funds.
For ten years now, free software developers have tried various methods
of finding funds, with some success. There's no need to make anyone
rich; the median US family income, around $35k, proves to be enough
incentive for many jobs that are less satisfying than programming.
For years, until a fellowship made it unnecessary, I made a living
from custom enhancements of the free software I had written. Each
enhancement was added to the standard released version and thus
eventually became available to the general public. Clients paid me so
that I would work on the enhancements they wanted, rather than on the
features I would otherwise have considered highest priority.
The Free Software Foundation, a tax-exempt charity for free software
development, raises funds by selling CD-ROMs, tapes and manuals (all
of which users are free to copy and change), as well as from
donations. It now has a staff of five programmers, plus three
employees who handle mail orders.
Some free software developers make money by selling support services.
Cygnus Support, with around 50 employees, estimates that about 15 per
cent of its staff activity is free software development--a respectable
percentage for a software company.
Companies including Intel, Motorola, Texas Instruments and Analog
Devices have combined to fund the continued development of the free
GNU compiler for the language C. Meanwhile, the GNU compiler for the
Ada language is being funded by the US Air Force, which believes this
is the most cost-effective way to get a high quality compiler.
All these examples are small; the free software movement is still
small, and still young. But the example of listener-supported radio
in this country shows it's possible to support a large activity
without forcing each user to pay.
As a computer user today, you may find yourself using a proprietary
program. If your friend asks to make a copy, it would be wrong to
refuse. Cooperation is more important than copyright. But
underground, closet cooperation does not make for a good society. A
person should aspire to live an upright life openly with pride, and
this means saying "No" to proprietary software.
You deserve to be able to cooperate openly and freely with other
people who use software. You deserve to be able to learn how the
software works, and to teach your students with it. You deserve to be
able to hire your favorite programmer to fix it when it breaks.
You deserve free software.
Copyright 1994 Richard Stallman
Verbatim copying and redistribution is permitted
without royalty as long as this notice is preserved;
alteration is not permitted.

View file

@ -1,98 +0,0 @@
# -*-Mode: Fundamental-*-
# X keymap file for rlk with some emacsified bindings
# This file contains the default keyboard mapping. The first column contains a X keyboard code; the other
# 16 columns contain the mapping of the keycode to a character string, with various combinations
# of the SHIFT, LOCK, META, and CONTROL keys down. See the man page for "keycomp" for more information.
#
# Keycode constants for non-typewriter keys are found in <X/Xkeyboard.h>.
#
# It is easiest to edit this file with an EMACS window running across the entire width of the display, with
# tab stop set to 4.
#
# E1=Find, E2=Insert Here, E3=Remove, E4=Select, E5=Prev Screen, E6=Next Screen
# uns L S SL M ML MS MSL C CL CS CSL CM CML CMS CMSL
0212 0023, 0023, 0023, 0023, 0223, 0223, 0223, 0223, 0022, 0022, 0022, 0022, 0222, 0222, 0222, 0222, /* E1 */
0213 U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, /* E2 */
0214 0004, 0004, 0177, 0177, 0304, 0304, 0377, 0377, 0004, 0004, 0177, 0177, 0204, 0204, 0377, 0377 /* E3 */
0215 U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, U, /* E4 */
0216 0326, 0326, 0326, 0326, 0326, 0326, 0326, 0326, "\255\226" "\255\226" "\255\226" "\255\226" "\255\226" "\255\226" "\255\226" "\255\226" /* E5 */
0217 0026, 0026, 0026, 0026, 0026, 0026, 0026, 0026, 0226, 0226, 0226, 0226, 0226, 0226, 0226, 0226, /* E6 */
0247 0002, 0002, 0002, 0002, 0302, 0302, 0302, 0302, 0202, 0202, 0202, 0202, 0202, 0202, 0202, 0202, /* Left arrow */
0250 0006, 0006, 0006, 0006, 0306, 0306, 0306, 0306, 0206, 0206, 0206, 0206, 0206, 0206, 0206, 0206, /* Right arrow */
0251 0016, 0016, 0016, 0016, 0316, 0316, 0316, 0316, 0216, 0216, 0216, 0216, 0216, 0216, 0216, 0216, /* Down arrow */
0252 0020, 0020, 0020, 0020, 0320, 0320, 0320, 0320, 0220, 0220, 0220, 0220, 0220, 0220, 0220, 0220, /* Up arrow */
0222 0260, '0', 0260, '0', 0260, '0', 0260, '0', 0260, '0', 0260, '0', 0260, '0', 0260, '0', /* KP 0 */
0224 0256, '.', 0256, '.', 0256, '.', 0256, '.', 0256, '.', 0256, '.', 0256, '.', 0256, '.', /* KP . */
0225 '\n', '\n', '\n', '\n', 0312, 0312, 0312, 0312, 0212, 0212, 0212, 0212, 0212, 0212, 0212, 0212, /* KP Enter */
0226 0261, '1', 0261, '1', 0261, '1', 0261, '1', 0261, '1', 0261, '1', 0261, '1', 0261, '1', /* KP 1 */
0227 0262, '2', 0262, '2', 0262, '2', 0262, '2', 0262, '2', 0262, '2', 0262, '2', 0262, '2', /* KP 2 */
0230 0263, '3', 0263, '3', 0263, '3', 0263, '3', 0263, '3', 0263, '3', 0263, '3', 0263, '3', /* KP 3 */
0231 0264, '4', 0264, '4', 0264, '4', 0264, '4', 0264, '4', 0264, '4', 0264, '4', 0264, '4', /* KP 4 */
0232 0265, '5', 0265, '5', 0265, '5', 0265, '5', 0265, '5', 0265, '5', 0265, '5', 0265, '5', /* KP 5 */
0233 0266, '6', 0266, '6', 0266, '6', 0266, '6', 0266, '6', 0266, '6', 0266, '6', 0266, '6', /* KP 6 */
0234 0254, ',', 0254, ',', 0254, ',', 0254, ',', 0254, ',', 0254, ',', 0254, ',', 0254, ',', /* KP , */
0235 0267, '7', 0267, '7', 0267, '7', 0267, '7', 0267, '7', 0267, '7', 0267, '7', 0267, '7', /* KP 7 */
0236 0270, '8', 0270, '8', 0270, '8', 0270, '8', 0270, '8', 0270, '8', 0270, '8', 0270, '8', /* KP 8 */
0237 0271, '9', 0271, '9', 0271, '9', 0271, '9', 0271, '9', 0271, '9', 0271, '9', 0271, '9', /* KP 9 */
0240 0255, '-', 0255, '-', 0255, '-', 0255, '-', 0255, '-', 0255, '-', 0255, '-', 0255, '-', /* KP - */
0174 0010, 0010, 0010, 0010, 0010, 0010, 0010, 0010, 0010, 0010, 0010, 0010, 0010, 0010, 0010, 0010, /* F15/Help */
0175 0037, 0037, 0037, 0037, 0037, 0037, 0037, 0037, 0037, 0037, 0037, 0037, 0037, 0037, 0037, 0037, /* F16/(Un)Do */
0161 0033, 0033, 0033, 0033, 0033, 0033, 0033, 0033, 0033, 0033, 0033, 0033, 0033, 0033, 0033, 0033, /* F11/ESC */
0162 '\b', '\b', '\b', '\b', '\b', '\b', U, U, '\b', '\b', U, U, U, U, U, U, /* F12/BS */
0163 '\n', '\n', '\n', '\n', '\n', '\n', U, U, '\n', '\n', U, U, U, U, U, U, /* F13/LF */
0274 0177, 0177, 0177, 0177, 0377, 0377, 0377, 0377, 0030, 0030, 0177, 0177, 0377, 0377, 0377, 0377, /* back */
0275 '\r', '\r', '\r', '\r', 0215, 0215, 0215, 0215, '\r', '\r', U, U, U, U, U, U, /* Return */
0276 '\t', '\t', '\t', '\t', 0211, 0211, 0211, 0211, "\021\t" "\021\t" "\021\t" "\021\t" "\021\t" "\021\t" "\021\t" "\021\t" /* Tab */
0277 '`', '`', '~', '~', 0340, 0340, 0376, 0376, 0036, 0036, 0036, 0036, U, U, U, U, /* ` */
0300 '1', '1', '!', '!', 0261, 0261, 0241, 0241, '1', '1', '!', '!', U, U, U, U, /* 1 */
0301 'q', 'Q', 'Q', 'Q', 0361, 0361, 0321, 0321, 0021, 0021, 0021, 0021, 0221, 0221, 0221, 0221, /* q */
0302 'a', 'A', 'A', 'A', 0341, 0341, 0301, 0301, 0001, 0001, 0001, 0001, 0201, 0201, 0201, 0201, /* a */
0303 'z', 'Z', 'Z', 'Z', 0372, 0372, 0332, 0332, 0032, 0032, 0032, 0032, 0232, 0232, 0232, 0232, /* z */
0305 '2', '2', '@', '@', 0262, 0262, 0300, 0300, 0000, 0000, 0000, 0000, 0262, 0262, 0200, 0200, /* 2 */
0306 'w', 'W', 'W', 'W', 0367, 0367, 0327, 0327, 0027, 0027, 0027, 0027, 0227, 0227, 0227, 0227, /* w */
0307 's', 'S', 'S', 'S', 0363, 0363, 0323, 0323, 0023, 0023, 0023, 0023, 0223, 0223, 0223, 0223, /* s */
0310 'x', 'X', 'X', 'X', 0370, 0370, 0330, 0330, 0030, 0030, 0030, 0030, 0230, 0230, 0230, 0230, /* x */
0311 '<', '<', '>', '>', 0274, 0274, 0276, 0276, U, U, U, U, U, U, U, U, /* < */
0313 '3', '3', '#', '#', 0263, 0263, 0243, 0243, 0033, 0033, '#', '#', U, U, U, U, /* 3 */
0314 'e', 'E', 'E', 'E', 0345, 0345, 0305, 0305, 0005, 0005, 0005, 0005, 0205, 0205, 0205, 0205, /* e */
0315 'd', 'D', 'D', 'D', 0344, 0344, 0304, 0304, 0004, 0004, 0004, 0004, 0204, 0204, 0204, 0204, /* d */
0316 'c', 'C', 'C', 'C', 0343, 0343, 0303, 0303, 0003, 0003, 0003, 0003, 0203, 0203, 0203, 0203, /* c */
0320 '4', '4', '$', '$', 0264, 0264, 0244, 0244, 0034, 0034, '$', '$', U, U, U, U, /* 4 */
0321 'r', 'R', 'R', 'R', 0362, 0362, 0322, 0322, 0022, 0022, 0022, 0022, 0222, 0222, 0222, 0222, /* r */
0322 'f', 'F', 'F', 'F', 0346, 0346, 0306, 0306, 0006, 0006, 0006, 0006, 0206, 0206, 0206, 0206, /* f */
0323 'v', 'V', 'V', 'V', 0366, 0366, 0326, 0326, 0026, 0026, 0026, 0026, 0226, 0226, 0226, 0226, /* v */
0324 ' ', ' ', ' ', ' ', 0240, 0240, 0240, 0240, 0000, 0000, 0000, 0000, 0200, 0200, 0200, 0200, /* space */
0326 '5', '5', '%', '%', 0265, 0265, 0245, 0245, 0035, 0035, '%', '%', U, U, U, U, /* 5 */
0327 't', 'T', 'T', 'T', 0364, 0364, 0324, 0324, 0024, 0024, 0024, 0024, 0224, 0224, 0224, 0224, /* t */
0330 'g', 'G', 'G', 'G', 0347, 0347, 0307, 0307, 0007, 0007, 0007, 0007, 0207, 0207, 0207, 0207, /* g */
0331 'b', 'B', 'B', 'B', 0342, 0342, 0302, 0302, 0002, 0002, 0002, 0002, 0202, 0202, 0202, 0202, /* b */
0333 '6', '6', '^', '^', 0266, 0266, 0336, 0336, 0036, 0036, 0036, 0036, U, U, U, U, /* 6 */
0334 'y', 'Y', 'Y', 'Y', 0371, 0371, 0331, 0331, 0031, 0031, 0031, 0031, 0231, 0231, 0231, 0231, /* y */
0335 'h', 'H', 'H', 'H', 0350, 0350, 0310, 0310, 0010, 0010, 0010, 0010, 0210, 0210, 0210, 0210, /* h */
0336 'n', 'N', 'N', 'N', 0356, 0356, 0316, 0316, 0016, 0016, 0016, 0016, 0216, 0216, 0216, 0216, /* n */
0340 '7', '7', '&', '&', 0267, 0267, 0246, 0246, 0037, 0037, '&', '&', U, U, U, U, /* 7 */
0341 'u', 'U', 'U', 'U', 0365, 0365, 0325, 0325, 0025, 0025, 0025, 0025, 0225, 0225, 0225, 0225, /* u */
0342 'j', 'J', 'J', 'J', 0352, 0352, 0312, 0312, 0012, 0012, 0012, 0012, 0212, 0212, 0212, 0212, /* j */
0343 'm', 'M', 'M', 'M', 0355, 0355, 0315, 0315, 0015, 0015, 0015, 0015, 0215, 0215, 0215, 0215, /* m */
0345 '8', '8', '*', '*', 0270, 0270, 0252, 0252, 0177, 0177, '*', '*', U, U, U, U, /* 8 */
0346 'i', 'I', 'I', 'I', 0351, 0351, 0311, 0311, 0011, 0011, 0011, 0011, 0211, 0211, 0211, 0211, /* i */
0347 'k', 'K', 'K', 'K', 0353, 0353, 0313, 0313, 0013, 0013, 0013, 0013, 0213, 0213, 0213, 0213, /* k */
0350 ',', ',', '<', '<', 0254, 0254, 0274, 0274, U, U, U, U, U, U, U, U, /* , */
0352 '9', '9', '(', '(', 0271, 0271, 0250, 0250, '9', '9', '(', '(', U, U, U, U, /* 9 */
0353 'o', 'O', 'O', 'O', 0357, 0357, 0317, 0317, 0017, 0017, 0017, 0017, 0217, 0217, 0217, 0217, /* o */
0354 'l', 'L', 'L', 'L', 0354, 0354, 0314, 0314, 0014, 0014, 0014, 0014, 0214, 0214, 0214, 0214, /* l */
0355 '.', '.', '>', '>', 0256, 0256, 0276, 0276, U, U, U, U, U, U, U, U, /* . */
0357 '0', '0', ')', ')', 0260, 0260, 0251, 0251, '0', '0', ')', ')', U, U, U, U, /* 0 */
0360 'p', 'P', 'P', 'P', 0360, 0360, 0320, 0320, 0020, 0020, 0020, 0020, 0220, 0220, 0220, 0220, /* p */
0362 ';', ';', ':', ':', 0273, 0273, 0272, 0272, U, U, U, U, U, U, U, U, /* ; */
0363 '/', '/', '?', '?', 0257, 0257, 0277, 0277, 0037, 0037, 0037, 0037, 0237, 0237, 0237, 0237, /* / */
0365 '=', '=', '+', '+', 0275, 0275, 0253, 0253, U, U, U, U, U, U, U, U, /* = */
0366 ']', ']', '}', '}', 0335, 0335, 0376, 0376, 0035, 0035, 0035, 0035, 0335, 0335, 0335, 0335, /* ] */
0367 '\\', '\\', '|', '|', 0334, 0334, 0374, 0374, 0034, 0034, 0034, 0034, 0334, 0334, 0334, 0334, /* \ */
0371 '-', '-', '_', '_', 0255, 0255, 0337, 0337, 0037, 0037, 0037, 0037, 0337, 0337, 0337, 0337, /* - */
0372 '[', '[', '{', '{', 0333, 0333, 0373, 0373, 0033, 0033, 0033, 0033, 0333, 0333, 0333, 0333, /* [ */
0373 '\'', '\'', '"', '"', 0247, 0247, 0242, 0242, U, U, U, U, U, U, U, U, /* ' */
#
# local variables:
# tab-width: 4
# End:

File diff suppressed because it is too large Load diff

View file

@ -1,669 +0,0 @@
% Reference Card for GNU Emacs Calc 2.02
%**start of header
\newcount\columnsperpage
% The format for this file is adapted from the GNU Emacs reference
% card version 1.9, by Stephen Gildea.
% This file can be printed with 1, 2, or 3 columns per page (see below).
% Specify how many you want here. Nothing else needs to be changed.
\columnsperpage=3
% Typical command to format: tex calccard.tex
% Typical command to print (3 cols): dvips -t landscape calccard.dvi
% Copyright (c) 1987, 1992, 2001 Free Software Foundation, Inc.
% This file is part of GNU Emacs.
% GNU Emacs is free software; you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation; either version 1, or (at your option)
% any later version.
% GNU Emacs is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
% You should have received a copy of the GNU General Public License
% along with GNU Emacs; see the file COPYING. If not, write to
% the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
% This file is intended to be processed by plain TeX (TeX82).
%
% The final reference card has six columns, three on each side.
% This file can be used to produce it in any of three ways:
% 1 column per page
% produces six separate pages, each of which needs to be reduced to 80%.
% This gives the best resolution.
% 2 columns per page
% produces three already-reduced pages.
% You will still need to cut and paste.
% 3 columns per page
% produces two pages which must be printed sideways to make a
% ready-to-use 8.5 x 11 inch reference card.
% For this you need a dvi device driver that can print sideways.
% Which mode to use is controlled by setting \columnsperpage above.
%
% Author (Calc reference card):
% Dave Gillespie
% UUCP: uunet!synaptx!daveg
% Internet: daveg@synaptics.com
%
% Author (refcard.tex format):
% Stephen Gildea
% UUCP: mit-erl!gildea
% Internet: gildea@stop.mail-abuse.org
\def\versionnumber{2.03}
\def\versiondate{November 2001}
\def\year{2001}
\def\version{v\versionnumber}
\def\shortcopyrightnotice{\vskip 1ex plus 2 fill
\centerline{\small \copyright\ \year\ Free Software Foundation, Inc.
Permissions on back. v\versionnumber}}
\def\copyrightnotice{
\vskip 1ex plus 2 fill\begingroup\small
\centerline{Copyright \copyright\ \year\ Free Software Foundation, Inc.}
\centerline{designed by Dave Gillespie and Stephen Gildea, \version}
\centerline{for GNU Emacs Calc version \versionnumber\ (\versiondate)}
Permission is granted to make and distribute copies of
this card provided the copyright notice and this permission notice
are preserved on all copies.
For copies of the GNU Emacs Calc manual, write to the Free Software
Foundation, Inc., 675 Massachusetts Ave, Cambridge MA 02139.
\endgroup}
% make \bye not \outer so that the \def\bye in the \else clause below
% can be scanned without complaint.
\def\bye{\par\vfill\supereject\end}
\newdimen\intercolumnskip
\newbox\columna
\newbox\columnb
\def\ncolumns{\the\columnsperpage}
\message{[\ncolumns\space
column\if 1\ncolumns\else s\fi\space per page]}
\def\scaledmag#1{ scaled \magstep #1}
% This multi-way format was designed by Stephen Gildea
% October 1986.
\if 1\ncolumns
\hsize 4in
\vsize 10in
\voffset -.7in
\font\titlefont=\fontname\tenbf \scaledmag3
\font\headingfont=\fontname\tenbf \scaledmag2
\font\smallfont=\fontname\sevenrm
\font\smallsy=\fontname\sevensy
\footline{\hss\folio}
\def\makefootline{\baselineskip10pt\hsize6.5in\line{\the\footline}}
\else
\hsize 3.2in
\vsize 7.95in
\hoffset -.75in
\voffset -.745in
\font\titlefont=cmbx10 \scaledmag2
\font\headingfont=cmbx10 \scaledmag1
\font\smallfont=cmr6
\font\smallsy=cmsy6
\font\eightrm=cmr8
\font\eightbf=cmbx8
\font\eightit=cmti8
\font\eighttt=cmtt8
\font\eightsy=cmsy8
\textfont0=\eightrm
\textfont2=\eightsy
\def\rm{\eightrm}
\def\bf{\eightbf}
\def\it{\eightit}
\def\tt{\eighttt}
\normalbaselineskip=.8\normalbaselineskip
\normallineskip=.8\normallineskip
\normallineskiplimit=.8\normallineskiplimit
\normalbaselines\rm %make definitions take effect
\if 2\ncolumns
\let\maxcolumn=b
\footline{\hss\rm\folio\hss}
\def\makefootline{\vskip 2in \hsize=6.86in\line{\the\footline}}
\else \if 3\ncolumns
\let\maxcolumn=c
\nopagenumbers
\else
\errhelp{You must set \columnsperpage equal to 1, 2, or 3.}
\errmessage{Illegal number of columns per page}
\fi\fi
\intercolumnskip=.46in
\def\abc{a}
\output={%
% This next line is useful when designing the layout.
%\immediate\write16{Column \folio\abc\space starts with \firstmark}
\if \maxcolumn\abc \multicolumnformat \global\def\abc{a}
\else\if a\abc
\global\setbox\columna\columnbox \global\def\abc{b}
%% in case we never use \columnb (two-column mode)
\global\setbox\columnb\hbox to -\intercolumnskip{}
\else
\global\setbox\columnb\columnbox \global\def\abc{c}\fi\fi}
\def\multicolumnformat{\shipout\vbox{\makeheadline
\hbox{\box\columna\hskip\intercolumnskip
\box\columnb\hskip\intercolumnskip\columnbox}
\makefootline}\advancepageno}
\def\columnbox{\leftline{\pagebody}}
\def\bye{\par\vfill\supereject
\if a\abc \else\null\vfill\eject\fi
\if a\abc \else\null\vfill\eject\fi
\end}
\fi
% we won't be using math mode much, so redefine some of the characters
% we might want to talk about
\catcode`\^=12
\catcode`\_=12
\chardef\\=`\\
\chardef\{=`\{
\chardef\}=`\}
\hyphenation{mini-buf-fer}
\parindent 0pt
\parskip 1ex plus .5ex minus .5ex
\def\small{\smallfont\textfont2=\smallsy\baselineskip=.8\baselineskip}
\outer\def\newcolumn{\vfill\eject}
\outer\def\title#1{{\titlefont\centerline{#1}}\vskip 1ex plus .5ex}
\outer\def\section#1{\par\filbreak
\vskip 3ex plus 2ex minus 2ex {\headingfont #1}\mark{#1}%
\vskip 2ex plus 1ex minus 1.5ex}
\newdimen\keyindent
\def\beginindentedkeys{\keyindent=1em}
\def\endindentedkeys{\keyindent=0em}
\endindentedkeys
\def\paralign{\vskip\parskip\halign}
\def\<#1>{$\langle${\rm #1}$\rangle$}
\def\kbd#1{{\tt#1}\null} %\null so not an abbrev even if period follows
\def\beginexample{\par\leavevmode\begingroup
\obeylines\obeyspaces\parskip0pt\tt}
{\obeyspaces\global\let =\ }
\def\endexample{\endgroup}
\def\key#1#2{\leavevmode\hbox to \hsize{\vtop
{\hsize=.75\hsize\rightskip=1em
\hskip\keyindent\relax#1}\kbd{#2}\hfil}}
\newbox\metaxbox
\setbox\metaxbox\hbox{\kbd{M-x }}
\newdimen\metaxwidth
\metaxwidth=\wd\metaxbox
\def\metax#1#2{\leavevmode\hbox to \hsize{\hbox to .75\hsize
{\hskip\keyindent\relax#1\hfil}%
\hskip -\metaxwidth minus 1fil
\kbd{#2}\hfil}}
\def\threecol#1#2#3{\hskip\keyindent\relax#1\hfil&\kbd{#2}\quad
&\kbd{#3}\quad\cr}
%
% Calc-specific commands here:
%
\let\^=^
\let\_=_
\catcode`\^=7
\catcode`\_=8
% Redefine to make spaces a bit smaller
\let\wkbd=\kbd
\def\kbd#1{{\spaceskip=.37em\tt#1}\null}
\def\wkey#1#2{\leavevmode\hbox to \hsize{\vtop
{\hsize=.75\hsize\rightskip=1em
\hskip\keyindent\relax#1}\wkbd{#2}\hfil}}
\def\wthreecol#1#2#3{\hskip\keyindent\relax#1\hfil&\wkbd{#2}\quad
&\wkbd{#3}\quad\cr}
\def\stkkey#1#2#3#4{\par\line{\hskip1em\rlap{\kbd{#1}}\hskip4.5em%
\rlap{{#2}}\hskip7.5em\rlap{{#3}}\hskip7.5em\rlap{{#4}}\hfill}\par}
\def\S#1{$S_{\scriptscriptstyle #1}$}
\def\swap{$\leftrightarrow$}
\def\mhash{M-\#\ }
\def\,{{\rm ,\hskip.55em}\ignorespaces}
\def\lesssectionskip{\vskip-1.5ex}
\def\iline#1{\par\line{\hskip1em\relax #1\hfill}\par}
\if 1\ncolumns
\else
\font\eighti=cmmi8
\textfont1=\eighti
\fi
%**end of header
% Column 1
\title{GNU Calc Reference Card}
\centerline{(for version \versionnumber\ of \versiondate)}
\section{Starting and Stopping}
\wkey{start/stop standard Calc}{\mhash c}
\wkey{start/stop X keypad Calc}{\mhash k}
\wkey{\quad start/stop either: \kbd{\mhash \#} or \kbd{\mhash \mhash}}{}
\wkey{stop standard Calc}{q}
\wkey{Calc tutorial}{\mhash t}
\wkey{run Calc in other window}{\mhash o}
\wkey{quick calculation in minibuffer}{\mhash q}
\section{Getting Help}
\lesssectionskip
The \kbd{h} prefix key is Calc's analogue of \kbd{C-h} in Emacs.
\key{quick summary of keys}{?}
\key{describe key briefly}{h c}
\key{describe key fully}{h k}
\key{describe function or command}{h f}
\key{read on-line manual}{h i{\rm\enskip or\enskip}\mhash i}
\key{read full Calc summary}{h s{\rm\enskip or\enskip}\mhash s}
\section{Error Recovery}
\key{abort command in progress}{C-g}
\key{display recent error messages}{w}
\key{undo last operation}{U}
\key{redo last operation}{D}
\key{recall last arguments}{M-RET}
\key{edit top of stack}{`}
\wkey{reset Calc to default state}{\mhash 0 {\rm (zero)}}
\section{Transferring Data}
\wkey{grab region from a buffer}{\mhash g}
\wkey{grab rectangle from a buffer}{\mhash r}
\wkey{grab rectangle, summing columns}{\mhash :}
\wkey{grab rectangle, summing rows}{\mhash \_}
\wkey{yank data to a buffer}{\mhash y}
Also, try \kbd{C-k}/\kbd{C-y} or X cut and paste.
\section{Examples}
\lesssectionskip
In RPN, enter numbers first, separated by \kbd{RET} if necessary,
then type the operator. To enter a calculation in algebraic form,
press the apostrophe first.
\beginindentedkeys
\paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt\hfil\quad&#\hfil\cr
\wthreecol{ }{{\bf RPN style:}}{{\bf algebraic style:}}
\wthreecol{Example:}{2 RET 3 +}{' 2+3 RET}
\wthreecol{Example:}{2 RET 3 + 4 *}{' (2+3)*4 RET}
\wthreecol{Example:}{2 RET 3 RET 4 + *}{' 2*(3+4) RET}
\wthreecol{Example:}{3 RET 6 + Q 3 \^}{' sqrt(3+6)\^3 RET}
\wthreecol{Example:}{P 3 / n S}{' sin(-pi/3) RET =}
}
\endindentedkeys
\shortcopyrightnotice
% Column 2
\section{Arithmetic}
\key{add, subtract, multiply, divide}{+\, -\, *\, /}
\key{raise to a power, {\it n\/}th root}{\^\, I \^}
\key{change sign}{n}
\key{reciprocal $1/x$}{\&}
\key{square root $\sqrt x$}{Q}
\key{set precision}{p}
\key{round off last two digits}{c 2}
\key{convert to fraction, float}{c F\, c f}
\wkey{enter using algebraic notation}{' 2+3*4}
\wkey{refer to previous result}{' 3*\$\^2}
\wkey{refer to higher stack entries}{' \$1*\$2\^2}
\key{finish alg entry without evaluating}{LFD}
\key{set mode where alg entry used by default}{m a}
\section{Stack Commands}
\lesssectionskip
Here \S{n} is the $n$th stack entry, and $N$ is the size of the stack.
\vskip.5ex
\stkkey{\it key}{\it no prefix}{\it prefix $n$}{\it prefix $-n$}
\stkkey{RET}{copy \S{1}}{copy \S{1..n}}{copy \S{n}}
\stkkey{LFD}{copy \S{2}}{copy \S{n}}{copy \S{1..n}}
\stkkey{DEL}{delete \S{1}}{delete \S{1..n}}{delete \S{n}}
\stkkey{M-DEL}{delete \S{2}}{delete \S{n}}{delete \S{1..n}}
\stkkey{TAB}{swap \S{1}\swap\S{2}}{roll \S{1} to \S{n}}{roll \S{n} to \S{N}}
\stkkey{M-TAB}{roll \S{3} to \S{1}}{roll \S{n} to \S{1}}{roll \S{N} to \S{n}}
With a 0 prefix, these copy, delete, or reverse \S{1..N}.
\section{Display}
\wkey{scroll horizontally, vertically}{< >\, \{ \}}
\key{home cursor}{o}
\key{line numbers on/off}{d l}
\key{trail display on/off}{t d}
\key{scientific notation}{d s}
\key{fixed-point notation}{d f}
\key{floating-point (normal) notation}{d n}
\key{group digits with commas}{d g}
For display mode commands, \kbd{H} prefix prevents screen redraw
and \kbd{I} prefix temporarily redraws top of stack.
\section{Notations}
\wkey{scientific notation}{6.02e23}
\wkey{minus sign in numeric entry}{\_23{\rm\quad or\quad}23 n}
\wkey{fractions}{3:4}
\wkey{complex numbers}{({\it x}, {\it y})}
\wkey{polar complex numbers}{({\it r}; $\theta$)}
\wkey{vectors (commas optional)}{[1, 2, 3]}
\wkey{matrices (or nested vectors)}{[1, 2; 3, 4]}
\wkey{error forms (\kbd{p} key)}{100 +/- 0.5}
\wkey{interval forms}{[2 ..\ 5)}
\wkey{modulo forms (\kbd{M} key)}{6 mod 24}
\wkey{HMS forms}{5@ 30' 0"}
\wkey{date forms}{<Jul 4, 1992>}
\wkey{infinity, indeterminate}{inf\, nan}
% Column 3
\section{Scientific Functions}
\key{ln, log${}_{\scriptscriptstyle 10}$, log${}_b$}{L\, H L\, B}
\key{exponential {\it e}${}^x$, 10${}^x$}{E\, H E}
\key{sin, cos, tan}{S\, C\, T}
\key{arcsin, arccos, arctan}{I S\, I C\, I T}
\key{inverse, hyperbolic prefix keys}{I\, H}
\key{two-argument arctan}{f T}
\key{degrees, radians modes}{m d\, m r}
\key{pi ($\pi$)}{P}
\key{factorial, double factorial}{!\, k d}
\key{combinations, permutations}{k c\, H k c}
\key{prime factorization}{k f}
\key{next prime, previous prime}{k n\, I k n}
\key{GCD, LCM}{k g\, k l}
\key{random number, shuffle}{k r\, k h}
\key{minimum, maximum}{f n\, f x}
\key{error functions erf, erfc}{f e\, I f e}
\key{gamma, beta functions}{f g\, f b}
\key{incomplete gamma, beta functions}{f G\, f B}
\key{Bessel $J_\nu$, $Y_\nu$ functions}{f j\, f y}
\key{complex magnitude, arg, conjugate}{A\, G\, J}
\key{real, imaginary parts}{f r\, f i}
\key{convert polar/rectangular}{c p}
\section{Financial Functions}
\key{enter percentage}{M-\%}
\key{convert to percentage}{c \%}
\key{percentage change}{b \%}
\key{present value}{b P}
\key{future value}{b F}
\key{rate of return}{b T}
\key{number of payments}{b \#}
\key{size of payments}{b M}
\key{net present value, int.\ rate of return}{b N\, b I}
Above computations assume payments at end of period. Use \kbd{I}
prefix for beginning of period, or \kbd{H} for a lump sum investment.
\key{straight-line depreciation}{b S}
\key{sum-of-years'-digits}{b Y}
\key{double declining balance}{b D}
\section{Units}
\wkey{enter with units}{' 55 mi/hr}
\key{convert to new units, base units}{u c\, u b}
\key{convert temperature units}{u t}
\key{simplify units expression}{u s}
\key{view units table}{u v}
Common units:
\iline{distance: \kbd{m}, \kbd{cm}, \kbd{mm}, \kbd{km};
\kbd{in}, \kbd{ft}, \kbd{mi}, \kbd{mfi};
\kbd{point}, \kbd{lyr}}
\iline{volume: \kbd{l} or \kbd{L}, \kbd{ml};
\kbd{gal}, \kbd{qt}, \kbd{pt}, \kbd{cup}, \kbd{floz},
\kbd{tbsp}, \kbd{tsp}}
\iline{mass: \kbd{g}, \kbd{mg}, \kbd{kg}, \kbd{t};
\kbd{lb}, \kbd{oz}, \kbd{ton}}
\iline{time: \kbd{s} or \kbd{sec}, \kbd{ms}, \kbd{us}, \kbd{ns}, \kbd{min},
\kbd{hr}, \kbd{day}, \kbd{wk}}
\iline{temperature: \kbd{degC}, \kbd{degF}, \kbd{K}}
% Column 4
\newcolumn
\title{GNU Calc Reference Card}
\section{Programmer's Functions}
\key{binary, octal, hex display}{d 2\, d 8\, d 6}
\key{decimal, other radix display}{d 0\, d r}
\key{display leading zeros}{d z}
\key{entering non-decimal numbers}{16\#7FFF}
\key{binary word size}{b w}
\key{binary AND, OR, XOR}{b a\, b o\, b x}
\key{binary DIFF, NOT}{b d\, b n}
\key{left shift}{b l}
\key{logical right shift}{b r}
\key{arithmetic right shift}{b R}
\key{integer quotient, remainder}{\\\, \%}
\key{integer square root, logarithm}{f Q\, f I}
\key{floor, ceiling, round to integer}{F\, I F\, R}
\section{Variables}
\lesssectionskip
Variable names are single digits or whole words.
\key{store to variable}{s t}
\key{store and keep on stack}{s s}
\key{recall from variable}{s r}
\key{shorthands for digit variables}{t {\it n}\, s {\it n}\, r {\it n}}
\key{unstore, exchange variable}{s u\, s x}
\key{edit variable}{s e}
\section{Vector Operations}
\key{vector of 1, 2, $\ldots\mskip\thinmuskip$, {\it n}}{v x {\it n}}
\key{vector of {\it n} counts from {\it a} by {\it b}}{C-u v x}
\key{vector of copies of a value}{v b}
\key{concatenate into vector}{|}
\key{pack many stack items into vector}{v p}
\key{unpack vector or object}{v u}
\key{length of vector (list)}{v l}
\key{reverse vector}{v v}
\key{sort, grade vector}{V S\, V G}
\key{histogram of vector data}{V H}
\key{extract vector element}{v r}
\key{matrix determinant, inverse}{V D\, \&}
\key{matrix transpose, trace}{v t\, V T}
\key{cross, dot products}{V C\, *}
\key{identity matrix}{v i}
\key{extract matrix row, column}{v r\, v c}
\key{intersection, union, diff of sets}{V \^\, V V\, V -}
\key{cardinality of set}{V \#}
\key{add vectors elementwise (i.e., map \kbd{+})}{V M +}
\key{sum elements in vector (i.e., reduce \kbd{+})}{V R +}
\key{sum rows in matrix}{V R \_ +}
\key{sum columns in matrix}{V R : +}
\key{sum elements, accumulate results}{V U +}
% Column 5
\section{Algebra}
\wkey{enter an algebraic formula}{' 2x+3y\^2}
\wkey{enter an equation}{' 2x\^2=18}
\key{symbolic (vs.\ numeric) mode}{m s}
\key{fractions (vs.\ float) mode}{m f}
\key{suppress evaluation of formulas}{m O}
\key{simplify formulas automatically}{m S}
\key{return to default evaluation rules}{m D}
\key{``Big'' display mode}{d B}
\key{C, Pascal, FORTRAN modes}{d C\, d P\, d F}
\key{\TeX, eqn modes}{d T\, d E}
\key{Unformatted mode}{d U}
\key{Normal language mode}{d N}
\key{simplify formula}{a s}
\key{put formula into rational form}{a n}
\key{evaluate variables in formula}{=}
\key{evaluate numerically}{N}
\key{let variable equal a value in formula}{s l {\it x\/}={\it val}}
\key{declare properties of variable}{s d}
\iline{Common decls: \kbd{pos}, \kbd{int}, \kbd{real},
\kbd{scalar}, \kbd{[{\it a}..{\it b}\hskip.1em]}.}
\key{expand, collect terms}{a x\, a c}
\key{factor, partial fractions}{a f\, a a}
\key{polynomial quotient, remainder, GCD}{a \\\, a \%\, a g}
\key{derivative, integral}{a d\, a i}
\key{taylor series}{a t}
\key{principal solution to equation(s)}{a S}
\key{list of solutions}{a P}
\key{generic solution}{H a S}
\key{apply function to both sides of eqn}{a M}
\key{rewrite formula}{a r}
\iline{Example: \wkbd{a r a*b + a*c := a*(b+c)}}
\iline{Example: \wkbd{a r sin(x)\^2 := 1-cos(x)\^2}}
\iline{Example: \wkbd{a r cos(n pi) := 1 ::\ integer(n) ::\ n\%2 = 0}}
\iline{Example: \wkbd{a r [f(0) := 1, f(n) := n f(n-1) ::\ n > 0]}}
\iline{Put rules in \kbd{EvalRules} to have them apply automatically.}
\iline{Put rules in \kbd{AlgSimpRules} to apply during \kbd{a s}
command.}
\iline{Common markers: \kbd{opt}, \kbd{plain}, \kbd{quote}, \kbd{eval},
\kbd{let}, \kbd{remember}.}
\section{Numerical Computations}
\key{sum formula over a range}{a +}
\key{product of formula over a range}{a *}
\key{tabulate formula over a range}{a T}
\key{integrate numerically over a range}{a I}
\key{find zero of formula or equation}{a R}
\key{find local min, max of formula}{a N\, a X}
\key{fit data to line or curve}{a F}
\key{mean of data in vector or variable}{u M}
\key{median of data}{H u M}
\key{geometric mean of data}{u G}
\key{sum, product of data}{u +\, u *}
\key{minimum, maximum of data}{u N\, u X}
\key{sample, pop.\ standard deviation}{u S\, I u S}
% Column 6
\section{Selections}
\key{select subformula under cursor}{j s}
\key{select {\it n\/}th subformula}{j {\it n}}
\key{select more}{j m}
\key{unselect this, all formulas}{j u\, j c}
\key{copy indicated subformula}{j RET}
\key{delete indicated subformula}{j DEL}
\key{commute selected terms}{j C}
\key{commute term leftward, rightward}{j L\, j R}
\key{distribute, merge selection}{j D\, j M}
\key{isolate selected term in equation}{j I}
\key{negate, invert term in context}{j N\, j \&}
\key{rewrite selected term}{j r}
\section{Graphics}
\key{graph function or data}{g f}
\key{graph 3D function or data}{g F}
\key{replot current graph}{g p}
\key{print current graph}{g P}
\key{add curve to graph}{g a}
\key{set number of data points}{g N}
\key{set line, point styles}{g s\, g S}
\key{set log vs.\ linear {\it x, y} axis}{g l\, g L}
\key{set range for {\it x, y} axis}{g r\, g R}
\key{close graphics window}{g q}
\section{Programming}
\key{begin, end recording a macro}{C-x (\, C-x )}
\key{replay keyboard macro}{X}
\wkey{read region as written-out macro}{\mhash m}
\key{if, else, endif}{Z [\, Z :\, Z ]}
\key{equal to, less than, member of}{a =\, a <\, a \{}
\key{repeat {\it n} times, break from loop}{Z <\, Z >\, Z /}
\key{``for'' loop: start, end; body, step}{Z (\, Z )}
\key{save, restore mode settings}{Z `\, Z '}
\key{display message during macro}{Z =}
\key{query user during macro}{Z \#}
\key{put finished macro on a key}{Z K}
\key{define function with formula}{Z F}
\key{edit definition}{Z E}
\key{record user-defined command permanently}{Z P}
\key{record variable value permanently}{s p}
\key{record mode settings permanently}{m m}
\copyrightnotice
\bye
% Local variables:
% compile-command: "tex calccard"
% End:

View file

@ -1,12 +0,0 @@
CELIBACY(1) UNIX Programmer's Manual CELIBACY(1)
NAME
celibacy - don't have sex
SYNOPSIS
celibacy
DESCRIPTION
Does nothing worth mentioning.

View file

@ -1,148 +0,0 @@
CONDOM(1) EUNUCH Programmer's Manual CONDOM(1)
NAME
condom - Protection against viruses and prevention of child
processes
SYNOPSIS
condom [options] [processid]
DESCRIPTION
_condom_ provides protection against System Transmitted
Viruses (STVs) that may invade your system. Although the spread of
such viruses across a network can only be abated by aware and cautious
users, _condom_ is the only highly-effective means of preventing
viruses from entering your system (see celibacy(1)). Any data passed
to _condom_ by the protected process will be blocked, as specified by
the value of the -s option (see OPTIONS below). _condom_ is known to
defend against the following viruses and other malicious
afflictions...
o AIDS
o Herpes Simplex (genital varieties)
o Syphilis
o Crabs
o Genital warts
o Gonorrhea
o Chlamydia
o Michelangelo
o Jerusalem
When used alone or in conjunction with pill(1), sponge(1),
foam(1), and/or setiud(3), _condom_ also prevents the conception of a
child process. If invoked from within a synchronous process, _condom_
has, by default, an 80% chance of preventing the external processes
from becoming parent processes (see the -s option below). When other
process contraceptives are used, the chance of preventing a child
process from being forked becomes much greater. See pill(1),
sponge(1), foam(1), and setiud(3) for more information.
If no options are given, the current user's login process (as
determined by the environment variable USER) is protected with a
Trojan rough-cut latex condom without a reservoir tip. The optional
'processid' argument is an integer specifying the process to protect.
NOTE: _condom_ may only be used with a hard disk. _condom_
will terminate abnormally with exit code -1 if used with a floppy
disk (see DIAGNOSTICS below).
OPTIONS
The following options may be given to _condom_...
-b BRAND BRANDs are as follows...
trojan (default)
ramses
sheik
goldcoin
fourex
-m MATERIAL The valid MATERIALs are...
latex (default)
saranwrap
membrane -- WARNING! The membrane option is _not_
endorsed by the System Administrator General as an
effective barrier against certain viruses. It is
supported only for the sake of tradition.
-f FLAVOR The following FLAVORs are currently supported...
plain (default)
apple
banana
cherry
cinnamon
licorice
orange
peppermint
raspberry
spearmint
strawberry
-r Toggle reservoir tip (default is no reservoir tip)
-s STRENGTH STRENGTH is an integer between 20 and 100 specifying
the resilience of _condom_ against data passed to
_condom_ by the protected process. Using a larger
value of STRENGTH increases _condom_'s protective
abilities, but also reduces interprocess communication.
A smaller value of STRENGTH increases interprocess
communication, but also increases the likelihood of a
security breach. An extremely vigorous process or
one passing an enormous amount of data to _condom_
will increase the chance of _condom_'s failure. The
default STRENGTH is 80%.
-t TEXTURE Valid TEXTUREs are...
rough (default)
ribbed
bumps
lubricated (provides smoother interaction between
processes)
WARNING: The use of an external application to _condom_ in
order to reduce friction between processes has been proven in
benchmark tests to decrease _condom_'s strength factor! If execution
speed is important to your process, use the '-t lubricated' option.
DIAGNOSTICS
_condom_ terminates with one of the following exit codes...
-1 An attempt was made to use _condom_ on a floppy disk.
0 _condom_ exited successfully (no data was passed to
the synchronous process).
1 _condom_ failed and data was allowed through. The
danger of transmission of an STV or the forking of a child
process is inversely proportional to the number of other
protections employed and is directly proportional to
the ages of the processes involved.
BUGS
_condom_ is NOT 100% effective at preventing a child process
from being forked or at deterring the invasion of a virus (although
the System Administrator General has deemed that _condom_ is the most
effective means of preventing the spread of system transmitted
viruses). See celibacy(1) for information on a 100% effective program
for preventing these problems.
Remember... the use of sex(1) and other related routines
should only occur between mature, consenting processes. If you must
use sex(1), please employ _condom_ to protect your process and your
synchronous process. If we are all responsible, we can stop the
spread of STVs.
AUTHORS and HISTORY
The original version of _condom_ was released in Roman times
and was only marginally effective. With the advent of modern
technology, _condom_ now supports many more options and is much more
effective.
The current release of _condom_ was written by Ken Maupin at
the University of Washington (maupin@cs.washington.edu) and was last
updated on 10/7/92.
SEE ALSO
celibacy(1), sex(1), pill(1), sponge(1), foam(1), and
setiud(3)

View file

@ -1,819 +0,0 @@
(For more information about the GNU project and free software,
look at the files `GNU', `COPYING', and `DISTRIB', in the same
directory as this file.)
Why Software Should Be Free
by Richard Stallman
(Version of April 24, 1992)
Copyright (C) 1991, 1992, Free Software Foundation, Inc.
Verbatim copying and redistribution is permitted
without royalty; alteration is not permitted.
Introduction
************
The existence of software inevitably raises the question of how
decisions about its use should be made. For example, suppose one
individual who has a copy of a program meets another who would like a
copy. It is possible for them to copy the program; who should decide
whether this is done? The individuals involved? Or another party,
called the "owner"?
Software developers typically consider these questions on the
assumption that the criterion for the answer is to maximize developers'
profits. The political power of business has led to the government
adoption of both this criterion and the answer proposed by the
developers: that the program has an owner, typically a corporation
associated with its development.
I would like to consider the same question using a different
criterion: the prosperity and freedom of the public in general.
This answer cannot be decided by current law--the law should conform
to ethics, not the other way around. Nor does current practice decide
this question, although it may suggest possible answers. The only way
to judge is to see who is helped and who is hurt by recognizing owners
of software, why, and how much. In other words, we should perform a
cost-benefit analysis on behalf of society as a whole, taking account of
individual freedom as well as production of material goods.
In this essay, I will describe the effects of having owners, and show
that the results are detrimental. My conclusion is that programmers
have the duty to encourage others to share, redistribute, study and
improve the software we write: in other words, to write "free"
software.(1)
How Owners Justify Their Power
******************************
Those who benefit from the current system where programs are property
offer two arguments in support of their claims to own programs: the
emotional argument and the economic argument.
The emotional argument goes like this: "I put my sweat, my heart, my
soul into this program. It comes from *me*, it's *mine*!"
This argument does not require serious refutation. The feeling of
attachment is one that programmers can cultivate when it suits them; it
is not inevitable. Consider, for example, how willingly the same
programmers usually sign over all rights to a large corporation for a
salary; the emotional attachment mysteriously vanishes. By contrast,
consider the great artists and artisans of medieval times, who didn't
even sign their names to their work. To them, the name of the artist
was not important. What mattered was that the work was done--and the
purpose it would serve. This view prevailed for hundreds of years.
The economic argument goes like this: "I want to get rich (usually
described inaccurately as `making a living'), and if you don't allow me
to get rich by programming, then I won't program. Everyone else is like
me, so nobody will ever program. And then you'll be stuck with no
programs at all!" This threat is usually veiled as friendly advice
from the wise.
I'll explain later why this threat is a bluff. First I want to
address an implicit assumption that is more visible in another
formulation of the argument.
This formulation starts by comparing the social utility of a
proprietary program with that of no program, and then concludes that
proprietary software development is, on the whole, beneficial, and
should be encouraged. The fallacy here is in comparing only two
outcomes--proprietary software vs. no software--and assuming there are
no other possibilities.
Given a system of intellectual property, software development is
usually linked with the existence of an owner who controls the
software's use. As long as this linkage exists, we are often faced
with the choice of proprietary software or none. However, this linkage
is not inherent or inevitable; it is a consequence of the specific
social/legal policy decision that we are questioning: the decision to
have owners. To formulate the choice as between proprietary software
vs. no software is begging the question.
The Argument against Having Owners
**********************************
The question at hand is, "Should development of software be linked
with having owners to restrict the use of it?"
In order to decide this, we have to judge the effect on society of
each of those two activities *independently*: the effect of developing
the software (regardless of its terms of distribution), and the effect
of restricting its use (assuming the software has been developed). If
one of these activities is helpful and the other is harmful, we would be
better off dropping the linkage and doing only the helpful one.
To put it another way, if restricting the distribution of a program
already developed is harmful to society overall, then an ethical
software developer will reject the option of doing so.
To determine the effect of restricting sharing, we need to compare
the value to society of a restricted (i.e., proprietary) program with
that of the same program, available to everyone. This means comparing
two possible worlds.
This analysis also addresses the simple counterargument sometimes
made that "the benefit to the neighbor of giving him or her a copy of a
program is cancelled by the harm done to the owner." This
counterargument assumes that the harm and the benefit are equal in
magnitude. The analysis involves comparing these magnitudes, and shows
that the benefit is much greater.
To elucidate this argument, let's apply it in another area: road
construction.
It would be possible to fund the construction of all roads with
tolls. This would entail having toll booths at all street corners.
Such a system would provide a great incentive to improve roads. It
would also have the virtue of causing the users of any given road to
pay for that road. However, a toll booth is an artificial obstruction
to smooth driving--artificial, because it is not a consequence of how
roads or cars work.
Comparing free roads and toll roads by their usefulness, we find that
(all else being equal) roads without toll booths are cheaper to
construct, cheaper to run, safer, and more efficient to use.(2) In a
poor country, tolls may make the roads unavailable to many citizens.
The roads without toll booths thus offer more benefit to society at
less cost; they are preferable for society. Therefore, society should
choose to fund roads in another way, not by means of toll booths. Use
of roads, once built, should be free.
When the advocates of toll booths propose them as *merely* a way of
raising funds, they distort the choice that is available. Toll booths
do raise funds, but they do something else as well: in effect, they
degrade the road. The toll road is not as good as the free road; giving
us more or technically superior roads may not be an improvement if this
means substituting toll roads for free roads.
Of course, the construction of a free road does cost money, which the
public must somehow pay. However, this does not imply the inevitability
of toll booths. We who must in either case pay will get more value for
our money by buying a free road.
I am not saying that a toll road is worse than no road at all. That
would be true if the toll were so great that hardly anyone used the
road--but this is an unlikely policy for a toll collector. However, as
long as the toll booths cause significant waste and inconvenience, it is
better to raise the funds in a less obstructive fashion.
To apply the same argument to software development, I will now show
that having "toll booths" for useful software programs costs society
dearly: it makes the programs more expensive to construct, more
expensive to distribute, and less satisfying and efficient to use. It
will follow that program construction should be encouraged in some other
way. Then I will go on to explain other methods of encouraging and (to
the extent actually necessary) funding software development.
The Harm Done by Obstructing Software
=====================================
Consider for a moment that a program has been developed, and any
necessary payments for its development have been made; now society must
choose either to make it proprietary or allow free sharing and use.
Assume that the existence of the program and its availability is a
desirable thing.(3)
Restrictions on the distribution and modification of the program
cannot facilitate its use. They can only interfere. So the effect can
only be negative. But how much? And what kind?
Three different levels of material harm come from such obstruction:
* Fewer people use the program.
* None of the users can adapt or fix the program.
* Other developers cannot learn from the program, or base new work
on it.
Each level of material harm has a concomitant form of psychosocial
harm. This refers to the effect that people's decisions have on their
subsequent feelings, attitudes and predispositions. These changes in
people's ways of thinking will then have a further effect on their
relationships with their fellow citizens, and can have material
consequences.
The three levels of material harm waste part of the value that the
program could contribute, but they cannot reduce it to zero. If they
waste nearly all the value of the program, then writing the program
harms society by at most the effort that went into writing the program.
Arguably a program that is profitable to sell must provide some net
direct material benefit.
However, taking account of the concomitant psychosocial harm, there
is no limit to the harm that proprietary software development can do.
Obstructing Use of Programs
===========================
The first level of harm impedes the simple use of a program. A copy
of a program has nearly zero marginal cost (and you can pay this cost by
doing the work yourself), so in a free market, it would have nearly zero
price. A license fee is a significant disincentive to use the program.
If a widely-useful program is proprietary, far fewer people will use it.
It is easy to show that the total contribution of a program to
society is reduced by assigning an owner to it. Each potential user of
the program, faced with the need to pay to use it, may choose to pay,
or may forego use of the program. When a user chooses to pay, this is a
zero-sum transfer of wealth between two parties. But each time someone
chooses to forego use of the program, this harms that person without
benefiting anyone. The sum of negative numbers and zeros must be
negative.
But this does not reduce the amount of work it takes to *develop*
the program. As a result, the efficiency of the whole process, in
delivered user satisfaction per hour of work, is reduced.
This reflects a crucial difference between copies of programs and
cars, chairs, or sandwiches. There is no copying machine for material
objects outside of science fiction. But programs are easy to copy;
anyone can produce as many copies as are wanted, with very little
effort. This isn't true for material objects because matter is
conserved: each new copy has to be built from raw materials in the same
way that the first copy was built.
With material objects, a disincentive to use them makes sense,
because fewer objects bought means less raw materials and work needed
to make them. It's true that there is usually also a startup cost, a
development cost, which is spread over the production run. But as long
as the marginal cost of production is significant, adding a share of the
development cost does not make a qualitative difference. And it does
not require restrictions on the freedom of ordinary users.
However, imposing a price on something that would otherwise be free
is a qualitative change. A centrally-imposed fee for software
distribution becomes a powerful disincentive.
What's more, central production as now practiced is inefficient even
as a means of delivering copies of software. This system involves
enclosing physical disks or tapes in superfluous packaging, shipping
large numbers of them around the world, and storing them for sale. This
cost is presented as an expense of doing business; in truth, it is part
of the waste caused by having owners.
Damaging Social Cohesion
========================
Suppose that both you and your neighbor would find it useful to run a
certain program. In ethical concern for your neighbor, you should feel
that proper handling of the situation will enable both of you to use it.
A proposal to permit only one of you to use the program, while
restraining the other, is divisive; neither you nor your neighbor should
find it acceptable.
Signing a typical software license agreement means betraying your
neighbor: "I promise to deprive my neighbor of this program so that I
can have a copy for myself." People who make such choices feel
internal psychological pressure to justify them, by downgrading the
importance of helping one's neighbors--thus public spirit suffers.
This is psychosocial harm associated with the material harm of
discouraging use of the program.
Many users unconsciously recognize the wrong of refusing to share, so
they decide to ignore the licenses and laws, and share programs anyway.
But they often feel guilty about doing so. They know that they must
break the laws in order to be good neighbors, but they still consider
the laws authoritative, and they conclude that being a good neighbor
(which they are) is naughty or shameful. That is also a kind of
psychosocial harm, but one can escape it by deciding that these licenses
and laws have no moral force.
Programmers also suffer psychosocial harm knowing that many users
will not be allowed to use their work. This leads to an attitude of
cynicism or denial. A programmer may describe enthusiastically the
work that he finds technically exciting; then when asked, "Will I be
permitted to use it?", his face falls, and he admits the answer is no.
To avoid feeling discouraged, he either ignores this fact most of the
time or adopts a cynical stance designed to minimize the importance of
it.
Since the age of Reagan, the greatest scarcity in the United States
is not technical innovation, but rather the willingness to work together
for the public good. It makes no sense to encourage the former at the
expense of the latter.
Obstructing Custom Adaptation of Programs
=========================================
The second level of material harm is the inability to adapt programs.
The ease of modification of software is one of its great advantages over
older technology. But most commercially available software isn't
available for modification, even after you buy it. It's available for
you to take it or leave it, as a black box--that is all.
A program that you can run consists of a series of numbers whose
meaning is obscure. No one, not even a good programmer, can easily
change the numbers to make the program do something different.
Programmers normally work with the "source code" for a program, which
is written in a programming language such as Fortran or C. It uses
names to designate the data being used and the parts of the program, and
it represents operations with symbols such as `+' for addition and `-'
for subtraction. It is designed to help programmers read and change
programs. Here is an example; a program to calculate the distance
between two points in a plane:
float
distance (p0, p1)
struct point p0, p1;
{
float xdist = p1.x - p0.x;
float ydist = p1.y - p0.y;
return sqrt (xdist * xdist + ydist * ydist);
}
Here is the same program in executable form, on the computer I
normally use:
1314258944 -232267772 -231844864 1634862
1411907592 -231844736 2159150 1420296208
-234880989 -234879837 -234879966 -232295424
1644167167 -3214848 1090581031 1962942495
572518958 -803143692 1314803317
Source code is useful (at least potentially) to every user of a
program. But most users are not allowed to have copies of the source
code. Usually the source code for a proprietary program is kept secret
by the owner, lest anybody else learn something from it. Users receive
only the files of incomprehensible numbers that the computer will
execute. This means that only the program's owner can change the
program.
A friend once told me of working as a programmer in a bank for about
six months, writing a program similar to something that was commercially
available. She believed that if she could have gotten source code for
that commercially available program, it could easily have been adapted
to their needs. The bank was willing to pay for this, but was not
permitted to--the source code was a secret. So she had to do six
months of make-work, work that counts in the GNP but was actually waste.
The MIT Artificial Intelligence lab (AI lab) received a graphics
printer as a gift from Xerox around 1977. It was run by free software
to which we added many convenient features. For example, the software
would notify a user immediately on completion of a print job. Whenever
the printer had trouble, such as a paper jam or running out of paper,
the software would immediately notify all users who had print jobs
queued. These features facilitated smooth operation.
Later Xerox gave the AI lab a newer, faster printer, one of the first
laser printers. It was driven by proprietary software that ran in a
separate dedicated computer, so we couldn't add any of our favorite
features. We could arrange to send a notification when a print job was
sent to the dedicated computer, but not when the job was actually
printed (and the delay was usually considerable). There was no way to
find out when the job was actually printed; you could only guess. And
no one was informed when there was a paper jam, so the printer often
went for an hour without being fixed.
The system programmers at the AI lab were capable of fixing such
problems, probably as capable as the original authors of the program.
Xerox was uninterested in fixing them, and chose to prevent us, so we
were forced to accept the problems. They were never fixed.
Most good programmers have experienced this frustration. The bank
could afford to solve the problem by writing a new program from
scratch, but a typical user, no matter how skilled, can only give up.
Giving up causes psychosocial harm--to the spirit of self-reliance.
It is demoralizing to live in a house that you cannot rearrange to suit
your needs. It leads to resignation and discouragement, which can
spread to affect other aspects of one's life. People who feel this way
are unhappy and do not do good work.
Imagine what it would be like if recipes were hoarded in the same
fashion as software. You might say, "How do I change this recipe to
take out the salt?", and the great chef would respond, "How dare you
insult my recipe, the child of my brain and my palate, by trying to
tamper with it? You don't have the judgment to change my recipe and
make it work right!"
"But my doctor says I'm not supposed to eat salt! What can I do?
Will you take out the salt for me?"
"I would be glad to do that; my fee is only $50,000." Since the
owner has a monopoly on changes, the fee tends to be large. "However,
right now I don't have time. I am busy with a commission to design a
new recipe for ship's biscuit for the Navy Department. I might get
around to you in about two years."
Obstructing Software Development
================================
The third level of material harm affects software development.
Software development used to be an evolutionary process, where a person
would take an existing program and rewrite parts of it for one new
feature, and then another person would rewrite parts to add another
feature; in some cases, this continued over a period of twenty years.
Meanwhile, parts of the program would be "cannibalized" to form the
beginnings of other programs.
The existence of owners prevents this kind of evolution, making it
necessary to start from scratch when developing a program. It also
prevents new practitioners from studying existing programs to learn
useful techniques or even how large programs can be structured.
Owners also obstruct education. I have met bright students in
computer science who have never seen the source code of a large
program. They may be good at writing small programs, but they can't
begin to learn the different skills of writing large ones if they can't
see how others have done it.
In any intellectual field, one can reach greater heights by standing
on the shoulders of others. But that is no longer generally allowed in
the software field--you can only stand on the shoulders of the other
people *in your own company*.
The associated psychosocial harm affects the spirit of scientific
cooperation, which used to be so strong that scientists would cooperate
even when their countries were at war. In this spirit, Japanese
oceanographers abandoning their lab on an island in the Pacific
carefully preserved their work for the invading U.S. Marines, and left a
note asking them to take good care of it.
Conflict for profit has destroyed what international conflict spared.
Nowadays scientists in many fields don't publish enough in their papers
to enable others to replicate the experiment. They publish only enough
to let readers marvel at how much they were able to do. This is
certainly true in computer science, where the source code for the
programs reported on is usually secret.
It Does Not Matter How Sharing Is Restricted
============================================
I have been discussing the effects of preventing people from copying,
changing and building on a program. I have not specified how this
obstruction is carried out, because that doesn't affect the conclusion.
Whether it is done by copy protection, or copyright, or licenses, or
encryption, or ROM cards, or hardware serial numbers, if it *succeeds*
in preventing use, it does harm.
Users do consider some of these methods more obnoxious than others.
I suggest that the methods most hated are those that accomplish their
objective.
Software Should be Free
=======================
I have shown how ownership of a program--the power to restrict
changing or copying it--is obstructive. Its negative effects are
widespread and important. It follows that society shouldn't have
owners for programs.
Another way to understand this is that what society needs is free
software, and proprietary software is a poor substitute. Encouraging
the substitute is not a rational way to get what we need.
Vaclav Havel has advised us to "Work for something because it is
good, not just because it stands a chance to succeed." A business
making proprietary software stands a chance of success in its own narrow
terms, but it is not what is good for society.
Why People Will Develop Software
********************************
If we eliminate intellectual property as a means of encouraging
people to develop software, at first less software will be developed,
but that software will be more useful. It is not clear whether the
overall delivered user satisfaction will be less; but if it is, or if
we wish to increase it anyway, there are other ways to encourage
development, just as there are ways besides toll booths to raise money
for streets. Before I talk about how that can be done, first I want to
question how much artificial encouragement is truly necessary.
Programming is Fun
==================
There are some lines of work that few will enter except for money;
road construction, for example. There are other fields of study and
art in which there is little chance to become rich, which people enter
for their fascination or their perceived value to society. Examples
include mathematical logic, classical music, and archaeology; and
political organizing among working people. People compete, more sadly
than bitterly, for the few funded positions available, none of which is
funded very well. They may even pay for the chance to work in the
field, if they can afford to.
Such a field can transform itself overnight if it begins to offer the
possibility of getting rich. When one worker gets rich, others demand
the same opportunity. Soon all may demand large sums of money for doing
what they used to do for pleasure. When another couple of years go by,
everyone connected with the field will deride the idea that work would
be done in the field without large financial returns. They will advise
social planners to ensure that these returns are possible, prescribing
special privileges, powers and monopolies as necessary to do so.
This change happened in the field of computer programming in the past
decade. Fifteen years ago, there were articles on "computer
addiction": users were "onlining" and had hundred-dollar-a-week habits.
It was generally understood that people frequently loved programming
enough to break up their marriages. Today, it is generally understood
that no one would program except for a high rate of pay. People have
forgotten what they knew fifteen years ago.
When it is true at a given time that most people will work in a
certain field only for high pay, it need not remain true. The dynamic
of change can run in reverse, if society provides an impetus. If we
take away the possibility of great wealth, then after a while, when the
people have readjusted their attitudes, they will once again be eager
to work in the field for the joy of accomplishment.
The question, "How can we pay programmers?", becomes an easier
question when we realize that it's not a matter of paying them a
fortune. A mere living is easier to raise.
Funding Free Software
=====================
Institutions that pay programmers do not have to be software houses.
Many other institutions already exist which can do this.
Hardware manufacturers find it essential to support software
development even if they cannot control the use of the software. In
1970, much of their software was free because they did not consider
restricting it. Today, their increasing willingness to join
consortiums shows their realization that owning the software is not
what is really important for them.
Universities conduct many programming projects. Today, they often
sell the results, but in the 1970s, they did not. Is there any doubt
that universities would develop free software if they were not allowed
to sell software? These projects could be supported by the same
government contracts and grants which now support proprietary software
development.
It is common today for university researchers to get grants to
develop a system, develop it nearly to the point of completion and call
that "finished", and then start companies where they really finish the
project and make it usable. Sometimes they declare the unfinished
version "free"; if they are thoroughly corrupt, they instead get an
exclusive license from the university. This is not a secret; it is
openly admitted by everyone concerned. Yet if the researchers were not
exposed to the temptation to do these things, they would still do their
research.
Programmers writing free software can make their living by selling
services related to the software. I have been hired to port the GNU C
compiler to new hardware, and to make user-interface extensions to GNU
Emacs. (I offer these improvements to the public once they are done.)
I also teach classes for which I am paid.
I am not alone in working this way; there is now a successful,
growing corporation which does no other kind of work. Several other
companies also provide commercial support for the free software of the
GNU system. This is the beginning of the independent software support
industry-an industry that could become quite large if free software
becomes prevalent. It provides users with an option generally
unavailable for proprietary software, except to the very wealthy.
New institutions such as the Free Software Foundation can also fund
programmers. Most of the foundation's funds come from users buying
tapes through the mail. The software on the tapes is free, which means
that every user has the freedom to copy it and change it, but many
nonetheless pay to get copies. (Recall that "free software" refers to
freedom, not to price.) Some users order tapes who already have a copy,
as a way of making a contribution they feel we deserve. The Foundation
also receives sizable donations from computer manufacturers.
The Free Software Foundation is a charity, and its income is spent on
hiring as many programmers as possible. If it had been set up as a
business, distributing the same free software to the public for the same
fee, it would now provide a very good living for its founder.
Because the Foundation is a charity, programmers often work for the
Foundation for half of what they could make elsewhere. They do this
because we are free of bureaucracy, and because they feel satisfaction
in knowing that their work will not be obstructed from use. Most of
all, they do it because programming is fun. In addition, volunteers
have written many useful programs for us. (Recently even technical
writers have begun to volunteer.)
This confirms that programming is among the most fascinating of all
fields, along with music and art. We don't have to fear that no one
will want to program.
What Do Users Owe to Developers?
================================
There is a good reason for users of software to feel a moral
obligation to contribute to its support. Developers of free software
are contributing to the users' activities, and it is both fair and in
the long term interest of the users to give them funds to continue.
However, this does not apply to proprietary software developers,
since obstructionism deserves a punishment rather than a reward.
We thus have a paradox: the developer of useful software is entitled
to the support of the users, but any attempt to turn this moral
obligation into a requirement destroys the basis for the obligation. A
developer can either deserve a reward or demand it, but not both.
I believe that an ethical developer faced with this paradox must act
so as to deserve the reward, but should also entreat the users for
voluntary donations. Eventually the users will learn to support
developers without coercion, just as they have learned to support public
radio and television stations.
What Is Software Productivity?
******************************
If software were free, there would still be programmers, but perhaps
fewer of them. Would this be bad for society?
Not necessarily. Today the advanced nations have fewer farmers than
in 1900, but we do not think this is bad for society, because the few
deliver more food to the consumers than the many used to do. We call
this improved productivity. Free software would require far fewer
programmers to satisfy the demand, because of increased software
productivity at all levels:
* Wider use of each program that is developed.
* The ability to adapt existing programs for customization instead
of starting from scratch.
* Better education of programmers.
* The elimination of duplicate development effort.
Those who object to cooperation because it would result in the
employment of fewer programmers, are actually objecting to increased
productivity. Yet these people usually accept the widely-held belief
that the software industry needs increased productivity. How is this?
"Software productivity" can mean two different things: the overall
productivity of all software development, or the productivity of
individual projects. Overall productivity is what society would like to
improve, and the most straightforward way to do this is to eliminate the
artificial obstacles to cooperation which reduce it. But researchers
who study the field of "software productivity" focus only on the
second, limited, sense of the term, where improvement requires difficult
technological advances.
Is Competition Inevitable?
**************************
Is it inevitable that people will try to compete, to surpass their
rivals in society? Perhaps it is. But competition itself is not
harmful; the harmful thing is *combat*.
There are many ways to compete. Competition can consist of trying to
achieve ever more, to outdo what others have done. For example, in the
old days, there was competition among programming wizards--competition
for who could make the computer do the most amazing thing, or for who
could make the shortest or fastest program for a given task. This kind
of competition can benefit everyone, *as long as* the spirit of good
sportsmanship is maintained.
Constructive competition is enough competition to motivate people to
great efforts. A number of people are competing to be the first to have
visited all the countries on Earth; some even spend fortunes trying to
do this. But they do not bribe ship captains to strand their rivals on
desert islands. They are content to let the best person win.
Competition becomes combat when the competitors begin trying to
impede each other instead of advancing themselves--when "Let the best
person win" gives way to "Let me win, best or not." Proprietary
software is harmful, not because it is a form of competition, but
because it is a form of combat among the citizens of our society.
Competition in business is not necessarily combat. For example, when
two grocery stores compete, their entire effort is to improve their own
operations, not to sabotage the rival. But this does not demonstrate a
special commitment to business ethics; rather, there is little scope for
combat in this line of business short of physical violence. Not all
areas of business share this characteristic. Withholding information
that could help everyone advance is a form of combat.
Business ideology does not prepare people to resist the temptation to
combat the competition. Some forms of combat have been made banned with
anti-trust laws, truth in advertising laws, and so on, but rather than
generalizing this to a principled rejection of combat in general,
executives invent other forms of combat which are not specifically
prohibited. Society's resources are squandered on the economic
equivalent of factional civil war.
"Why Don't You Move to Russia?"
*******************************
In the United States, any advocate of other than the most extreme
form of laissez-faire selfishness has often heard this accusation. For
example, it is leveled against the supporters of a national health care
system, such as is found in all the other industrialized nations of the
free world. It is leveled against the advocates of public support for
the arts, also universal in advanced nations. The idea that citizens
have any obligation to the public good is identified in America with
Communism. But how similar are these ideas?
Communism as was practiced in the Soviet Union was a system of
central control where all activity was regimented, supposedly for the
common good, but actually for the sake of the members of the Communist
party. And where copying equipment was closely guarded to prevent
illegal copying.
The American system of intellectual property exercises central
control over distribution of a program, and guards copying equipment
with automatic copying protection schemes to prevent illegal copying.
By contrast, I am working to build a system where people are free to
decide their own actions; in particular, free to help their neighbors,
and free to alter and improve the tools which they use in their daily
lives. A system based on voluntary cooperation, and decentralization.
Thus, if we are to judge views by their resemblance to Russian
Communism, it is the software owners who are the Communists.
The Question of Premises
************************
I make the assumption in this paper that a user of software is no
less important than an author, or even an author's employer. In other
words, their interests and needs have equal weight, when we decide
which course of action is best.
This premise is not universally accepted. Many maintain that an
author's employer is fundamentally more important than anyone else.
They say, for example, that the purpose of having owners of software is
to give the author's employer the advantage he deserves--regardless of
how this may affect the public.
It is no use trying to prove or disprove these premises. Proof
requires shared premises. So most of what I have to say is addressed
only to those who share the premises I use, or at least are interested
in what their consequences are. For those who believe that the owners
are more important than everyone else, this paper is simply irrelevant.
But why would a large number of Americans accept a premise which
elevates certain people in importance above everyone else? Partly
because of the belief that this premise is part of the legal traditions
of American society. Some people feel that doubting the premise means
challenging the basis of society.
It is important for these people to know that this premise is not
part of our legal tradition. It never has been.
Thus, the Constitution says that the purpose of copyright is to
"promote the progress of science and the useful arts." The Supreme
Court has elaborated on this, stating in `Fox Film vs. Doyal' that "The
sole interest of the United States and the primary object in conferring
the [copyright] monopoly lie in the general benefits derived by the
public from the labors of authors."
We are not required to agree with the Constitution or the Supreme
Court. (At one time, they both condoned slavery.) So their positions
do not disprove the owner supremacy premise. But I hope that the
awareness that this is a radical right-wing assumption rather than a
traditionally recognized one will weaken its appeal.
Conclusion
**********
We like to think that our society encourages helping your neighbor;
but each time we reward someone for obstructionism, or admire them for
the wealth they have gained in this way, we are sending the opposite
message.
Software hoarding is one form of our general willingness to disregard
the welfare of society for personal gain. We can trace this disregard
from Ronald Reagan to Jim Bakker, from Ivan Boesky to Exxon, from
failing banks to failing schools. We can measure it with the size of
the homeless population and the prison population. The antisocial
spirit feeds on itself, because the more we see that other people will
not help us, the more it seems futile to help them. Thus society decays
into a jungle.
If we don't want to live in a jungle, we must change our attitudes.
We must start sending the message that a good citizen is one who
cooperates when appropriate, not one who is successful at taking from
others. I hope that the free software movement will contribute to
this: at least in one area, we will replace the jungle with a more
efficient system which encourages and runs on voluntary cooperation.
---------- Footnotes ----------
(1) The word "free" in "free software" refers to freedom, not to
price; the price paid for a copy of a free program may be zero, or
small, or (rarely) quite large.
(2) The issues of pollution and traffic congestion do not alter
this conclusion. If we wish to make driving more expensive to
discourage driving in general, it is disadvantageous to do this using
toll booths, which contribute to both pollution and congestion. A tax
on gasoline is much better. Likewise, a desire to enhance safety by
limiting maximum speed is not relevant; a free access road enhances the
average speed by avoiding stops and delays, for any given speed limit.
(3) One might regard a particular computer program as a harmful
thing that should not be available at all, like the Lotus Marketplace
database of personal information, which was withdrawn from sale due to
public disapproval. Most of what I say does not apply to this case,
but it makes little sense to argue for having an owner on the grounds
that the owner will make the program less available. The owner will
not make it *completely* unavailable, as one would wish in the case of
a program whose use is considered destructive.

View file

@ -1,768 +0,0 @@
%!PS-Adobe-2.0
%%Creator: dvips(k) 5.86d Copyright 1999 Radical Eye Software
%%Title: cs-dired-ref.dvi
%%Pages: 1
%%PageOrder: Ascend
%%BoundingBox: 0 0 596 842
%%EndComments
%DVIPSWebPage: (www.radicaleye.com)
%DVIPSCommandLine: dvips cs-dired-ref.dvi
%DVIPSParameters: dpi=600, compressed
%DVIPSSource: TeX output 2002.02.13:1838
%%BeginProcSet: texc.pro
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
(LaserWriter 16/600)]{A length product length le{A length product exch 0
exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
%%EndProcSet
TeXDict begin 39158280 55380996 1000 600 600 (cs-dired-ref.dvi)
@start
%DVIPSBitmapFont: Fa cstt8 8 63
/Fa 63 127 df<123812FEB3A8127C1200A7123812FEA51238072A72A923>33
D<EB3C0F90387E1F80A6EBFE3F01FC1300A2007FB512F8B612FCA4003F14F83901F87E00
AA003FB512F8B612FCA46C14F83903F0FC00EA07F1EBE1F8A63803C0F01E297EA823>35
D<130E131FA4EB7FC03803FFF04813FC001F7F487FD87FDF1380EB1F1F00FEEB0FC012FC
00F8131FA312FCEC0F8000FEEB0700007F90C7FCEA3FDF13FF000F13C06C13F0000113FC
6C6C7EEB1FFFEC7F80141F15C0007C130F00FE1307A400FC130FA2007EEB1F80007F133F
9038DFFF006CB45A6C5B00075B6C13E038007F80011FC7FCA5130E1A347CAD23>I<000F
EB01C0391F8003E0383FC007EA7FE0140FD8F9F013C0141F00F01480A2143F150000F95B
147EEA7FE014FE6C485AEA1F80EA0F0100005B13035CA213075C130F5CA2131F5C133F91
C7FCA25B137E9038FE03C09038FC07E0EC0FF00001EB1FF813F8EC3E7C12039038F03C3C
120713E0A2000FEB3E7C13C0001FEB1FF81380EC0FF0000FEB07E039070003C01E347EAD
23>I<137CEA01FE487E487FA2EBCFC0EA0F87A21303A31307A290380FCFF8EC9FFC139F
13BF3907FF0FF801FE138013FCA29038F81F00EA0FF0381FE01E383FF03E13F8007F5BEA
7E7C00FC1378EB3EF812F86D5AA290380FE03C1307EAFC0F90381FF07C387E3FFC007FB5
12FC393FFE7FF8EBFC3F390FF01FE03907E007C01E2B7EA923>I<EB0380EB0FC0131FEB
3F80EBFF005BEA01F81203485A485A5B485AA248C7FCA2123E127EA2127CA212FCA25AA8
7EA2127CA2127EA2123E123FA26C7EA26C7E7F6C7E6C7E1201EA00FE7FEB3F80EB1FC013
0FEB0380123476AD23>40 D<131EA2131F131EA30070EB0380007C130F00FEEB1FC0397F
9E7F8090B5FC001FEBFE00000713F8000113E038007F803801FFE0000713F8001F13FE00
7FEBFF80EB9E7F39FE1E1FC0007CEB0F8000701303000090C7FCA3131F131EA21A1D7CA2
23>42 D<EB0780497EAB007FB512F8B612FCA46C14F839000FC000AB6D5A1E1E7EA223>
I<007FB51280B612C0A46C14801A067C9623>45 D<123E127FEAFF80A5EA7F00123E0909
738823>I<EC0380EC07C0140FA2141F1580143F15005C147EA214FE5C13015C13035C13
075CA2130F5C131F5C133F91C7FCA25B137E13FE5B12015BA212035B12075B120F5B121F
5BA2123F90C8FC5A127E12FE5AA25A12781A347CAD23>I<EB7FC03803FFF04813FC001F
7F48EBFF80EA7F80397E003FC000FEEB0FE04813076CEB03F0A31401127C1238C7FC1403
A2EC07E0A2EC0FC0141FEC3F80150014FE1301EB03F8495A495AEB3FC0495A01FEC7FC48
5A485AD80FF013E0391FE001F0EA3F8048B5FCB6FCA36C14E01C2A7DA923>50
D<EB7FC03801FFF0000713FC487F487F393FE07F809038801FC0140F1407A3EA0E00C712
0FA2EC1F80143F903801FF00EB7FFE495A5C806DB4FC9038007F80EC1FC0EC0FE01407EC
03F0A21401A2127C12FE1403A2EC07E048130F6CEB1FC0387FC07F6CB512806C14006C13
FC00035B38007FC01C2B7DA923>I<EC0380EC0FC0141F143F14FF491380903807FE0049
5A495AEB7FE0495A4890C7FCEA07FE485AEA1FF0EA7FE0485A90C8FCA213C06C7EEA1FF0
EA0FFC6C7EEA01FF6C13C06D7EEB1FF86D7E6D7E903801FF806D13C0143F141F140FEC03
801A247CA523>60 D<007FB512F8B612FCA4003F14F8C9FCA6003FB512F8B612FCA46C14
F81E127E9C23>I<127012FC7E7E13C06C7EEA1FF86C7E6C7E3801FF806C7FEB3FE0EB1F
F86D7EEB03FE903801FF806D13C0143FA214FF491380903803FE00EB0FFC495AEB3FE0EB
FFC0485BD807FEC7FC485A485AEA7FE0485A90C8FC5A5A12701A247CA523>I<3801FFC0
000713F8001F13FE487F48148039FF007FC048130F1407A2140F007C131F0038EB7F80C7
12FF01031300EB07FCEB0FF0495A5C495AA291C7FCA6133E90C8FCA7131C137FA5131C1A
297CA823>I<EB07F0EB1FFCEB7FFE48B5FC4814803907FC1FC0380FE0079038C0FFE0EA
1F83485AEA3E0FD87E1F13F0007C138FEB3F0738783E0338F87C01A212F0EB7800A5EB7C
0112F8A239783E03E0387C3F0790381F8FC0007E13FFD83E0F1380D83F071300381F83FE
390FC0F9E09038E007F03807FC0F6CB5FC6C14C06C6C138090381FFE00EB07F81C297DA8
23>I<EB0FC0A2497EA4EB3CF0A5EB7CF8A3EB7878EBF87CA548487EA40003133F497EA2
90B5FCA2481480A3EBC00F000F14C0EB8007A3397FF03FF800FF14FCA3007F14F81E2A7E
A923>I<B512F014FE80158015C0390F800FE01407EC03F01401A5140315E01407EC1FC0
90B5128015005C8015C09038800FE01407EC03F0140115F81400A5140115F01403EC0FE0
B6FC15C01580150014FC1D297EA823>I<90380FE0E090383FF9F0EBFFFD4813FF5A3807
FC3F380FF00F381FC007A2383F80031300481301127EA2007CEB00E000FC1400A25AA97E
A2127C007E14E0EC01F0127F7EEB8003EA1FC0EC07E0380FF00F3907FC1FC06CB512806C
14006C5BEB3FF8EB0FE01C2B7DA923>I<90381FC1C090387FF3E090B5FC12035AEBF83F
380FE01F381FC00F1380003F13071300007E1303A3007CEB01C000FC90C7FCA25AA6EC7F
F815FCA27E15F8007CEB03E0127E1407A27EEB800F121FEBC01FEA0FE03807F87F90B5FC
7EC613FB90387FF1C090381FC0001E2B7EA923>71 D<397FF00FFE39FFF81FFFA3397FF0
0FFE390F8001F0AC90B5FCA5EB8001AE397FF00FFE39FFF81FFFA3397FF00FFE20297FA8
23>I<B512FEA538007C00B3ADB512FEA517297AA823>I<EA7FFEB5FCA36C5AEA07C0B3A6
157CA7007FB512FCB6FCA36C14F81E297EA823>76 D<39FF8001FFA26D5AA3391EE00778
A3EBF00FEB700EA2EB781EA2EB381CEB3C3CA2EB1C38EB1E78A2EB0E70A3EB07E0A3EB03
C0A290C7FCA939FFC003FFA520297FA823>I<3803FFF0000F13FC487F487FA2397F807F
80387E001F007C130FA200FC14C0481307B3A46C130FA2007C1480A2007E131F387F807F
6CB51200A26C5B6C5B000313F01A2B7CA923>79 D<B512F014FE80158015C0390F801FE0
EC07F01403140115F81400A5140115F014031407EC1FE090B512C0158015005C14F00180
C7FCABEAFFF87FA35B1D297EA823>I<3803FFF0000F13FC487F487FA2397F807F80387E
001F007C130FA200FC14C0481307B3A3131F148700FC138F397C0FCF80A2387E07FFEA7F
876CB51200A26C5B6C5B1203C7FC147EA280A2EC1F80A2140F1A337CA923>I<387FFFC0
B512F88014FF7E390F807F80EC1FC0140F6E7E1403A514074A5A141FEC7F8090B5C7FCA2
14FC8080EB807F6E7E141F140FA61587ED8F80A215CFD87FF013DF39FFF807FF1600806C
486C5AC812F8212A7FA823>I<9038FF83800003EBE3C04813FF121F5AEA7FC0EB003F00
FE131F48130FA25A1407A26CEB038091C7FC127E127FEA3FF06CB4FC6C13F06C13FC0001
7F39001FFF80010113C0EB001FEC0FE01407EC03F0A20070130112F8A36C1303A26CEB07
E06C130F9038E03FC090B5FC15005C00F15B38703FE01C2B7DA923>I<39FFF81FFFA539
0F8001F0B3A7EBC003A2000714E0EBE007EBF00F000314C0EBFC3F6CB512806C14006D5A
EB1FF8EB07E0202A7FA823>85 D<397FF07FF0EBF8FFA3EBF07F3907E03F000003133EEB
F07E0001137CEBF8FC00005B13FDEB7DF0137F6D5AA26D5AA26D5AA280131F80133F8013
7DEB7CF813F8147CEA01F0801203497E12079038C00F80120F397FE03FF8D8FFF013FCA3
D87FE013F81E297EA823>88 D<397FF00FFE39FFF81FFFA3397FF00FFE3907C003E0EBE0
07000314C013F00001130F01F813800000131F01FC1300137C143E133E147EEB1F7CA26D
5AA26D5AA25C1303ACEB1FFC497EA36D5A20297FA823>I<003FB512E04814F0A4397C00
07E0140FEC1FC01580143F0038EB7F00C7127E14FE495A5C1303495A5C130F495A5C133F
49C7FC137E13FE485A5B1203485A4913E0000FEB01F0EA1FC01380123FEA7F00127EB6FC
A46C14E01C297DA823>I<133013FCEA03FF000F13C0003F13F0B512FC1387EAFE0138F8
007C00601318160A7AA823>94 D<007FB51280B612C0A46C14801A067C7E23>I<3803FF
80000F13E04813F8487F80EB80FFEC3F80381F001FC7FC140F14FF137F0003B5FC120F5A
387FF00F130012FCA25A141F7E6C133F387F81FF90B512FC6C14FE7E000713C73901FE01
FC1F1D7D9C23>97 D<EB3FF0EBFFFC000313FF5A5A381FE07FEA3F80387F003E007E90C7
FCA25AA25AA57EA2007E1307007FEB0F80141FEA3FC0391FF07F006CB5FC6C5B6C5BC613
F0EB3FC0191D7B9C23>99 D<ECFF8015C0A41407A7EB7F873801FFE74813F7000F13FF5A
13E0383F803F387F001F007E130FA2481307A25AA56C130FA2127E141F007F133F383F80
7FEBE0FF6CB512FE7E000313F76C13C738007F031F297EA823>I<EB3FC0EBFFF800037F
4813FF481480381FF07F393F801FC0EB000F007E130715E05AB6FCA415C000F8C8FC7EA2
007EEB01C0007FEB03E0383F800713E0391FF81FC06CB5FC6C14800001EBFE006C6C5AEB
1FE01B1D7D9C23>I<147F903801FFC0010713E05B5BEB3FCF140F90383E07C091C7FCA4
007FB51280B612C0A36C1480D8003EC7FCB3383FFFFE487FA36C5B1B297EA823>I<EC01
F090383F07FC9038FFDFFE000313FF5A48147E381FE1FE9038807E18393F003F00A2003E
7FA4003F5BA2381F807EEBE1FE6CB45A485B5C001E13C0013FC7FC90C8FC121F1340380F
FFFCECFF804814C04814F0397E0007F8007C130048147CA248143CA36C147C6C14FC007F
EB03F8EBE01F6CB512F0000F14C06C14800001EBFE0038003FF01F2E7E9D23>I<B47E7F
A41207A7EBC1FCEBC7FF01DF138090B512C0A29038FE0FE0EBF807EBF00313E0A313C0AD
39FFFE1FFF5CA38020297FA823>I<133813FEA5133890C7FCA6EA7FFC487EA3127FEA00
3EB3387FFFFEB6FCA36C13FE182A7AA923>I<14E0EB03F8A5EB00E01400A63803FFF048
13F8A37EC7FCB3AB13011238387C03F012FEEB0FE0B5FC14C06C13006C5AEA0FF815397D
A923>I<EA7F80487EA3127F1203A7ECFFFC13C1A313C0EC3F00147E5CEBC1F8EBC3F0EB
C7E0EBCFC0EBDFE0EBFFF0A2EBFCF8497EEBF07EEBE03E497E1580EC0FC01407EC03E039
7FFE0FFFB55AA36C487E20297FA823>I<EA7FFEB5FCA37EEA001FB3AD007FB512C0B612
E0A36C14C01B297CA823>I<397E1F01F039FF7FC7FC9038FFEFFE14FF6C80390FE1FE1F
EBC1FC01C07FEB80F8A2EB00F0AE3A7FE3FE3FE026FFF3FF13F0A3267FE3FE13E0241D81
9C23>I<38FF81FCEBC7FF01DF138090B512C0A23907FE0FE0EBF807EBF00313E0A313C0
AD39FFFE1FFF5CA380201D7F9C23>I<133F3801FFE0487F487F487F381FC0FE383F807F
383E001F007E1480007C130F00FC14C0481307A66C130FA2007C1480007E131F6CEB3F00
6D5A381FE1FE6CB45A6C5B6C5B6C5BD8003FC7FC1A1D7C9C23>I<38FF81FCEBC7FF01DF
13C090B512E015F03907FE0FF8EBF8039038F001FCEBE000A249137EA2153EA5157E7F15
FC7F14019038F803F89038FE0FF090B5FC15E001DF138001CF1300EBC3F801C0C7FCAAEA
FFFEA51F2C7F9C23>I<90383FC1C09038FFF3E0000313FB4813FF5A381FF07F383FC01F
387F000F127E14075A14035AA57E1407127E140F007F131FEA3F80381FE07F90B5FC1207
6C13FB6C13E338003F83EB0003AAEC7FFF91B51280A36E1300212C7E9C23>I<397FF00F
E039FFF87FF8ECFFFC13FB6CB5FCC613F8ECC078EC800091C7FC5BA25BA35BAA387FFFFC
B57EA36C5B1E1D7E9C23>I<3801FF9C000F13FE5A127FA2EAFF0000FC137E48133EA26C
131C6C1300EA7FF0383FFF80000F13E06C13F838007FFCEB01FEEB007F0070133F00F813
1F7E143F7E38FF80FFEBFFFE14FC14F814F000701380181D7B9C23>I<137013F8A7007F
B51280B612C0A36C1480D800F8C7FCACEC01C0EC03E0A3EBFC07140F9038FE1FC0EB7FFF
158090383FFE00EB0FFCEB07F01B257EA423>I<39FF807FC001C013E0A400071303B014
07140FEBE03F90B6FC7EA2C613F3EB3FC1201D7F9C23>I<39FFF03FFCA5390F8007C000
071480A2EBC00F00031400A26D5A0001131EA2EBF03E0000133CA2EBF87CEB7878A2EB7C
F8EB3CF0A2133F6D5AA36D5A6D5A1E1D7E9C23>I<397FF00FFE39FFF81FFFA3397FF00F
FE001FC712F86C14F0A57F390783E1E0EB87F1A3EB8FF90003EB79C013CFA2EBDF7BA2EB
DE3B00011480EBFE3FA2EBFC1FA23900F80F00201D7F9C23>I<397FF07FF039FFF8FFF8
A3397FF07FF03903E03E003801F03C3800F87CEB78F8EB7CF0EB3FE0131F6D5A5C130749
7E497E133DEB3CF0EB7878EBF07C0001133C497E3803C01F397FF03FF839FFF87FFCA339
7FF03FF81E1D7E9C23>I<EC1FE0ECFFF05B130715E090380FF00014C05CAE131F137FD8
7FFFC7FC485A5BA27F6C7EC66C7E131F130FAE8014F0903807FFE015F013017FEC1FE01C
347DAD23>123 D<EA7FC0EAFFF87F13FF7EC66C7E131F130FAE8014F0903807FFE06D13
F07FA25B4913E090380FF00014C05CAE131F137FD87FFFC7FCB5FC13FC5BEA7FC01C347D
AD23>125 D<3803C038380FF07C381FF8FCEA3FFF4813F8B512F038FC7FE038F83FC038
700F0016097AA823>I E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fb csbx10 12 40
/Fb 40 254 df<923B1FFF8001FFC00203B5D8F01F13F0021FDAF87F13FC027F91B67E90
2701FFF803ECC3FF49D9C001EBFE0790270FFE000349481380494815F84A4913F0494815
E0495AA201FF4C6C13004A6D6E5A735A70EC00707092C7FCAABA12FCA5C601E0C701E0C8
FCB3B0007F9026FFC07FEBFFF0A549467EC543>11 D<ED1FFF0203B512E0021F14F8027F
80903A01FFF803FE499038C0007F010F90390001FF80D91FFC497F4A5B495A495AA201FF
4A7F4A6D5BA3705B7090C7FC705A94C8FCA693387FFFE0B9FCA5C601E0C7FCB3B0007F90
26FFC07FEBFFC0A53A467EC540>I<B97E18F818FF19E019F8D8001F90C7000F13FE0500
7F061F7F06077F7213F084727F737E737E737EA2731380A27313C0A21BE085A21BF0A51B
F8A285A961A21BF0A41BE0A2611BC0A2611B801B00614F5A62197F4F5A06035B4E5B061F
5B95B5C7FC050F5BBA12F819E0198006FCC8FC18804D447CC358>68
D<BA12E0A419F0D8001F903880000F1700183F181F180F1807180319F81801A31800A3EE
01F0197CA419001603A31607160F163F92B5FCA5ED803F160F16071603A31601A693C9FC
AEB712FCA53E437CC248>70 D<B600C0051FB512F06F5FA26F5FA2D8001FF380006F17F7
A2DABFFCEE01E7A2DA9FFEEE03C7A2DA8FFFEE0787A202876DED0F07A302836D151EA202
816D153CA202806D1578A26F6C15F0A36F6CEC01E0A26F6CEC03C0A26F6CEC0780A26F6D
EB0F00A36F6D131EA26F6D5BA26F6D5BA2706C5BA2706C485AA3706C485AA2706C485AA2
70018FC7FCA27013DEA37013FCA2705BA2715AA2715A497EB600F0043FB612F0715AA271
5A71C7FC64447CC36D>77 D<B66C0207B6128081818181D8001F6D91260001FEC7FC735A
8181828202BF7F149F028F7F02877F8202837F148102807F6F7F836F7F6F7F816F7F6F7F
836F7F6F8082707F707F84707F707F82707F707F19807113C07113E0837113F07113F819
FC7113FE7113FF838484A284848484A28484197F193F191FA2496C160FB600F015071903
190119001A7851447CC35A>I<923803FFE0037F13FF0203B612E0021F15FC027F903800
7FFF902601FFF8010F13C04901C001017F010F496D13F84948C8EA3FFC49486F7E49486F
7E01FF8448496F7F4A81488548496F7FA248496F7FA2488591CA127F4885A348854983A4
00FF1A80AD007F1A006D5FA36C61A26E16FF6C61A36C6D4B5BA26C6D4B5B6C616E5D6C6D
4B5B6C6D4B5B6D6C4B90C7FC6D6C4B5A6D6D4A5A6D01E001035B010301F8010F13E06D01
FF017F5B6D6C90B6C8FC021F15FC020715F0DA007F91C9FC030713F049467AC456>I<B8
12FEEFFFF018FE727E85D8001F90C7001F13F005037F05007F727E727E841A801AC084A2
1AE0A91AC0A24E1380A21A00604E5A4E5A05035B051F13E092B75A96C7FC18F818C00380
CAFCB3A7B712F0A543447CC34E>I<DAFFF8130701079038FF800F013FECE01F49ECF83F
48B6EAFE7F48D9C00FB5FC3907FE00014848EB003FD81FF080160748488082484880A283
12FF83A27F837F7F7F01FF92C7FC6C13C014FEECFFE06C14FF16F06C15FC16FF6C16C06C
826C826C826C82013F81010F811303D9003F15801403DA001F14C01500163F040F13E016
03A200788100F881A3177F7EA218C07EA26CEEFF80A26D4A130013E06D4A5A01FE4A5A6D
6CEB1FF802FCEBFFF0486CB65AD8FC1F5DD8F80792C7FC48C614FC48010713C033467AC4
40>83 D<001FB9FC1980A402FCC7140002C05B91C75C01FC4A5B494A5B495C495E48484A
5B5E495E4C5B90C8B5FC95C7FC4B5B003E5C5F4B5B5D5FC8485B4B5BA24B5B92B5C8FC5C
5E4A5B5C5E4A5B5C5E4A5B5C5E91B5C7EA0F80495BA2495B495B49161F5D494915005B5D
49495C90B5FC92C8FC48495D5A4A5D48495C485E4A5C48495C4849143F48EEFFFE4A130F
B9FCA47E39447AC346>90 D<903801FFF8011FEBFF80017F14E090B612F8489038807FFC
3A03FE001FFE486CEB07FF486E7F0280806F7FA36F7F6C90C7FCA26C5AEA00F890C8FCA2
150F021FB5FC0103B6FC131F017F13C03901FFFC004813E0000F13804890C7FC485A5B48
5AA2485AA45DA26C6C5BED07BF6C6C010F13FC6CB490391F3FFFE06C9026C0FE1F13F06C
EBFFFC6CECF007C66CD9E00113E0010790C9FC342F7DAD38>97 D<EB7FC0B5FCA512037E
B1ED1FFC92B512C002C314F002CF14FC9139DFF01FFF9126FF800713809126FE000113C0
4A6D13E002F015F04A147F18F8173F18FCA2EF1FFEA318FFAB18FEA3173F18FCA218F817
7F6E15F06EECFFE06E4913C06E49138091263F800F1300903AFE1FE03FFE496CB55AD9F8
0314F049C61480C8D81FF8C7FC38467DC440>I<EC3FFE49B512E0010F14F8013F809039
7FF807FE9039FFE001FF484948138048018014C048495A485A121FA2485A6F1380A2007F
6E130049EB007C93C7FC12FFAC127F7FA2123FEE03E06C7E16076C6C15C06C150F6C6DEB
1F806C6DEB3F006C01F013FE90397FFE03FC6DB55A010F5C010314C09026003FFCC7FC2B
2F7CAD33>I<EFFF804BB5FCA5ED000782B1EC1FFC49B51283010F14E3013F14F390267F
FC07B5FC9038FFF0004801C0133F48497F4890C77E484880121F5B123FA2127F5BA312FF
AB127FA36C7EA2121F7F000F5D6C6C5C5E6C6D90B512C06CD9E00114FF39007FF80F6DB5
12E7010F14C7010314079026003FF0EBFC0038467CC440>I<EC1FFE49B512C0010714F0
011F14FC90397FFC0FFE903AFFE003FF804849C613C0485B4890C7EA7FE048ED3FF0485A
EE1FF8485AA2007F150F4915FCA212FFA390B7FCA317F801F8C9FCA5127FA27FA2003F16
38177C6C6C15FCA26C6CEC01F86C6D13036CED07F06C6DEB0FE06C01F0EB3FC0903A3FFE
01FF806DB5EAFE0001075C010014F0020F90C7FC2E2F7DAD35>I<902601FFF013FF010F
D9FE031380013FD9FF8F13C090B812E048D9C07F13BF489039001FF83F4848EB0FFC4848
EB07FE001F9238FF1FC0496DEB0F8094C7FC003F82A7001F93C7FCA26D5B000F5D6C6C49
5A6C6C495A6C9038C07FF04890B55A1680D8078F49C8FC018113F0D80F80CAFCA47F7F13
F890B612E016FEEEFFC06C16F0836C826C82831207481780D81FF8C77ED83FE014074848
020113C000FF8149157FA56D15FF007F17806D5C6C6C4A1300D81FFCEC0FFE6CB4EC3FFC
6C9039E001FFF8000190B612E06C6C1580010F02FCC7FCD9007F138033427DAC39>103
D<13FCEA03FF4813804813C0A24813E0A66C13C0A26C13806C1300EA00FC90C7FCA9EB7F
C0EA7FFFA512037EB3AFB6FCA518467CC520>105 D<EB7FC0B5FCA512037EB293387FFF
F0A593380FF8004C5AEE3FC04C5A4B48C7FCED03FC4B5A4B5AED3FE0ED7F804BC8FCECC1
FE14C7ECCFFF02DF7F91B57E82A202FD7F02F07F4A7F4A6C7E153F6F7E6F7F83816F7F6F
7F6F7F83167F707E83B66CB512FCA536457DC43C>107 D<EB7FC0B5FCA512037EB3B3B3
A3B61280A519457CC420>I<90287FC003FF80EB07FFB5011F01F0013F13E0037F6D90B5
7E92B56C4880913DC1FC1FFE03F83FFC913DC3E00FFF07C01FFE00039026C7C00790398F
800FFF6CD9CF00EC9E0002DE6D01BC7F02FC03F81580A24A5D4A5DA34A5DB3A7B600C1B6
0083B6FCA5582D7CAC5F>I<903A7FC003FF80B5011F13F0037F7F92B57E9139C1FC1FFE
9139C3E00FFF00039026C7C0077F6CEBCF0002DE7F02FC81A25C5CA35CB3A7B600C1B612
80A5392D7CAC40>I<EC1FFE49B512E0010714F8011F14FE903A7FF807FF809026FFE001
7F48903980007FE04890C76C7E48486E7E000F8249140F001F82A2003F824980007F1780
A400FF17C0AA007F1780A46C6C4A1300A2001F5EA26C6C4A5A00075E6D143F6C6D495AC6
9039E001FFC090267FF8075B6DB6C7FC010F14FC010114E09026001FFEC8FC322F7DAD39
>I<90397FC01FFCB590B512C002C314F002CF14FC9139DFF03FFF9126FF800F13800003
9026FE000313C06C496D13E002F015F04A7FEF7FF8A218FC173F18FEA3EF1FFFAB18FE17
3FA318FC177F18F817FF6E15F06E4913E06E4913C06E4913806E6C4813009238E07FFE02
EFB55A02E314F002E01480DB1FF8C7FC92C9FCADB612C0A538407DAC40>I<90397F803F
C0B5EBFFF0028313F8028713FC91388FE7FE91389F8FFF0003EB9E0F6C13BCA214F8A291
38F007FEED03FC9138E001F892C7FCA35CB3A5B612C0A5282D7DAC2F>114
D<90391FFE078090B512DF000314FF5A380FF803381FE000D83F80133F127F90C7121FA2
48140FA27FA201E090C7FC13F8EBFFC06C13FEECFFC06C14F015FC6C806C806C15800001
15C07E011F14E01301D9000713F014000078147F00F8143F151F6C140FA37E6C15E0151F
6D14C06D133F01F0EB7F809039FC03FF0090B55A00FC5CD8F83F13F0D8F00790C7FC242F
7CAD2D>I<EB01F0A51303A41307A2130FA2131FA2133F137F13FF1203000F90B512C0B7
FCA4C601F0C7FCB3A3ED01F0AA017FEB03E014F81507D93FFC13C090391FFE1F806DB512
006D5B01015B9038003FF024407EBE2D>I<D93FE0EC7FC0B549B5FCA50003EC00076C81
B3A85EA35E6C5DA26E013D7F017F02F9EBFF8090393FFC03F16DB512E16D14C101031401
9026003FFC91C7FC392E7CAC40>I<B690380FFFF8A5000301E0010013006C167C6E14FC
6C5E801601017F5D6E1303013F5D6E1307011F5D6E130F6D5DED801F6D92C7FC15C05E6D
143EEDE07E6D147CEDF0FC6D5C15F9027F5B15FF6E5BA36E5BA26E5BA26E90C8FCA26E5A
A26E5AA26E5A352C7DAB3C>I<007FB5398007FFFCA5000101F0C7EA7F806CEE3E006E14
7E017F157C8017FC013F5D6E1301011F5D6E13036D5DED80076D5DEDC00F6D5D15E0161F
6D92C7FC6F5A6D143EEDF87E027F137CEDFCFC023F5B15FF6E5BA36E5BA26E5BA26E5BA2
6E90C8FCA26E5AA2157CA215FC5D1401000F5C383FC003D87FE05B1407D8FFF05B140F5D
141F4AC9FC387FE07E495A383F87F8EBFFF06C5B00071380D801FCCAFC36407EAB3C>
121 D<001FB7128017C0A39026FE001F138001F05B49491300495C49495A48485A4A5B5E
4A5B003E5B4A5B5E4A90C7FC5CC7485A5D495B5B495B5D499038C007C05B491380150049
48130F01FF1580485B5C4849131F5A485B4A133F4849137F4815FF48EB000349011F1300
B8FCA37E2A2C7DAB33>I<0070EC038000F8EC07C0007EEC1F806CEC3F00D81FC013FE6C
6C485A3907F807F8EBFE1F6C6C485A6CEBFFE06C5C6D5B6D90C7FC6D5A6D5A6D5A6D5A6D
5A6D5A91C8FCA290391FFE078090B512DF000314FF5A380FF803381FE000D83F80133F12
7F90C7121FA248140FA27FA201E090C7FC13F8EBFFC06C13FEECFFC06C14F015FC6C806C
806C1580000115C07E011F14E01301D9000713F014000078147F00F8143F151F6C140FA3
7E6C15E0151F6D14C06D133F01F0EB7F809039FC03FF0090B55A00FC5CD8F83F13F0D8F0
0790C7FC24447CC22D>185 D<00071538486C147CD807E0495A6C6C495AD801FCEB0FE0
6C6C495A90397F807F80ECE1FFD93FF390C7FC6DB45A6D5B6D5B6D5B6D5B6D5B6E5A6EC8
FC141E140C91C9FCA4001FB7128017C0A39026FE001F138001F05B49491300495C49495A
48485A4A5B5E4A5B003E5B4A5B5E4A90C7FC5CC7485A5D495B5B495B5D499038C007C05B
49138015004948130F01FF1580485B5C4849131F5A485B4A133F4849137F4815FF48EB00
0349011F1300B8FCA37E2A437DC233>190 D<162016FCED03FE824B7F5D5DA25D5D94C7
FC4B5A4A5B4A13E016804A48C8FCEC0FF815E092C9FC140491CAFCA5903801FFF8011FEB
FF80017F14E090B612F8489038807FFC3A03FE001FFE486CEB07FF486E7F0280806F7FA3
6F7F6C90C7FCA26C5AEA00F890C8FCA2150F021FB5FC0103B6FC131F017F13C03901FFFC
004813E0000F13804890C7FC485A5B485AA2485AA45DA26C6C5BED07BF6C6C010F13FC6C
B490391F3FFFE06C9026C0FE1F13F06CEBFFFC6CECF007C66CD9E00113E0010790C9FC34
487DC638>225 D<0170EC038001F8EC07C0017EEC1F806DEC3F00D91FC013FE6D6C485A
903907F807F8ECFE1F6D6C485A6DEBFFE06D5C6E5B6E90C7FC6E5A6E5A6E5A6E5A6E5A6E
5A92C8FCA2EC3FFE49B512E0010F14F8013F8090397FF807FE9039FFE001FF4849481380
48018014C048495A485A121FA2485A6F1380A2007F6E130049EB007C93C7FC12FFAC127F
7FA2123FEE03E06C7E16076C6C15C06C150F6C6DEB1F806C6DEB3F006C01F013FE90397F
FE03FC6DB55A010F5C010314C09026003FFCC7FC2B447CC233>232
D<1608163FEEFF8017C04B13E05D5DA25D5D17C04B13804B1300EDFFF816E04A13804A48
C7FC15F815C06EC8FC91C9FCA5EC1FFE49B512C0010714F0011F14FC90397FFC0FFE903A
FFE003FF804849C613C0485B4890C7EA7FE048ED3FF0485AEE1FF8485AA2007F150F4915
FCA212FFA390B7FCA317F801F8C9FCA5127FA27FA2003F1638177C6C6C15FCA26C6CEC01
F86C6D13036CED07F06C6DEB0FE06C01F0EB3FC0903A3FFE01FF806DB5EAFE0001075C01
0014F0020F90C7FC2E487DC635>I<0170EC038001F8EC07C0017EEC1F806DEC3F00D91F
C013FE6D6C485A903907F807F8ECFE1F6D6C485A6DEBFFE06D5C6E5B6E90C7FC6E5A6E5A
6E5A6E5A6E5A6E5A92C8FCA2EC1FFE49B512C0010714F0011F14FC90397FFC0FFE903AFF
E003FF804849C613C0485B4890C7EA7FE048ED3FF0485AEE1FF8485AA2007F150F4915FC
A212FFA390B7FCA317F801F8C9FCA5127FA27FA2003F1638177C6C6C15FCA26C6CEC01F8
6C6D13036CED07F06C6DEB0FE06C01F0EB3FC0903A3FFE01FF806DB5EAFE0001075C0100
14F0020F90C7FC2E447DC235>236 D<1408143FECFF8015C04913E05B5BA25B5B15C049
1380491300EBFFF814E04813804848C7FC13F813C06CC8FCC9FCA6EB7FC0EA7FFFA51203
7EB3AFB6FCA51B477CC620>I<00071538486C147CD807E0EB01F86C6CEB03F0D801FCEB
0FE06C6CEB1FC090397F807F80ECE1FFD93FF313006DB45A6D5B6D5B6D5B6D5B6D5B6E5A
6EC7FC141E140C91C8FCA390397F803FC0B5EBFFF0028313F8028713FC91388FE7FE9138
9F8FFF0003EB9E0F6C13BCA214F8A29138F007FEED03FC9138E001F892C7FCA35CB3A5B6
12C0A528437DC22F>248 D<157F913801FFC04A7F4A7FA291380FC1F81580A515C16EB4
5AA26E5B6E5B6E6CC9FC92CAFCA7D93FE0EC7FC0B549B5FCA50003EC00076C81B3A85EA3
5E6C5DA26E013D7F017F02F9EBFF8090393FFC03F16DB512E16D14C1010314019026003F
FC91C7FC39467CC440>I<1602EE0FC0EE3FE0834C7E16FF5DA25D5D5F4B5B4B5B4B48C7
FC16F8ED7FE0EDFF804BC8FC15F0154092C9FCA7007FB5398007FFFCA5000101F0C7EA7F
806CEE3E006E147E017F157C8017FC013F5D6E1301011F5D6E13036D5DED80076D5DEDC0
0F6D5D15E0161F6D92C7FC6F5A6D143EEDF87E027F137CEDFCFC023F5B15FF6E5BA36E5B
A26E5BA26E5BA26E90C8FCA26E5AA2157CA215FC5D1401000F5C383FC003D87FE05B1407
D8FFF05B140F5D141F4AC9FC387FE07E495A383F87F8EBFFF06C5B00071380D801FCCAFC
365B7EC63C>253 D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fc csbx8 8 24
/Fc 24 249 df<14E01301EB07C0EB0F80EB1F00133E137E5B5B1201485AA2485AA2485A
A2121F5B123FA290C7FC5AA512FEAF127FA57E7FA2121F7F120FA26C7EA26C7EA26C7E12
007F137E133E7FEB0F80EB07C0EB01E01300134378B120>40 D<12E07E127C7E7E6C7E7F
6C7E12037F6C7EA26C7EA2137EA2137F7F1480A2131F14C0A5EB0FE0AFEB1FC0A5148013
3FA214005B137EA25BA2485AA2485A5B1207485A5B48C7FC123E5A12F05A13437CB120>
I<B712E016FE707E17E00001D9800013F8EE1FFCEE07FE707E7013807013C0EF7FE0173F
18F0A2171F18F8A318FCAA18F8A4EF3FF0A218E0177FEFFFC018805E04071300EE1FFCEE
FFF8B85A17C04CC7FC16E0362E7DAD3E>68 D<EC0FFF91B512F0010714FE903A1FFC03FF
80903A3FE0007FC0D9FFC0EB3FF04890C7EA0FF848486E7E48486E7EA248486E7E001F17
804980003F17C0A2007F17E049157FA300FF17F0AA007F17E0A26D15FFA2003F17C0A26C
6C4A1380A26C6C4A1300A26C6C4A5A6C6C4A5A6C6D495A6C6D495AD93FF0EBFFC090261F
FC035B0107B548C7FC010014F0020F90C8FC34307CAE3D>79 D<007FB548B512E0A4C690
3AE0000FE0006D6C5C6E495A6D6C49C7FC011F5C6D6C137E6E5B6DEB81F86D13836DEBC7
F0EDE7E06DEBFFC06E5B8093C8FC6E5A140F6E7E826E7F5C4A7F4A7F82EC3F3F91387E1F
FC02FE7F4A6C7E49487E49486C7F0107814A6C7F49487E49486D7E013F8149C76C7E017E
141F496E7EB5D8F001B512FCA4362E7DAD3D>88 D<EB7FF80003B5FC000F14C0391FE01F
F09038F007F86E7EA26E7EEA0FE0EA07C0C7FCA214FF133F48B5FC000713C1381FFC01EA
3FE0EA7FC0EAFF801300A3140313806C6C487E263FF03F13F8381FFFFE0007EBF87FC6EB
C01F251E7E9D28>97 D<EB0FFE90387FFFC048B512F03907FC07F8380FF00FEA1FE0123F
13C0007FEB07F090388003E091C7FC12FFA8127F7FA26C6C133CA26C6C137C6C6C13F839
07FE03F00001B512E06C6C138090380FFC001E1E7D9D24>99 D<ED0FC0EC03FFA4EC003F
ABEB0FF8EB7FFF48B6FC3807FC07380FF001391FE0007F003F143F5B127F5BA212FFA912
7F7F123F157F6C6C13FF380FF0032607FC0F13FC0001B512BF6CEBFE3FEB1FF0262E7DAD
2D>I<EB01F0EB03F8EB07FCEB0FFEA5EB07FCEB03F8EB01F090C7FCA6147EEB3FFEA413
01B3A9121C123E127FEAFF81EB83FCA2EB87F8387F0FF0383FFFE06C13803807FE00173C
84AE19>106 D<EA03F012FFA4120FAB913803FFF0A4913800FC00EC03F84A5AEC0FC0EC
3F804AC7FC14FCEBF1F8EBF7FCEBFFFE80A2497F9038F87FC0496C7E496C7E6E7EA26E7E
6E7E6E7E6E138026FFFE0313FCA4262E7DAD2B>I<2707E00FF8EB1FF000FFD97FFEEBFF
FC01E1B5008313FF9028E7E07FCFC01380903BEF803FDF007F260FFE0013FC031FEC3FC0
495C495CA2495CB0B53B01FFFE03FFFCA43E1E7C9D45>109 D<3907E01FF000FFEB7FFC
01E1B5FCD9E7E013809038EF807F260FFE0013C049133FA25BA25BB0B53803FFFCA4261E
7C9D2D>I<EB07FE90387FFFE048B512F83903FC03FC3907F000FE4848137F4848EB3F80
003F15C049131F007F15E0A200FF15F0A8007F15E0A26D133F003F15C0001F15806D137F
6C6CEBFF003903FC03FC6CB55A6C6C13E0D907FEC7FC241E7E9D29>I<3903F03FE039FF
F1FFFC01F713FFD9FFC013809039FE007FC0D80FFCEB3FE049EB1FF05BED0FF8A216FC15
07A8ED0FF8A3ED1FF07F6DEB3FE06DEB7FC09039FF81FF809039F7FFFE0001F113F89038
F07FC091C8FCA9B5FCA4262B7D9D2D>I<3807E07E39FFE1FF8001E313E0EBE78F9038EF
1FF0EA0FFE13FCA29038F80FE0EC07C091C7FC5BAFB57EA41C1E7D9D22>114
D<3801FF8E000713FE121FEA3F00007C137E0078133E00F8131EA27EB490C7FC13F0EBFF
806C13E06C13F86C13FE7E00037FD8003F13801300143F00F0131F140F7EA26CEB1F007E
38FF807EEBFFFC00FB13F000E01380191E7D9D20>I<D803F0EB0FC000FFEB03FFA4000F
EB003FB1157FA215FF00075BD9F80713FC6CB512BFC6EBFE3FEB3FF0261E7C9D2D>117
D<B5EB3FFCA4D80FF8EB07C0000715806D130F000315006D5B0001141E6D133E6C143CEC
807C017F1378ECC0F8013F5B14E1011F5B14F3010F5B14FF6D5BA26D90C7FCA26D5AA26D
5AA21478A25CA2EA3C01007E5BEAFF03495A5C011FC8FCEA7A3EEA7FFC6C5AEA0FC0262B
7E9D2B>121 D<003FB512FCA39038C00FF89038001FF0003E133F48EB7FE0ECFFC04913
8000781400495A1307C6485A495A5C495A017F133CEBFFC048138014004848137C120748
5A484813F8485AEBE003387FC00FB6FCA31E1E7E9D24>I<000EEB01C0001FEB03E0390F
C00FC03907E01F803903F87F003801FCFE6CB45A6D5A6D5A6D5A6D5A6D5A6DC7FC90C8FC
A2003FB512FCA39038C00FF89038001FF0003E133F48EB7FE0ECFFC04913800078140049
5A1307C6485A495A5C495A017F133CEBFFC048138014004848137C1207485A484813F848
5AEBE003387FC00FB6FCA31E2D7EAC24>190 D<EC01C04A7E4A7E140F4A7E143F4A5A4A
5A495B4948C7FCEB07F8EB03C06DC8FC90C9FCA4EB7FF80003B5FC000F14C0391FE01FF0
9038F007F86E7EA26E7EEA0FE0EA07C0C7FCA214FF133F48B5FC000713C1381FFC01EA3F
E0EA7FC0EAFF801300A3140313806C6C487E263FF03F13F8381FFFFE0007EBF87FC6EBC0
1F252F7EAE28>225 D<D803801370486C13F83903F003F03901F807E03900FE1FC09038
7F3F8090383FFF006D5A6D5A6D5A6D5A6D5A6D5A91C7FCA2EB0FFE90387FFFC048B512F0
3907FC07F8380FF00FEA1FE0123F13C0007FEB07F090388003E091C7FC12FFA8127F7FA2
6C6C133CA26C6C137C6C6C13F83907FE03F00001B512E06C6C138090380FFC001E2D7DAC
24>232 D<130E131FEB3F80137FEBFFC05A481380481300485AEA1FF0EA3FC0001EC7FC
1208C8FCA4EA03F012FFA4120FB3A3B5FCA4122F7CAE17>237 D<001CEB0380003EEB07
C0391F801F80390FC03F003807F0FE3803F9FC6CB45A6C5B6D5A6D5A6D5A6DC7FC130690
C8FCA23807E07E39FFE1FF8001E313E0EBE78F9038EF1FF0EA0FFE13FCA29038F80FE0EC
07C091C7FC5BAFB57EA41C2D7DAC22>248 D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fd csr8 8 54
/Fd 54 254 df<9138FF807E01079038E1FF80903A1F807FC3C0D93E00EB87E049EBFF07
4913FE485A00039138FC018049017CC7FCAAB712FCA22703E0007CC7FCB3A6486C13FE3A
7FFF0FFFF0A22B2F7FAE29>11 D<14FF010713E090381F80F090383E003849137C4913FC
485A1203491378153092C7FCA7157CB612FCA23803E000157CB3A5486C13FE3A7FFF0FFF
E0A2232F7FAE27>I<13031307130E131C1338137013F0EA01E013C01203EA0780A2EA0F
00A2121EA35AA45AA512F8A25AAB7EA21278A57EA47EA37EA2EA0780A2EA03C0120113E0
EA00F013701338131C130E1307130310437AB11B>40 D<12C07E12707E7E7E120FEA0780
120313C0EA01E0A2EA00F0A21378A3133CA4131EA5131FA2130FAB131FA2131EA5133CA4
1378A313F0A2EA01E0A2EA03C013801207EA0F00120E5A5A5A5A5A10437CB11B>I<123C
127EB4FCA21380A2127F123D1201A312031300A25A1206120E5A5A5A126009157A8714>
44 D<B512C0A412047F9018>I<123C127E12FFA4127E123C08087A8714>I<15C0140114
031580A214071500A25C140EA2141E141CA2143C143814781470A214F05CA213015CA213
035C130791C7FCA25B130EA2131E131CA2133C1338A21378137013F05BA212015BA21203
5BA2120790C8FC5A120EA2121E121CA2123C1238A212781270A212F05AA21A437CB123>
I<130C133C137CEA03FC12FFEAFC7C1200B3B113FE387FFFFEA2172C7AAB23>49
D<EB7F803801FFF0380780FC380E003F48EB1F8048EB0FC05A0060EB07E012F000FC14F0
7E1403A3007C1307C7FCA215E0140F15C0141F1580EC3F00147E147C5C495A495A495A49
5A011EC7FC5B5B4913305B485A4848136048C7FC000E14E0001FB5FC5A4814C0B6FCA21C
2C7DAB23>I<B612F815FF3A03F8001FE00001EC03F0ED00F8167E82EE1F80160F17C0EE
07E0A2EE03F0A217F81601A317FCAA17F8A3EE03F0A217E0160717C0160FEE1F80EE3F00
167E5EED03F00003EC1FE0B7128003F8C7FC2E2D7DAC36>68 D<B712FEA23903F8000100
01EC003E828282A282A3178016011518A293C7FCA31538157815F890B5FCA2EBF8001578
15381518A21760A392C712C0A4160117801603A21607160F163F0003913801FF00B8FCA2
2B2D7EAC30>I<DA1FF013C09138FFFE01903903F00F8390390F8001E3013FC71277017C
143F4848141F4848140F48481407A248481403121F491401123F90C8FC481500A300FE16
00A992381FFFFEA2007F9138001FE0EE0FC0A27E7F121F7F120F6C7EA26C7E6C6C141FEA
007C013F143FD90F8013F3903903F007C10100B51200DA1FF813002F2F7CAD37>71
D<D8FFF8903803FFFC7F00019138003FC06DEC0F006D1406EBBF80A2EB9FC0EB8FE01387
80EB83F8138180EB80FE147E147FEC3F80EC1FC0140F15E0EC07F0140315F8EC01FC1400
15FE157FED3F86151F16C6ED0FE6150716F6ED03FE1501A21500167E163EA2486C141ED8
0FF0140EB5FC16062E2D7DAC35>78 D<B612FCEDFF803A03F8000FE00001EC03F0ED00F8
82167E167F821780A617005E167E5E5EED03F0ED0FE090B6128003FCC7FC01F8C9FCB248
7EB512F0A2292D7EAC30>80 D<B539F003FFFCA2D803FCC7EA3FC06C48EC0F001606B3AB
160E0000150C7F161C017C1418017E14386D5C6D146090390F8001E0903907E003809026
01F80FC7FC9038007FFCEC0FF02E2E7DAC35>85 D<13FF000713C0380F01F0381C00F800
3F137C80A2143F001E7FC7FCA4EB07FF137F3801FE1FEA07F0EA1FC0EA3F80EA7F00127E
00FE14065AA3143F7E007E137F007FEBEF8C391F83C7FC390FFF03F83901FC01E01F207D
9E23>97 D<EA07C012FFA2120F1207AC14FE9038C7FF809038CF03E09038DC01F09038F8
007C49137E49133E497F1680A2150F16C0A9ED1F80A216005D6D133E6D5B01B05B9038BC
01F090380E07E0390607FF80260001FCC7FC222F7EAD27>I<EB1FE0EB7FFC3801F01E38
03E0073907C01F80EA0F80EA1F005A003EEB0F00007E90C7FCA2127C12FCA9127EA215C0
7E6C130101801380380FC0033907E007003801F03E38007FF8EB1FC01A207E9E1F>I<15
F8141FA214011400ACEB0FE0EB7FF83801F81E3803E0073807C003380F8001EA1F004813
00123E127EA25AA9127C127EA2003E13017EEB8003000F13073903E00EFC3A01F03CFFC0
38007FF090391FC0F800222F7EAD27>I<EB1F80EBFFF03803E0783807C03E380F801E38
1F001FEC0F80123E007E130715C0127C12FCA3B6FCA200FCC8FCA5127EA2003E14C0123F
6C1301390F80038001C013003803E00F3801F03C38007FF8EB1FC01A207E9E1F>I<EB03
F0EB0FFCEB3E1EEB7C3F13F8EA01F0A23803E00C1400AAB512E0A23803E000B3A6487E38
7FFF80A2182F7FAE16>I<013F13F89038FFC3FE3903E1FF1E3807807C000F140C391F00
3E00A2003E7FA76C133EA26C6C5A00071378380FE1F0380CFFC0D81C3FC7FC90C8FCA312
1E121F380FFFF814FF6C14C04814F0391E0007F848130048147C12F848143CA46C147C00
7C14F86CEB01F06CEB03E03907E01F803901FFFE0038003FF01F2D7E9D23>I<EA07C012
FFA2120F1207AC14FE9038C3FF809038C703E09038DE01F013F8496C7EA25BA25BB2486C
487E3AFFFE1FFFC0A2222E7EAD27>I<EA0780EA0FC0EA1FE0A4EA0FC0EA0780C7FCA8EA
07C012FFA2120F1207B3A5EA0FE0EAFFFCA20E2E7EAD14>I<130FEB1F80EB3FC0A4EB1F
80EB0F0090C7FCA8EB07C013FFA2130F1307B3AD1230127838FC0F80A21400485AEA783E
EA3FF8EA07E0123C83AD16>I<EA07C012FFA2120F1207ADEC1FFEA2EC0FF0EC07C05D02
0EC7FC5C5C5C5CEBC3C013C7EBCFE0EBDFF013F9EBF0F8497EEBC07E143E80816E7E1407
6E7E816E7E486C487E3AFFFE07FF80A2212E7EAD25>I<EA07C012FFA2120F1207B3B3A3
EA0FE0EAFFFEA20F2E7EAD14>I<2607C07FEB07F03BFFC3FFC03FFC903AC783F0783F3C
0FCE01F8E01F803B07DC00F9C00F01F8D9FF8013C04990387F000749137EA249137CB248
6C01FEEB0FE03CFFFE0FFFE0FFFEA2371E7E9D3C>I<3807C0FE39FFC3FF809038C703E0
390FDE01F0EA07F8496C7EA25BA25BB2486C487E3AFFFE1FFFC0A2221E7E9D27>I<EB1F
E0EB7FF83801F03E3803C00F3907800780390F0003C04814E0003EEB01F0A248EB00F8A3
00FC14FCA9007C14F8A26CEB01F0A26CEB03E0A2390F8007C03907C00F803901F03E0038
007FF8EB1FE01E207E9E23>I<3807C0FE39FFC7FF809038CF03E0390FDC01F03907F800
FC49137E49133E49133FED1F80A3ED0FC0A8151F1680A2ED3F00A26D137E6D137C5D9038
FC01F09038CE07E09038C7FF80D9C1FCC7FC01C0C8FCA9487EEAFFFEA2222B7E9D27>I<
380781F838FF87FEEB8E3FEA0F9CEA07B813B0EBF01EEBE000A45BB0487EB5FCA2181E7E
9D1C>114 D<3801FE183807FFB8381E01F8EA3C00481378481338A21418A27E7EB41300
EA7FF06CB4FC6C13C06C13F0000113F838001FFC130138C0007E143EA26C131EA27EA26C
133CA26C137838FF01F038E3FFC000C0130017207E9E1C>I<1360A413E0A312011203A2
1207121FB512F0A23803E000AF1418A714383801F03014703800F860EB3FE0EB0F80152A
7FA81B>I<D807C013F800FF131FA2000F130100071300B21401A314033803E007EC0EFC
3A01F81CFFC038007FF890391FE0F800221F7E9D27>I<3AFFFC01FFC0A23A0FE0007E00
0007147C15380003143015706C6C1360A26C6C5BA390387C0180A26D48C7FCA2EB3F07EB
1F06A2EB0F8CA214DCEB07D8A2EB03F0A36D5AA26D5A221E7F9C25>I<3AFFFC07FF80A2
3A0FF003FC000003EB01F0000114C06D485A000091C7FCEB7C06EB3E0E6D5A14B8EB0FB0
EB07E013036D7E497E1307EB067C497EEB1C1F01387FEB700F496C7E6E7ED803C07F0007
6D7E391FE003FC3AFFF007FFC0A2221D7F9C25>120 D<3AFFFC01FFC0A23A0FE0007E00
0007147C1538000314306D137000011460A26C6C5BA2EBFC01017C5BEB7E03013E90C7FC
A2EB1F06A2148EEB0F8CA2EB07D8A2EB03F0A36D5AA26D5AA2495AA2130391C8FC1278EA
FC06A25B131CEA7838EA7070EA3FE0EA0F80222B7F9C25>I<003FB51280A2EB003F003C
14000038137E00305BEA700100605B495A495A130F00005B495A49C7FC5B137E9038FC01
80EA01F8120313F03807E003EA0FC0001F1400138048485A007E5B00FE133FB6FCA2191D
7E9C1F>I<38078008380FE01C381FF838383FFFF038707FE038E01FC03840078016077A
AC23>126 D<0040130800F0133C007813786C13F0381F03E0380F87C03807CF803803FF
006C5A6C5A1378133090C7FCA23801FE183807FFB8381E01F8EA3C00481378481338A214
18A27E7EB41300EA7FF06CB4FC6C13C06C13F0000113F838001FFC130138C0007E143EA2
6C131EA27EA26C133CA26C137838FF01F038E3FFC000C01300172E7EAC1C>185
D<143C147E14FF1580A3147F143DEB6001140315005CEBE006140E5C0001137800031360
91C7FC120F121FB512F0A2D803E0C7FCAF1418A714383801F03014703800F860EB3FE0EB
0F8019327FB01B>187 D<00101302003C130F6C131E6C5B3807C0F83803E1F03801F3E0
6CB45A6D5A6DC7FC131E130C90C8FCA4003FB51280A2EB003F003C14000038137E00305B
EA700100605B495A495A130F00005B495A49C7FC5B137E9038FC0180EA01F8120313F038
07E003EA0FC0001F1400138048485A007E5B00FE133FB6FCA2192D7EAC1F>190
D<143C147C14FCA2495A495AEB07C0495A49C7FC131C5B131090C8FCA313FF000713C038
0F01F0381C00F8003F137C80A2143F001E7FC7FCA4EB07FF137F3801FE1FEA07F0EA1FC0
EA3F80EA7F00127E00FE14065AA3143F7E007E137F007FEBEF8C391F83C7FC390FFF03F8
3901FC01E01F2F7DAD23>225 D<00085B001EEB07806CEB0F003807801E3803E07C6C6C
5A3800F9F0EB7FE06D5A6D5A6DC7FC130690C8FCA2EB1FE0EB7FFC3801F01E3803E00739
07C01F80EA0F80EA1F005A003EEB0F00007E90C7FCA2127C12FCA9127EA215C07E6C1301
01801380380FC0033907E007003801F03E38007FF8EB1FC01A2E7EAC1F>232
D<140F5C5CA2147E5CEB01F0495A495A91C7FC130E130490C8FCA3EB1F80EBFFF03803E0
783807C03E380F801E381F001FEC0F80123E007E130715C0127C12FCA3B6FCA200FCC8FC
A5127EA2003E14C0123F6C1301390F80038001C013003803E00F3801F03C38007FF8EB1F
C01A2F7EAD1F>I<00085B001EEB07806CEB0F003807801E3803E07C6C6C5A3800F9F0EB
7FE06D5A6D5A6DC7FC130690C8FCA2EB1F80EBFFF03803E0783807C03E380F801E381F00
1FEC0F80123E007E130715C0127C12FCA3B6FCA200FCC8FCA5127EA2003E14C0123F6C13
01390F80038001C013003803E00F3801F03C38007FF8EB1FC01A2E7EAC1F>236
D<131E133E137EA213FCEA01F8EA03E0EA07C0EA0F80EA0E005A1208C7FCA4EA07C012FF
A2120F1207B3A5EA0FE0EAFFFCA20F2E7EAD14>I<163C167E16FF03F81380141FA20201
137F0200133D1601160317005E1606160E5E1678166093C7FCA2EB0FE0EB7FF83801F81E
3803E0073807C003380F8001EA1F00481300123E127EA25AA9127C127EA2003E13017EEB
8003000F13073903E00EFC3A01F03CFFC038007FF090261FC0F8C7FC29327EB027>239
D<00085B001EEB07806C49C7FC3807801E3803E07C6C6C5A3800F9F0EB7FE06D5A6D5A6D
C8FC130690C9FCA33807C0FE39FFC3FF809038C703E0390FDE01F0EA07F8496C7EA25BA2
5BB2486C487E3AFFFE1FFFC0A2222D7EAC27>242 D<00101302003C130F6C131E6C133C
3807C0F83803E1F03801F3E03800FFC0EB7F80EB3F00131E130C90C7FCA3380781F838FF
87FEEB8E3FEA0F9CEA07B813B0EBF01EEBE000A45BB0487EB5FCA2182D7EAC1C>248
D<EB03F0497EEB0E1CEB1806EB3807EB3003A4EB3807EB1806EB0E1CEB07F86D5A90C9FC
A2D807C013F800FF131FA2000F130100071300B21401A314033803E007EC0EFC3A01F81C
FFC038007FF890391FE0F800222F7EAD27>I<EC03C01407140FA24A5A4AC7FC147C5C49
5A14C0495A6DC8FC90C9FCA53AFFFC01FFC0A23A0FE0007E000007147C1538000314306D
137000011460A26C6C5BA2EBFC01017C5BEB7E03013E90C7FCA2EB1F06A2148EEB0F8CA2
EB07D8A2EB03F0A36D5AA26D5AA2495AA2130391C8FC1278EAFC06A25B131CEA7838EA70
70EA3FE0EA0F80223C7FAD25>253 D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fe csbx10 14.4 15
/Fe 15 238 df<BA12C019FEF1FFC01AF81AFE747ED8000701F8C7000F14E0060080071F
13FC07077F07017F7380747F081F7F8886747F747FA2747FA288861D80A2871DC0A31DE0
A4871DF0AF1DE063A41DC0A398B51280A31D0062646264505BA2505B505B505B505B4FB5
C7FC4F5B070F5B077F5B0607B512E0BC128098C8FC1AF81AE04FC9FC19C05C527CD169>
68 D<B912FCF0FFE019FEF1FFC01AF01AFCD8000701F8C7003F13FF060380060080073F
7F737F737F87737FA2737FA388A899C8FCA263616361634F5B4F5B96B55A060391C9FC06
3F5B92B812F81AC097CAFC19FC19FF9226F8000180DD003F13E0060F7F727F727F86727F
A27280A2737FA587A587A575EB0780F50FC0A28773151FA2736D148075133FB800C06DEC
807F739138C1FF000701ECFFFE735D083F5C080714E0CE001F138062537CD167>82
D<91383FFFC00107B512FC011FECFF80017F15E090B77E48D9E0077F48D9800013FE486D
EB3FFF82486D81707F8284A2707F6C5BA26C5BC648C7FC90C8FCA44BB5FC4AB6FC143F49
B7FC130F013FEBFE0390B512E0000314004813FC4813F0485B485B5C4890C7FCA2B5FC5B
A35EA27F6C5D5E6E497F6C6D017E13FE6C6D4848EBFFF86C9026FC0FF814FC6C90B5487E
0001EDC03F6C6CEC800F011F9026FE000313F8010101E090C8FC3E387CB643>97
D<943801FFC00407B5FCA6EE001F1707B3A3913803FFC0023F13FC49B6FC010715C74915
F7013FD9E03FB5FC49EB0007D9FFFC130148496D7E484980484980484980A25A5C5AA25A
91C8FCA3B5FCAD7EA46C7FA27EA26C6D5CA26C6D5C6C5E6C6D49B5FC6C6D4914F0D97FFE
010FECFFC0903A3FFF807FEF6D90B512CF0107158F6DECFE0FD9007F13F00207018049C7
FC42547BD24C>100 D<913803FFE0023F13FE91B612C0010381010F15F84901C07F903A
7FFE001FFE49486D7E48496D138048496D13C0484915E048814A15F048815C48EE7FF8A2
5A91C8FC18FC173FB5FCA391B7FCA418F891CAFCA57EA3807EA218786C6D15FC17016C7F
6CEE03F86C6D14076E15F06C6DEC1FE06C6C6C143F6D6C6CEBFFC06DD9F0071300010790
B55A010115F86D6C14E0021F1480020001F8C7FC36387CB63F>I<ED0FFF92B512C00207
14F0021F14F8027F14FC9139FFFC1FFE49EBF03F4901C013FF49495A491300495AA2495A
A2017FEC3FFE4AEB1FFCEE0FF8EE07F093C7FCADB712F0A626007FFCC8FCB3B3A5007FB6
FCA630547CD32A>I<137F3801FFC0487F487F487FA2487FA76C5BA26C5B6C5B6C5B6C6C
C7FC90C8FCABEB1FF8B5FCA612017EB3B3A4B612F0A61C547BD326>105
D<EB3FF8B5FCA61203C6FCB3A44CB512FEA69326001FFCC7FCEF3FF04D5A4D5A4C90C8FC
EE07FE4C5A4C5AEE3FE0EEFFC04B5B4B48C9FCED0FFC4B5A153F4B7E9138F9FFFE02FB7F
91B67EA28383038F7F03077F14FE4A6C7F4A6C7F6F7F707FA2707F707F707F707FA2707F
707F707F717F8385B6D8F803B612C0A642537CD249>107 D<D93FF8EB1FFEB591B512E0
030314F8030F804B8092393FE07FFF92267F001F7F000314FCC6D9F9F86D7FECFBE014FF
4B6D7F5D92C7FCA35CA35CB3ABB6D8FC07B612E0A643367BB54C>110
D<EDFFF0021FEBFF80027F14E00103B612FC4981011F9039C03FFF8090273FFE00077FD9
7FF801017F49486D7F48496E7E488348496E7E48834A80481880A24818C091C87EA24818
E0A4B517F0AB6C18E0A46C18C06E5CA26C1880A26C6D4A13006C5F6E147F6C5F6C6D4A5A
6C01FC01035B6D6C495B90271FFFC03F13806D90B6C7FC010315FC010015F0021F148002
0101F8C8FC3C387CB645>I<D93FF8EB7FF8B50107B57E031F14F0037F14FC02F9B67E02
FB01807F9127FFFC003F13C0000302F0010F7FC602C06D7F5D4AC76C7F717F5C717FA285
841A80A47213C0AD4E1380A31A0095B5FCA2615F616E5C6E5E6F495B6F495B6F495B03F8
017F5BDBFF01B5C7FC02FD90B512FCDAFC7F5C6F14E0030791C8FC030013F093CAFCB0B6
12FCA6424D7CB54C>I<90393FF001FFB5010F13E04B13F84B7F4B7F9238FF1FFFECF1FC
00039026F3F03F1380C6EBF7E015C0ECFF80A215007013005C705AEE03F84A90C8FCA45C
B3A9B612FEA631367CB539>114 D<143FA65CA45CA25BA35B5BA25B5B5B90B5FC5A000F
91B5FCB8FCA5D8003F90C8FCB3A8EE07E0AB6DEC0FC01580161F6D01C01380163F6D9038
F07F006DEBFFFE6D5C6D6C5B021F13E0020313802B4D7ECB35>116
D<011CED0380011E1507D93F80EC1FC06D6CEC3F80D90FF0ECFF006E5BD907FEEB07FE6D
6C495A6D9038C03FF86D6D485A91397FF9FFE06EB55A6E5C6E91C7FC6E5B6E5B6E5B6E5B
A26F5A6F5A6F5A6FC8FC150692C9FCA2913803FFF0023FEBFF8091B612E0010315F8010F
81499038C01FFE903A7FFE0007FF4948491380485B48494913C05C5A485BA2485B701380
5A70130048ED01FC91CAFCA3B5FCAD7E80A27EA2EF07E06C7F170F6C6D15C06C161F6E15
806C6D143F6C6DEC7F006C6D14FE903A7FFF8003FC6D9038F01FF8010F90B55A6D5D0101
1580D9003F49C7FC020313E033527BD03D>232 D<EC0180EC07F0EC1FF815FCEC3FFE14
7F14FF15FF5B5B4913FEA24913FC4913F84913E0158090387FFE00EBFFF84813E0481380
49C7FCEA01F813E0C9FCA8EB1FF8B5FCA612017EB3B3A4B612F0A620557BD426>237
D E
%EndDVIPSBitmapFont
end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 600dpi
TeXDict begin
%%PaperSize: A4
%%EndSetup
%%Page: 1 1
1 0 bop -247 -364 a Fe(Referen\350n\355)47 b(k)l(arta)e(pro)g(Dired)-50
-256 y Fd(\(ur\350eno)25 b(pro)f(Dired)f(v)g(GNU)h(Emacsu)f(21.x\))-63
-176 y(P\370\355k)n(azy)h(ozna\350en\351)i Fc(\(D)n(X\))d
Fd(vy\276aduj\355)h(dired-x)-450 20 y Fb(Spu\271t\354n\355)36
b(a)i(uk)m(on\350en\355)f(Dired)-450 177 y Fd(spu\271t\354n\355)24
b(dired)1098 b Fa(C-x)36 b(d)-450 257 y Fd(spu\271t\354n\355)23
b(dired)f(v)h(adres\341\370i)f(s)g(aktu\341ln\355m)g(soub)r(orem)70
b Fa(C-x)36 b(C-j)g Fc(\(D)n(X\))-450 336 y Fd(uk)n(on\350en\355)25
b(dired)1079 b Fa(q)-450 530 y Fb(P\370\355k)m(azy)39
b(pro)f(p\370esun)m(y)-450 687 y Fd(zp)r(\354t)25 b(na)f(p\370edc)n
(hoz\355)h(\370\341dku)783 b Fa(p)-450 767 y Fd(vp\370ed)24
b(na)g(n\341sleduj\355c\355)f(\370\341dku)709 b Fa(n)-450
847 y Fd(nahoru)24 b(na)g(p\370edc)n(hoz\355)h(adres\341\370)653
b Fa(<)-450 926 y Fd(dol\371)24 b(na)g(n\341sleduj\355c\355)f
(adres\341\370)704 b Fa(>)-450 1006 y Fd(na)24 b(dal\271\355)f
(ozna\350en)n(\375)j(soub)r(or)759 b Fa(M-})-450 1086
y Fd(na)24 b(p\370edc)n(hoz\355)h(ozna\350en)n(\375)h(soub)r(or)608
b Fa(M-{)-450 1165 y Fd(zp)r(\354t)25 b(na)f(p\370edc)n(hoz\355)h(p)r
(o)r(dadres\341\370)620 b Fa(M-C-p)-450 1245 y Fd(vp\370ed)24
b(na)g(dal\271\355)f(p)r(o)r(dadres\341\370)728 b Fa(M-C-n)-450
1325 y Fd(na)24 b(nad\370azen)n(\375)h(adres\341\370)871
b Fa(^)-450 1405 y Fd(jdi)23 b(na)h(prvn\355)f(p)r(o)r(dadres\341\370)
801 b Fa(M-C-d)-450 1597 y Fb(P\370\355k)m(azy)39 b(p)s(omo)s(c\355)g
(m)m(y\271i)-450 1754 y Fd(otev\370i)24 b(soub)r(or)981
b Fa(Mouse_Button_2)-450 1833 y Fd(zobraz)25 b(men)n(u)873
b Fa(Control-Mouse_Button_3)-450 2017 y Fb(Ok)m(am\276it\351)38
b(ak)m(ce)f(nad)g(soub)s(ory)-450 2173 y Fd(otev\370i)24
b(aktu\341ln\355)g(soub)r(or)846 b Fa(f)-450 2253 y Fd(otev\370i)24
b(aktu\341ln\355)g(soub)r(or)g(p)r(ouze)h(pro)f(\350ten\355)346
b Fa(v)-450 2333 y Fd(otev\370i)24 b(aktu\341ln\355)g(soub)r(or)g(v)g
(jin\351m)e(okn\354)425 b Fa(o)-450 2413 y Fd(otev\370i)24
b(aktu\341ln\355)g(soub)r(or)g(v)g(jin\351m)e(r\341mci)393
b Fa(w)-450 2492 y Fd(zobraz)25 b(aktu\341ln\355)f(soub)r(or)824
b Fa(C-u)36 b(o)-450 2572 y Fd(vytv)n(o\370)25 b(no)n(v\375)f(p)r(o)r
(dadres\341\370)795 b Fa(+)-450 2652 y Fd(p)r(oro)n(vnej)24
b(soub)r(or)g(p)r(o)r(d)g(kurzorem)f(s)g(ozna\350en)n(\375m)170
b Fa(=)-450 2844 y Fb(Zna\350en\355)36 b(a)i(o)s(dzna\350en\355)f(soub)
s(or\371)-450 3001 y Fd(ozna\350)22 b(soub)r(or)f(neb)r(o)g(p)r(o)r
(dadres\341\370)g(pro)g(dal\271\355)f(p\370\355k)n(azy)71
b Fa(m)-450 3081 y Fd(o)r(dzna\350)25 b(soub)r(or)f(neb)r(o)h(soub)r
(ory)f(p)r(o)r(dadres\341\370e)253 b Fa(u)-450 3160 y
Fd(zru\271)23 b(ozna\350en\355)j(v\271ec)n(h)e(soub)r(or\371)g(v)g
(bu\013eru)359 b Fa(M-delete)-450 3240 y Fd(ozna\350)25
b(soub)r(ory)f(se)g(zadanou)h(p\370\355p)r(onou)430 b
Fa(*)36 b(.)-450 3320 y Fd(ozna\350)25 b(v\271ec)n(hn)n(y)g
(adres\341\370e)816 b Fa(*)36 b(/)-450 3399 y Fd(ozna\350)25
b(v\271ec)n(hn)n(y)g(sym)n(b)r(olic)n(k)n(\351)e(o)r(dk)n(azy)500
b Fa(*)36 b(@)-450 3479 y Fd(ozna\350)25 b(v\271ec)n(hn)n(y)g
(spustiteln\351)g(soub)r(ory)474 b Fa(*)36 b(*)-450 3559
y Fd(in)n(v)n(ertuj)24 b(ozna\350en\355)1006 b Fa(*)36
b(t)-450 3638 y Fd(ozna\350)20 b(v\271ec)n(hn)n(y)h(soub)r(ory)e(v)g
(aktu\341ln\355m)f(p)r(o)r(dadres\341\370i)71 b Fa(*)36
b(s)-450 3718 y Fd(ozna\350)25 b(soub)r(ory)f(vyho)n(vuj\355c\355)g
(regul\341rn\355m)n(u)e(v\375razu)127 b Fa(*)36 b(\045)-450
3798 y Fd(zm\354\362)23 b(zna\350)n(ku)i(na)g(jin\351)e(p\355smeno)625
b Fa(*)36 b(c)-450 3878 y Fd(ozna\350)25 b(soub)r(ory)-6
b(,)24 b(pro)f(kter\351)i(elisp)r(o)n(v\375)f(v\375raz)g(vrac\355)f(t)
85 b Fa(*)36 b(\()f Fc(\(D)n(X\))-450 4074 y Fb(N\341p)s(o)m(v)m
(\354da)-450 4230 y Fd(zobraz)25 b(n\341p)r(o)n(v)n(\354du)1014
b Fa(h)-450 4310 y Fd(p\370ehled)24 b(p\370\355k)n(az\371)g(dired)871
b Fa(?)1866 -364 y Fb(P\370\355k)m(azy)39 b(nad)e(ozna\350en)m(\375mi)g
(soub)s(ory)1866 -238 y Fd(k)n(op\355ruj)23 b(soub)r(or\(y\))992
b Fa(C)1866 -158 y Fd(p\370ejmen)n(uj)22 b(soub)r(or)i(neb)r(o)h
(p\370esu\362)f(soub)r(ory)327 b Fa(R)1866 -79 y Fd(zm\354\362)23
b(vlastn\355k)n(a)i(soub)r(oru\(\371\))707 b Fa(O)1866
1 y Fd(zm\354\362)23 b(skupin)n(u)h(soub)r(oru\(\371\))745
b Fa(G)1866 81 y Fd(zm\354\362)23 b(p\370\355stup)r(o)n(v)n(\341)i
(pr\341)n(v)n(a)f(soub)r(oru\(\371\))464 b Fa(M)1866
160 y Fd(vytiskni)24 b(soub)r(or\(y\))964 b Fa(P)1866
240 y Fd(zm\354\362)23 b(n\341zev)i(soub)r(oru\(\371\))g(na)f(mal\341)f
(p\355smena)262 b Fa(\045)36 b(l)1866 320 y Fd(zm\354\362)23
b(n\341zev)i(soub)r(oru\(\371\))g(na)f(v)n(elk)n(\341)h(p\355smena)254
b Fa(\045)36 b(u)1866 399 y Fd(sma\276)23 b(ozna\350en\351)j(soub)r
(ory)812 b Fa(X)1866 479 y Fd(pro)n(v)n(e\357)24 b(uuenco)r(de)i(neb)r
(o)f(uudeco)r(de)g(soub)r(oru\(\371\))169 b Fa(U)1866
559 y Fd(zk)n(omprim)n(uj)21 b(neb)r(o)k(dek)n(omprim)n(uj)c(soub)r
(or\(y\))247 b Fa(Z)1866 639 y Fd(spus\273)24 b(info)f(na)h(soub)r(or)
902 b Fa(I)36 b Fc(\(D)n(X\))1866 718 y Fd(vytv)n(o\370)25
b(sym)n(b)r(olic)n(k\375\(\351\))f(o)r(dk)n(az\(y\))587
b Fa(S)1866 798 y Fd(vytv)n(o\370)25 b(relativn\355)e(sym)n(b)r(olic)n
(k)n(\351)g(o)r(dk)n(azy)455 b Fa(Y)1866 878 y Fd(vytv)n(o\370)25
b(p)r(evn)n(\375)f(o)r(dk)n(az)922 b Fa(H)1866 957 y
Fd(prohledej)24 b(soub)r(ory)g(na)g(regul\341rn\355)f(v\375raz)391
b Fa(A)1866 1037 y Fd(nahra\357)24 b(regul\341rn\355)f(v\375razy)788
b Fa(Q)1866 1117 y Fd(p\370elo\276)24 b(soub)r(ory)g(\(b)n
(yte-compile\))609 b Fa(B)1866 1196 y Fd(na\350ti)24
b(soub)r(ory)g(\(load-\014le\))790 b Fa(L)1866 1276 y
Fd(spus\273)24 b(p\370\355k)n(az)g(na)g(soub)r(or\(y\))738
b Fa(!)1866 1433 y Fb(Ozna\350en\355)36 b(soub)s(or\371)j(pro)f
(smaz\341n\355)1866 1541 y Fc(Odzna\350uj\355c\355)27
b(p\370\355k)n(azy)f(ma\276ou)f(zna\350)n(ku)i(pro)g(smaz\341n\355)1866
1639 y Fd(ozna\350)e(soub)r(or)f(pro)f(smaz\341n\355)731
b Fa(d)1866 1719 y Fd(o)r(dstra\362)24 b(zna\350)n(ku)h(pro)f
(smaz\341n\355)664 b Fa(delete)1866 1798 y Fd(ozna\350)25
b(v\271ec)n(hn)n(y)g(z\341loh)n(y)g(\(soub)r(ory)f(k)n(on\350\355c\355)
g(na)g(~\))162 b Fa(~)1866 1878 y Fd(ozna\350)25 b(v\271ec)n(hn)n(y)g
(z\341loh)n(y)g(\(auto-sa)n(v)n(e\))510 b Fa(#)1866 1958
y Fd(ozna\350)25 b(r\371zn\351)f(do)r(\350asn\351)h(soub)r(ory)634
b Fa(&)1866 2037 y Fd(ozna\350)25 b(\350\355slo)n(v)n(an\351)f
(z\341loh)n(y)h(\(k)n(on\350\355c\355)g(na)f(.~1~)g(ap)r(o)r(d.\))109
b Fa(.)1866 2117 y Fd(pro)n(v)n(e\357)24 b(v\375maz)g(soub)r(or\371)g
(ozna\350en)n(\375c)n(h)i(k)n(e)f(smaz\341n\355)99 b
Fa(x)1866 2197 y Fd(ozna\350)25 b(soub)r(ory)f(vyho)n(vuj\355c\355)g
(regul\341rn\355m)n(u)e(v\375razu)127 b Fa(\045)36 b(d)1866
2350 y Fb(Mo)s(di\014k)m(ace)h(Dired)g(bu\013eru)1866
2476 y Fd(vlo\276)24 b(do)g(tohoto)i(bu\013eru)e(p)r(o)r
(dadres\341\370)479 b Fa(i)1866 2556 y Fd(o)r(dstra\362)24
b(ozna\350en\351)i(soub)r(ory)e(z)g(bu\013eru)436 b Fa(k)1866
2636 y Fd(o)r(dstra\362)24 b(z)g(bu\013eru)g(v\375pis)g(p)r(o)r
(dadres\341\370e)420 b Fa(C-u)36 b(k)1866 2715 y Fd(zno)n(vu)25
b(na\350ti)f(adres\341\370e)g(\(zna\350)n(ky)i(se)e(zac)n(ho)n(v)n(a)t
(j\355\))217 b Fa(g)1866 2795 y Fd(p\370epni)24 b(t\370\355d\354n\355)f
(adres\341\370e)h(p)r(o)r(dle)g(jm\351na/data)254 b Fa(s)1866
2875 y Fd(upra)n(v)24 b(v)n(olb)n(y)g(p\370\355k)n(azu)g(ls)843
b Fa(C-u)36 b(s)1866 2954 y Fd(obno)n(v)25 b(zna\350)n(ky)-6
b(,)25 b(skryt\351)f(\370\341dky)g(ap)r(o)r(d.)491 b
Fa(C-_)1866 3034 y Fd(skryj)23 b(v\271ec)n(hn)n(y)i(p)r(o)r
(dadres\341\370e)720 b Fa(M-$)1866 3114 y Fd(skryj)23
b(neb)r(o)h(o)r(dkryj)g(v\271ec)n(hn)n(y)h(p)r(o)r(dadres\341\370e)326
b Fa($)1866 3267 y Fb(P\370\355k)m(azy)39 b(s)f(regul\341rn\355mi)g
(v\375razy)1866 3393 y Fd(ozna\350)25 b(soub)r(ory)f(vyho)n
(vuj\355c\355)g(regul\341rn\355m)n(u)e(v\375razu)127
b Fa(\045)36 b(m)1866 3473 y Fd(k)n(op\355ruj)23 b(ozna\350en\351)j
(soub)r(ory)e(obsah)n(uj\355c\355)g(regexp)193 b Fa(\045)36
b(C)1866 3553 y Fd(p\370ejmen)n(uj)22 b(ozna\350en\351)k(soub)r(ory)e
(vyho)n(vuj\355c\355)g(regexp)94 b Fa(\045)36 b(R)1866
3632 y Fd(p)r(evn)n(\375)25 b(o)r(dk)n(az)1145 b Fa(\045)36
b(H)1866 3712 y Fd(sym)n(b)r(olic)n(k\375)23 b(o)r(dk)n(az)988
b Fa(\045)36 b(S)1866 3792 y Fd(sym)n(b)r(olic)n(k\375)23
b(o)r(dk)n(az)i(s)e(relativn\355)h(cestou)440 b Fa(\045)36
b(Y)1866 3871 y Fd(ozna\350)25 b(pro)f(smaz\341n\355)960
b Fa(\045)36 b(d)1866 4025 y Fb(Dired)h(a)h(Find)1866
4151 y Fd(otev\370i)24 b(v)g(dired)f(soub)r(ory)h(vyho)n(vuj\355c\355)g
(vzorku)114 b Fa(M-x)36 b(find-name-dired)1866 4230 y
Fd(otev\370i)24 b(v)g(dired)f(soub)r(ory)h(obsah)n(uj\355c\355)g
(vzorek)131 b Fa(M-x)36 b(find-grep-dired)1866 4310 y
Fd(otev\370i)24 b(v)g(dired)f(soub)r(ory)h(p)r(o)r(dle)g(v\375stupu)h
Fa(find)76 b(M-x)36 b(find-dired)1590 5603 y Fd(1)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF

View file

@ -1,402 +0,0 @@
% Reference Card for Dired
% Copyright (C) 2000 Free Software Foundation, Inc.
% Czech hyphenation rules applied
\chyph
% This file is part of GNU Emacs.
% GNU Emacs is free software; you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation; either version 2, or (at your option)
% any later version.
% GNU Emacs is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
% You should have received a copy of the GNU General Public License
% along with GNU Emacs; see the file COPYING. If not, write to
% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
% Boston, MA 02111-1307, USA.
% This file can be printed with 1, 2, or 3 columns per page (see below).
% Specify how many you want here. Nothing else needs to be changed.
%**start of header
\newcount\columnsperpage
\columnsperpage=2
% This file is intended to be processed by plain TeX (TeX82).
% The reference card looks OK with 2 columns per page, portrait mode.
% I haven't tried it with 3 columns per page.
% This is a bit of a dirty hack on the GNU Emacs reference card
% to produce a Dired reference card instead.
% I (Evgeny Roubinchtein, eroubinc@u.washington.edu) put this together
% because I wanted a Dired reference card,
% but couldn't find anything on the 'net.
% Based mostly off Dired's describe-mode.
% Translated to Czech by Pavel Janík <Pavel@Janik.cz> in March 2001
% Process the file with `csplain' from the `CSTeX' distribution (included
% e.g. in the TeX Live CD).
\def\versionnumber{0.1}
\def\year{2000}
\def\version{May \year\ v\versionnumber}
\def\shortcopyrightnotice{\vskip 1ex plus 2 fill
\centerline{\small \copyright\ \year\ Free Software Foundation, Inc.
Permissions on back. v\versionnumber}}
\def\copyrightnotice{
\vskip 1ex plus 2 fill\begingroup\small
\centerline{Copyright \copyright\ \year\ Free Software Foundation, Inc.}
\centerline{designed by Stephen Gildea, \version}
\centerline{for GNU Emacs version 21 on Unix systems}
\centerline{Updated for Dired in May 2000 by Evgeny Roubinchtein}
Permission is granted to make and distribute copies of
this card provided the copyright notice and this permission notice
are preserved on all copies.
For copies of the GNU Emacs manual, write to the Free Software
Foundation, Inc., 675 Massachusetts Ave, Cambridge MA 02139.
\endgroup}
% make \bye not \outer so that the \def\bye in the \else clause below
% can be scanned without complaint.
\def\bye{\par\vfill\supereject\end}
\newdimen\intercolumnskip %horizontal space between columns
\newbox\columna %boxes to hold columns already built
\newbox\columnb
\def\ncolumns{\the\columnsperpage}
\message{[\ncolumns\space
column\if 1\ncolumns\else s\fi\space per page]}
\def\scaledmag#1{ scaled \magstep #1}
% This multi-way format was designed by Stephen Gildea October 1986.
% Note that the 1-column format is fontfamily-independent.
\if 1\ncolumns %one-column format uses normal size
\hsize 4in
\vsize 10in
\voffset -.7in
\font\titlefont=\fontname\tenbf \scaledmag3
\font\headingfont=\fontname\tenbf \scaledmag2
\font\smallfont=\fontname\sevenrm
\font\smallsy=\fontname\sevensy
\footline{\hss\folio}
\def\makefootline{\baselineskip10pt\hsize6.5in\line{\the\footline}}
\else %2 or 3 columns uses prereduced size
\hsize 3.4in
\vsize 7.95in
\hoffset -.75in
\voffset -.745in
\font\titlefont=csbx10 \scaledmag2
\font\headingfont=csbx10 \scaledmag1
\font\smallfont=csr6
\font\smallsy=cmsy6
\font\eightrm=csr8
\font\eightbf=csbx8
\font\eightit=csti8
\font\eighttt=cstt8
\font\eightmi=csmi8
\font\eightsy=cmsy8
\textfont0=\eightrm
\textfont1=\eightmi
\textfont2=\eightsy
\def\rm{\eightrm}
\def\bf{\eightbf}
\def\it{\eightit}
\def\tt{\eighttt}
\normalbaselineskip=.8\normalbaselineskip
\normallineskip=.8\normallineskip
\normallineskiplimit=.8\normallineskiplimit
\normalbaselines\rm %make definitions take effect
\if 2\ncolumns
\let\maxcolumn=b
\footline{\hss\rm\folio\hss}
\def\makefootline{\vskip 2in \hsize=6.86in\line{\the\footline}}
\else \if 3\ncolumns
\let\maxcolumn=c
\nopagenumbers
\else
\errhelp{You must set \columnsperpage equal to 1, 2, or 3.}
\errmessage{Illegal number of columns per page}
\fi\fi
\intercolumnskip=.46in
\def\abc{a}
\output={% %see The TeXbook page 257
% This next line is useful when designing the layout.
%\immediate\write16{Column \folio\abc\space starts with \firstmark}
\if \maxcolumn\abc \multicolumnformat \global\def\abc{a}
\else\if a\abc
\global\setbox\columna\columnbox \global\def\abc{b}
%% in case we never use \columnb (two-column mode)
\global\setbox\columnb\hbox to -\intercolumnskip{}
\else
\global\setbox\columnb\columnbox \global\def\abc{c}\fi\fi}
\def\multicolumnformat{\shipout\vbox{\makeheadline
\hbox{\box\columna\hskip\intercolumnskip
\box\columnb\hskip\intercolumnskip\columnbox}
\makefootline}\advancepageno}
\def\columnbox{\leftline{\pagebody}}
\def\bye{\par\vfill\supereject
\if a\abc \else\null\vfill\eject\fi
\if a\abc \else\null\vfill\eject\fi
\end}
\fi
% we won't be using math mode much, so redefine some of the characters
% we might want to talk about
\catcode`\^=12
\catcode`\_=12
\chardef\\=`\\
\chardef\{=`\{
\chardef\}=`\}
\hyphenation{mini-buf-fer}
\hyphenation{de-le-tion}
\parindent 0pt
\parskip 1ex plus .5ex minus .5ex
\def\small{\smallfont\textfont2=\smallsy\baselineskip=.8\baselineskip}
% newcolumn - force a new column. Use sparingly, probably only for
% the first column of a page, which should have a title anyway.
\outer\def\newcolumn{\vfill\eject}
% title - page title. Argument is title text.
\outer\def\title#1{{\titlefont\centerline{#1}}\vskip 1ex plus .5ex}
% section - new major section. Argument is section name.
\outer\def\section#1{\par\filbreak
\vskip 3ex plus 2ex minus 2ex {\headingfont #1}\mark{#1}%
\vskip 2ex plus 1ex minus 1.5ex}
\newdimen\keyindent
% beginindentedkeys...endindentedkeys - key definitions will be
% indented, but running text, typically used as headings to group
% definitions, will not.
\def\beginindentedkeys{\keyindent=1em}
\def\endindentedkeys{\keyindent=0em}
\endindentedkeys
% paralign - begin paragraph containing an alignment.
% If an \halign is entered while in vertical mode, a parskip is never
% inserted. Using \paralign instead of \halign solves this problem.
\def\paralign{\vskip\parskip\halign}
% \<...> - surrounds a variable name in a code example
\def\<#1>{{\it #1\/}}
% kbd - argument is characters typed literally. Like the Texinfo command.
\def\kbd#1{{\tt#1}\null} %\null so not an abbrev even if period follows
% beginexample...endexample - surrounds literal text, such a code example.
% typeset in a typewriter font with line breaks preserved
\def\beginexample{\par\leavevmode\begingroup
\obeylines\obeyspaces\parskip0pt\tt}
{\obeyspaces\global\let =\ }
\def\endexample{\endgroup}
% key - definition of a key.
% \key{description of key}{key-name}
% prints the description left-justified, and the key-name in a \kbd
% form near the right margin.
\def\key#1#2{\leavevmode\hbox to \hsize{\vtop
{\hsize=.75\hsize\rightskip=1em
\hskip\keyindent\relax#1}\kbd{#2}\hfil}}
\newbox\metaxbox
\setbox\metaxbox\hbox{\kbd{M-x }}
\newdimen\metaxwidth
\metaxwidth=\wd\metaxbox
% metax - definition of a M-x command.
% \metax{description of command}{M-x command-name}
% Tries to justify the beginning of the command name at the same place
% as \key starts the key name. (The "M-x " sticks out to the left.)
\def\metax#1#2{\leavevmode\hbox to \hsize{\hbox to .75\hsize
{\hskip\keyindent\relax#1\hfil}%
\hskip -\metaxwidth minus 1fil
\kbd{#2}\hfil}}
% threecol - like "key" but with two key names.
% for example, one for doing the action backward, and one for forward.
\def\threecol#1#2#3{\hskip\keyindent\relax#1\hfil&\kbd{#2}\hfil\quad
&\kbd{#3}\hfil\quad\cr}
% I cannot figure out how to make all dired-x
% commands fit on a page in two-column format
\def\dx{{\bf (DX)}}
%**end of header
\title{Referenèní karta pro Dired}
\centerline{(urèeno pro Dired v GNU Emacsu 21.x)}
\centerline{Pøíkazy oznaèené \dx{} vy¾adují dired-x}
% trim this down to fit everything on one page
% \section{General}
% In dired, you can edit a list of the files in a directory (and optionally
% its subdirectories in the `ls -lR' format).
% Editing a directory means that you can visit, rename, copy, compress,
% load, byte-compile files. You can change files' attributes, run shell
% commands on files, or insert subdirectories into the edit buffer. You can
% "flag" files for deletion or "mark" files for later commands, either one
% file at a time or by all files matching certain criteria (e.g., files that
% match a certain regexp).
% You move throughout the buffer using the usual cursor motion commands.
% Letters no longer insert themselves, but execute commands instead. The
% digits (0-9) are prefix arguments.
% Most commands operate either on all marked files or on the current file if
% no files are marked. Use a numeric prefix argument to operate on the next
% ARG files (or previous ARG if ARG $<$ 0). Use the prefix argument `1' to
% operate on the current file only. Prefix arguments override marks. Commands
% which run a sub-process on a group of files will display a list of files
% for which the sub-process failed. Typing y will try to tell
% you what went wrong.
% When editing several directories in one buffer, each directory acts as a
% page, so C-x [ and C-x ] can be used to move between directories.
\section{Spu¹tìní a ukonèení Dired}
\key{spu¹tìní dired}{C-x d}
\key{spu¹tìní dired v adresáøi s aktuálním souborem}{C-x C-j \dx}
\key{ukonèení dired}{q}
\section{Pøíkazy pro pøesuny}
\key{zpìt na pøedchozí øádku}{p}
\key{vpøed na následující øádku}{n}
\key{nahoru na pøedchozí adresáø}{<}
\key{dolù na následující adresáø}{>}
\key{na dal¹í oznaèený soubor}{M-\}}
\key{na pøedchozí oznaèený soubor}{M-\{}
\key{zpìt na pøedchozí podadresáø}{M-C-p}
\key{vpøed na dal¹í podadresáø}{M-C-n}
\key{na nadøazený adresáø}{^}
\key{jdi na první podadresáø}{M-C-d}
\section{Pøíkazy pomocí my¹i}
\metax{otevøi soubor}{Mouse_Button_2}
\metax{zobraz menu}{Control-Mouse_Button_3}
\section{Okam¾ité akce nad soubory}
\key{otevøi aktuální soubor}{f}
\key{otevøi aktuální soubor pouze pro ètení}{v}
\key{otevøi aktuální soubor v jiném oknì}{o}
\key{otevøi aktuální soubor v jiném rámci}{w}
\key{zobraz aktuální soubor}{C-u o}
\key{vytvoø nový podadresáø}{+}
\key{porovnej soubor pod kurzorem s oznaèeným}{=}
\section{Znaèení a odznaèení souborù}
\key{oznaè soubor nebo podadresáø pro dal¹í pøíkazy}{m}
\key{odznaè soubor nebo soubory podadresáøe}{u}
\key{zru¹ oznaèení v¹ech souborù v bufferu}{M-delete}
\key{oznaè soubory se zadanou pøíponou}{* .}
\key{oznaè v¹echny adresáøe}{* /}
\key{oznaè v¹echny symbolické odkazy}{* @}
\key{oznaè v¹echny spustitelné soubory}{* *}
\key{invertuj oznaèení}{* t}
\key{oznaè v¹echny soubory v aktuálním podadresáøi}{* s}
\key{oznaè soubory vyhovující regulárnímu výrazu}{* \%}
\key{zmìò znaèku na jiné písmeno}{* c}
\key{oznaè soubory, pro které elispový výraz vrací t}{* ( \dx}
\section{Nápovìda}
\key{zobraz nápovìdu}{h}
\key{pøehled pøíkazù dired}{?}
\section{Pøíkazy nad oznaèenými soubory}
\key{kopíruj soubor(y)}{C}
\key{pøejmenuj soubor nebo pøesuò soubory}{R}
\key{zmìò vlastníka souboru(ù)}{O}
\key{zmìò skupinu souboru(ù)}{G}
\key{zmìò pøístupová práva souboru(ù)}{M}
\key{vytiskni soubor(y)}{P}
\key{zmìò název souboru(ù) na malá písmena}{\% l}
\key{zmìò název souboru(ù) na velká písmena}{\% u}
\key{sma¾ oznaèené soubory}{X}
\key{proveï uuencode nebo uudecode souboru(ù)}{U}
\key{zkomprimuj nebo dekomprimuj soubor(y)}{Z}
\key{spus» info na soubor}{I \dx}
\key{vytvoø symbolický(é) odkaz(y)}{S}
\key{vytvoø relativní symbolické odkazy}{Y}
\key{vytvoø pevný odkaz}{H}
\key{prohledej soubory na regulární výraz}{A}
\key{nahraï regulární výrazy}{Q}
\key{pøelo¾ soubory (byte-compile)}{B}
\key{naèti soubory (load-file)}{L}
\key{spus» pøíkaz na soubor(y)}{!}
\section{Oznaèení souborù pro smazání}
\leftline{\bf Odznaèující pøíkazy ma¾ou znaèku pro smazání}
\key{oznaè soubor pro smazání}{d}
\key{odstraò znaèku pro smazání}{delete}
\key{oznaè v¹echny zálohy (soubory konèící na \~{})}{\~{}}
\key{oznaè v¹echny zálohy (auto-save)}{\#}
\key{oznaè rùzné doèasné soubory}{\&}
\key{oznaè èíslované zálohy (konèící na .\~{}1\~{} apod.)}{.}
\key{proveï výmaz souborù oznaèených ke smazání}{x}
\key{oznaè soubory vyhovující regulárnímu výrazu}{\% d}
\section{Modifikace Dired bufferu}
\key{vlo¾ do tohoto bufferu podadresáø}{i}
\key{odstraò oznaèené soubory z bufferu}{k}
\key{odstraò z bufferu výpis podadresáøe}{C-u k}
\key{znovu naèti adresáøe (znaèky se zachovají)}{g}
\key{pøepni tøídìní adresáøe podle jména/data}{s}
\key{uprav volby pøíkazu ls}{C-u s}
\key{obnov znaèky, skryté øádky apod.}{C-_}
\key{skryj v¹echny podadresáøe}{M-\$}
\key{skryj nebo odkryj v¹echny podadresáøe}{\$}
\section{Pøíkazy s regulárními výrazy}
\key{oznaè soubory vyhovující regulárnímu výrazu}{\% m}
\key{kopíruj oznaèené soubory obsahující regexp}{\% C}
\key{pøejmenuj oznaèené soubory vyhovující regexp}{\% R}
\key{pevný odkaz}{\% H}
\key{symbolický odkaz}{\% S}
\key{symbolický odkaz s relativní cestou}{\% Y}
\key{oznaè pro smazání}{\% d}
\section{Dired a Find}
\metax{otevøi v dired soubory vyhovující vzorku}{M-x find-name-dired}
\metax{otevøi v dired soubory obsahující vzorek}{M-x find-grep-dired}
\metax{otevøi v dired soubory podle výstupu \kbd{find}}{M-x find-dired}
%\copyrightnotice
\bye

File diff suppressed because it is too large Load diff

View file

@ -1,666 +0,0 @@
% Reference Card for GNU Emacs version 21 on Unix systems
% Czech hyphenation rules applied
\chyph
%**start of header
\newcount\columnsperpage
% This file can be printed with 1, 2, or 3 columns per page (see below).
% Specify how many you want here. Nothing else needs to be changed.
\columnsperpage=1
% Copyright (c) 1987, 1993, 1996, 1997, 2001 Free Software Foundation, Inc.
% This file is part of GNU Emacs.
% GNU Emacs is free software; you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation; either version 2, or (at your option)
% any later version.
% GNU Emacs is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
% You should have received a copy of the GNU General Public License
% along with GNU Emacs; see the file COPYING. If not, write to
% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
% Boston, MA 02111-1307, USA.
% This file is intended to be processed by plain TeX (TeX82).
%
% The final reference card has six columns, three on each side.
% This file can be used to produce it in any of three ways:
% 1 column per page
% produces six separate pages, each of which needs to be reduced to 80%.
% This gives the best resolution.
% 2 columns per page
% produces three already-reduced pages.
% You will still need to cut and paste.
% 3 columns per page
% produces two pages which must be printed sideways to make a
% ready-to-use 8.5 x 11 inch reference card.
% For this you need a dvi device driver that can print sideways.
% Which mode to use is controlled by setting \columnsperpage above.
%
% Author:
% Stephen Gildea
% Internet: gildea@stop.mail-abuse.org
%
% Thanks to Paul Rubin, Bob Chassell, Len Tower, and Richard Mlynarik
% for their many good ideas.
% If there were room, it would be nice to see a section on Dired.
% Translated to Czech by Jan Buchal <buchal@brailcom.cz> in January 1999
% Corrections and improvements of the translation
% by Milan Zamazal <pdm@zamazal.org> in August 1999
% More work on better integration with GNU Emacs 21
% by Pavel Janík <Pavel@Janik.cz> in November 2000
% Process the file with `csplain' from the `CSTeX' distribution (included
% e.g. in the TeX Live CD).
\def\versionnumber{2.2}
\def\year{1997}
\def\shortcopyrightnotice{\vskip 1ex plus 2 fill
\centerline{\small \copyright\ \year\ Free Software Foundation, Inc.
Permissions on back. v\versionnumber}}
\def\copyrightnotice{
\vskip 1ex plus 2 fill\begingroup\small
\centerline{Copyright \copyright\ \year\ Free Software Foundation, Inc.}
\centerline{v\versionnumber{} for GNU Emacs version 21, \year}
\centerline{designed by Stephen Gildea}
Permission is granted to make and distribute copies of
this card provided the copyright notice and this permission notice
are preserved on all copies.
For copies of the GNU Emacs manual, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
\endgroup}
% make \bye not \outer so that the \def\bye in the \else clause below
% can be scanned without complaint.
\def\bye{\par\vfill\supereject\end}
\newdimen\intercolumnskip %horizontal space between columns
\newbox\columna %boxes to hold columns already built
\newbox\columnb
\def\ncolumns{\the\columnsperpage}
\message{[\ncolumns\space
column\if 1\ncolumns\else s\fi\space per page]}
\def\scaledmag#1{ scaled \magstep #1}
% This multi-way format was designed by Stephen Gildea October 1986.
% Note that the 1-column format is fontfamily-independent.
\if 1\ncolumns %one-column format uses normal size
\hsize 4in
\vsize 10in
\voffset -.7in
\font\titlefont=\fontname\tenbf \scaledmag3
\font\headingfont=\fontname\tenbf \scaledmag2
\font\smallfont=\fontname\sevenrm
\font\smallsy=\fontname\sevensy
\footline{\hss\folio}
\def\makefootline{\baselineskip10pt\hsize6.5in\line{\the\footline}}
\else %2 or 3 columns uses prereduced size
\hsize 3.2in
\vsize 7.95in
\hoffset -.75in
\voffset -.745in
\font\titlefont=csbx10 \scaledmag2
\font\headingfont=csbx10 \scaledmag1
\font\smallfont=csr6
\font\smallsy=cmsy6
\font\eightrm=csr8
\font\eightbf=csbx8
\font\eightit=csti8
\font\eighttt=cstt8
\font\eightmi=cmmi8
\font\eightsy=cmsy8
\textfont0=\eightrm
\textfont1=\eightmi
\textfont2=\eightsy
\def\rm{\eightrm}
\def\bf{\eightbf}
\def\it{\eightit}
\def\tt{\eighttt}
\normalbaselineskip=.8\normalbaselineskip
\normallineskip=.8\normallineskip
\normallineskiplimit=.8\normallineskiplimit
\normalbaselines\rm %make definitions take effect
\if 2\ncolumns
\let\maxcolumn=b
\footline{\hss\rm\folio\hss}
\def\makefootline{\vskip 2in \hsize=6.86in\line{\the\footline}}
\else \if 3\ncolumns
\let\maxcolumn=c
\nopagenumbers
\else
\errhelp{You must set \columnsperpage equal to 1, 2, or 3.}
\errmessage{Illegal number of columns per page}
\fi\fi
\intercolumnskip=.46in
\def\abc{a}
\output={% %see The TeXbook page 257
% This next line is useful when designing the layout.
%\immediate\write16{Column \folio\abc\space starts with \firstmark}
\if \maxcolumn\abc \multicolumnformat \global\def\abc{a}
\else\if a\abc
\global\setbox\columna\columnbox \global\def\abc{b}
%% in case we never use \columnb (two-column mode)
\global\setbox\columnb\hbox to -\intercolumnskip{}
\else
\global\setbox\columnb\columnbox \global\def\abc{c}\fi\fi}
\def\multicolumnformat{\shipout\vbox{\makeheadline
\hbox{\box\columna\hskip\intercolumnskip
\box\columnb\hskip\intercolumnskip\columnbox}
\makefootline}\advancepageno}
\def\columnbox{\leftline{\pagebody}}
\def\bye{\par\vfill\supereject
\if a\abc \else\null\vfill\eject\fi
\if a\abc \else\null\vfill\eject\fi
\end}
\fi
% we won't be using math mode much, so redefine some of the characters
% we might want to talk about
\catcode`\^=12
\catcode`\_=12
\chardef\\=`\\
\chardef\{=`\{
\chardef\}=`\}
\hyphenation{mini-buf-fer}
\parindent 0pt
\parskip 1ex plus .5ex minus .5ex
\def\small{\smallfont\textfont2=\smallsy\baselineskip=.8\baselineskip}
% newcolumn - force a new column. Use sparingly, probably only for
% the first column of a page, which should have a title anyway.
\outer\def\newcolumn{\vfill\eject}
% title - page title. Argument is title text.
\outer\def\title#1{{\titlefont\centerline{#1}}\vskip 1ex plus .5ex}
% section - new major section. Argument is section name.
\outer\def\section#1{\par\filbreak
\vskip 3ex plus 2ex minus 2ex {\headingfont #1}\mark{#1}%
\vskip 2ex plus 1ex minus 1.5ex}
\newdimen\keyindent
% beginindentedkeys...endindentedkeys - key definitions will be
% indented, but running text, typically used as headings to group
% definitions, will not.
\def\beginindentedkeys{\keyindent=1em}
\def\endindentedkeys{\keyindent=0em}
\endindentedkeys
% paralign - begin paragraph containing an alignment.
% If an \halign is entered while in vertical mode, a parskip is never
% inserted. Using \paralign instead of \halign solves this problem.
\def\paralign{\vskip\parskip\halign}
% \<...> - surrounds a variable name in a code example
\def\<#1>{{\it #1\/}}
% kbd - argument is characters typed literally. Like the Texinfo command.
\def\kbd#1{{\tt#1}\null} %\null so not an abbrev even if period follows
% beginexample...endexample - surrounds literal text, such a code example.
% typeset in a typewriter font with line breaks preserved
\def\beginexample{\par\leavevmode\begingroup
\obeylines\obeyspaces\parskip0pt\tt}
{\obeyspaces\global\let =\ }
\def\endexample{\endgroup}
% key - definition of a key.
% \key{description of key}{key-name}
% prints the description left-justified, and the key-name in a \kbd
% form near the right margin.
\def\key#1#2{\leavevmode\hbox to \hsize{\vtop
{\hsize=.75\hsize\rightskip=1em
\hskip\keyindent\relax#1}\kbd{#2}\hfil}}
\newbox\metaxbox
\setbox\metaxbox\hbox{\kbd{M-x }}
\newdimen\metaxwidth
\metaxwidth=\wd\metaxbox
% metax - definition of a M-x command.
% \metax{description of command}{M-x command-name}
% Tries to justify the beginning of the command name at the same place
% as \key starts the key name. (The "M-x " sticks out to the left.)
\def\metax#1#2{\leavevmode\hbox to \hsize{\hbox to .75\hsize
{\hskip\keyindent\relax#1\hfil}%
\hskip -\metaxwidth minus 1fil
\kbd{#2}\hfil}}
% threecol - like "key" but with two key names.
% for example, one for doing the action backward, and one for forward.
\def\threecol#1#2#3{\hskip\keyindent\relax#1\hfil&\kbd{#2}\hfil\quad
&\kbd{#3}\hfil\quad\cr}
%**end of header
\title{GNU Emacs -- Referenèní karta}
\centerline{(pro verzi 21)}
\section{Spu¹tìní Emacsu}
Pro vstup do GNU~Emacsu~21 napi¹te jeho jméno: \kbd{emacs}
Jak naèítat a editovat soubory se dozvíte ní¾e v~oddíle Soubory.
\section{Opu¹tìní Emacsu}
\key{pozastavení Emacsu (ikonizace v~X11)}{C-z}
\key{definitivní odchod z~Emacsu}{C-x C-c}
\section{Soubory}
\key{{\bf naèíst} souboru do Emacsu}{C-x C-f}
\key{{\bf ulo¾it} soubor zpìt na disk}{C-x C-s}
\key{ulo¾it {\bf v¹echny} soubory}{C-x s}
\key{{\bf vlo¾it} obsahu jiného souboru do bufferu}{C-x i}
\key{zamìnit tento soubor jiným souborem}{C-x C-v}
\key{zapsat buffer do zadaného souboru}{C-x C-w}
\key{vlo¾it do systému správy verzí}{C-x C-q}
\section{Pou¾ívání nápovìdy}
Systém nápovìdy je snadný. Stisknìte \kbd{C-h} (nebo \kbd{F1}) a sledujte
instrukce. Úvodní {\bf tutoriál} lze spustit pomocí \kbd{C-h t}.
\key{odstranit okno s~nápovìdou}{C-x 1}
\key{rolovat okno s~nápovìdou}{C-M-v}
\key{apropos: pøíkazy odpovídající øetìzci}{C-h a}
\key{zobrazit funkci dané klávesy}{C-h c}
\key{zobrazit popis funkce}{C-h f}
\key{zobrazit informace o~aktuálních módech}{C-h m}
\section{Opravy chyb}
\key{{\bf pøeru¹it} zadávaný nebo vykonávaný pøíkaz}{C-g}
\metax{{\bf obnovit} soubor ztracený pádem systému}{M-x recover-file}
\key{{\bf zru¹it} nechtìnou zmìnu}{C-x u {\it n.} C-_}
\metax{vrátit pùvodní obsah bufferu}{M-x revert-buffer}
\key{pøekreslit \uv{rozpadlou} obrazovku}{C-l}
\section{Pøírùstkové vyhledávání}
\key{vyhledat dopøedu}{C-s}
\key{vyhledat dozadu}{C-r}
\key{vyhledat regulární výraz}{C-M-s}
\key{vyhledat regulární výraz dozadu}{C-M-r}
\key{pøedchozí vyhledávaný øetìzec}{M-p}
\key{následující novìj¹í vyhledávaný øetìzec}{M-n}
\key{ukonèit inkrementální vyhledávání}{RET}
\key{zru¹it efekt posledního zadaného znaku}{DEL}
\key{pøeru¹it probíhající vyhledávání}{C-g}
Dal¹í \kbd{C-s} nebo \kbd{C-r} zopakuje vyhledání v~daném smìru. Pokud
Emacs vyhledává, \kbd{C-g} zru¹í pouze nenalezenou èást øetìzce.
\shortcopyrightnotice
\section{Pohyb}
\paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\cr
\threecol{{\bf posun o }}{{\bf dozadu}}{{\bf dopøedu}}
\threecol{znak}{C-b}{C-f}
\threecol{slovo}{M-b}{M-f}
\threecol{øádek}{C-p}{C-n}
\threecol{na zaèátek nebo konec øádku}{C-a}{C-e}
\threecol{vìtu}{M-a}{M-e}
\threecol{odstavec}{M-\{}{M-\}}
\threecol{stránku}{C-x [}{C-x ]}
\threecol{symbolický výraz}{C-M-b}{C-M-f}
\threecol{funkci}{C-M-a}{C-M-e}
\threecol{na zaèátek nebo konec bufferu}{M-<}{M->}
}
\key{rolovat na dal¹í obrazovku}{C-v}
\key{rolovat na pøedchozí obrazovku}{M-v}
\key{rolovat vlevo}{C-x <}
\key{rolovat vpravo}{C-x >}
\key{aktuální øádek do støedu obrazovky}{C-u C-l}
\section{Ru¹ení a mazání}
\paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\cr
\threecol{{\bf ru¹ený objekt }}{{\bf dozadu}}{{\bf dopøedu}}
\threecol{znak (mazání, ne ru¹ení)}{DEL}{C-d}
\threecol{slovo}{M-DEL}{M-d}
\threecol{øádek (do konce)}{M-0 C-k}{C-k}
\threecol{vìta}{C-x DEL}{M-k}
\threecol{symbolický výraz}{M-- C-M-k}{C-M-k}
}
\key{zru¹it {\bf oblast}}{C-w}
\key{zkopírovat oblast do schránky}{M-w}
\key{zru¹it a¾ po nejbli¾¹í výskyt znaku {\it znak}}{M-z {\it znak}}
\key{vhodit naposledy zru¹ený objekt}{C-y}
\key{nahradit vhozený objekt pøedchozím zru¹eným}{M-y}
\section{Oznaèování}
\key{vlo¾it znaèku}{C-@ {\it n.} C-SPC}
\key{prohodit kurzor a znaèku}{C-x C-x}
\key{oznaèit zadaný poèet {\bf slov}}{M-@}
\key{oznaèit {\bf odstavec}}{M-h}
\key{oznaèit {\bf stránku}}{C-x C-p}
\key{oznaèit {\bf symbolický výraz}}{C-M-@}
\key{oznaèit {\bf funkci}}{C-M-h}
\key{oznaèit celý {\bf buffer}}{C-x h}
\section{Interaktivní nahrazování}
\key{interaktivnì nahradit textový øetìzec}{M-\%}
\metax{s~u¾itím regulárního výrazu}{M-x query-replace-regexp}
Platné odpovìdi v~módu query-replace jsou
\key{{\bf zámìnu provést} a jít na dal¹í}{SPC}
\key{zámìnu provést a zùstat na místì}{,}
\key{{\bf skoèit} na dal¹í bez provedení zámìny}{DEL}
\key{zamìnit v¹echny zbývající výskyty}{!}
\key{{\bf zpìt} na pøedchozí výskyt øetìzce}{^}
\key{{\bf konec} nahrazování}{RET}
\key{rekurzivní editace (ukonèí se \kbd{C-M-c})}{C-r}
\section{Okna}
Jestli¾e jsou zobrazeny dva pøíkazy, pak ten druhý platí pro X okno.
\key{zru¹it v¹echna ostatní okna}{C-x 1}
{\setbox0=\hbox{\kbd{0}}\advance\hsize by 0\wd0
\paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\cr
\threecol{rozdìlit okno na horní a dolní}{C-x 2\ \ \ \ }{C-x 5 2}
\threecol{zru¹it toto okno}{C-x 0\ \ \ \ }{C-x 5 0}
}}
\key{rozdìlit okno na levé a pravé}{C-x 3}
\key{rolovat jiné okno}{C-M-v}
{\setbox0=\hbox{\kbd{0}}\advance\hsize by 2\wd0
\paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\cr
\threecol{pøepnout kurzor do jiného okna}{C-x o}{C-x 5 o}
\threecol{vybrat buffer v~jiném oknì}{C-x 4 b}{C-x 5 b}
\threecol{zobrazit buffer v~jiném oknì}{C-x 4 C-o}{C-x 5 C-o}
\threecol{otevøít soubor v~jiném oknì}{C-x 4 f}{C-x 5 f}
\threecol{otevøít soubor jen pro ètení v~jiném oknì}{C-x 4 r}{C-x 5 r}
\threecol{spustit Dired v~jiném oknì}{C-x 4 d}{C-x 5 d}
\threecol{najít tag v~jiném oknì}{C-x 4 .}{C-x 5 .}
}}
\key{zvìt¹it okno}{C-x ^}
\key{zú¾it okno}{C-x \{}
\key{roz¹íøit okno}{C-x \}}
\section{Formátování}
\key{odsadit aktuální {\bf øádek} (dle módu)}{TAB}
\key{odsadit {\bf oblast} (dle módu)}{C-M-\\}
\key{odsadit {\bf symbolický výraz} (dle módu)}{C-M-q}
\key{odsadit oblast napevno o~{\it argument\/} sloupcù}{C-x TAB}
\key{vlo¾it znak nového øádku za kurzor}{C-o}
\key{posunout zbytek øádku svisle dolù}{C-M-o}
\key{smazat prázdné øádky okolo kurzoru}{C-x C-o}
\key{spojit øádek s~pøedchozím (s~arg.~s~násl.)}{M-^}
\key{smazat prázdné místo kolem kurzoru}{M-\\}
\key{nechat pøesnì jednu mezeru kolem kurzoru}{M-SPC}
\key{zalomit odstavec}{M-q}
\key{nastavit sloupec pro zalamování}{C-x f}
\key{nastavit prefix, kterým zaèínají øádky}{C-x .}
\key{nastavit font}{M-g}
\section{Zmìna velikosti písmen}
\key{zmìnit písmena slova na velká}{M-u}
\key{zmìnit písmena slova na malá}{M-l}
\key{zmìnit poèáteèní písmeno slova na velké}{M-c}
\key{zmìnit písmena oblasti na velká}{C-x C-u}
\key{zmìnit písmena oblasti na malá}{C-x C-l}
\section{Minibuffer}
Následující klávesy jsou platné pro minibuffer.
\key{doplnit z~nabídky}{TAB}
\key{doplnit do nejbli¾¹ího slova}{SPC}
\key{doplnit a vykonat}{RET}
\key{zobrazit mo¾ná doplnìní}{?}
\key{pøedchozí pøíkaz z~minibufferu}{M-p}
\key{novìj¹í nebo implicitní pøíkaz z~minibufferu}{M-n}
\key{vyhledat regulární výraz v~historii vzad}{M-r}
\key{vyhledat regulární výraz v~historii vpøed}{M-s}
\key{zru¹it pøíkaz}{C-g}
Stisknìte \kbd{C-x ESC ESC} pro editaci a zopakování posledního pøíkazu
z~minibufferu. Stisknìte \kbd{F10} pro aktivaci menu v~minibufferu.
\newcolumn
\title{GNU Emacs -- Referenèní karta}
\section{Buffery}
\key{vybrat jiný buffer}{C-x b}
\key{seznam v¹ech bufferù}{C-x C-b}
\key{zru¹it buffer}{C-x k}
\section{Výmìny}
\key{pøehodit {\bf znaky}}{C-t}
\key{pøehodit {\bf slova}}{M-t}
\key{pøehodit {\bf øádky}}{C-x C-t}
\key{pøehodit {\bf symbolické výrazy}}{C-M-t}
\section{Kontrola pravopisu}
\key{kontrola pravopisu aktuálního slova}{M-\$}
\metax{kontrola pravopisu v¹ech slov v oblasti}{M-x ispell-region}
\metax{kontrola pravopisu celého bufferu}{M-x ispell-buffer}
\section{Tagy}
\key{najít tag (definici)}{M-.}
\key{najít dal¹í výskyt tagu}{C-u M-.}
\metax{zadat soubor s novými tagy}{M-x visit-tags-table}
\metax{vyhledat reg.\ výraz v~souborech s~tagy}{M-x tags-search}
\metax{spustit nahrazování pro ony soubory}{M-x tags-query-replace}
\key{pokraèovat v~prohledávání nebo nahrazování}{M-,}
\section{Pøíkazový interpret}
\key{vykonat shellový pøíkaz}{M-!}
\key{vykonat shellový pøíkaz na oblast}{M-|}
\key{zfiltrovat oblast shellovým pøíkazem}{C-u M-|}
\key{spustit shell v oknì \kbd{*shell*}}{M-x shell}
\section{Obdélníky}
\key{zkopírovat obdélník do registru}{C-x r r}
\key{zru¹it obdélník}{C-x r k}
\key{vhodit obdélník}{C-x r y}
\key{vlo¾it obdélník mezer}{C-x r o}
\key{nahradit obdélník obdélníkem mezer}{C-x r c}
\key{nahradit øádky obdélníku zadaným øetìzcem}{C-x r t}
\section{Zkratky}
\key{pøidat globální zkratku}{C-x a g}
\key{pøidat lokální zkratku}{C-x a l}
\key{pøidat globální expanzi pro zkratku }{C-x a i g}
\key{pøidat lokální expanzi pro zkratku}{C-x a i l}
\key{expandovat zkratku}{C-x a e}
\key{dynamická expanze pøedcházejícího slova}{M-/}
\section{Regulární výrazy}
\key{libovolný znak kromì nového øádku}{. {\rm(teèka)}}
\key{¾ádné nebo nìkolik opakování}{*}
\key{jedno nebo více opakování}{+}
\key{¾ádné nebo jedno opakování}{?}
\key{zru¹it zvlá¹tní význam znaku {\it c\/} ve výrazu}{\\{\it c}}
\key{alternativa (\uv{nebo})}{\\|}
\key{skupina}{\\( {\rm$\ldots$} \\)}
\key{stejný text jako {\it n\/}-tá skupina}{\\{\it n}}
\key{hranice slova}{\\b}
\key{nikoliv hranice slova}{\\B}
\paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\cr
\threecol{{\bf element}}{{\bf zaèátek}}{{\bf konec}}
\threecol{øádek}{^}{\$}
\threecol{slovo}{\\<}{\\>}
\threecol{buffer}{\\`}{\\'}
\threecol{{\bf tøída znakù}}{{\bf odpovídá}}{{\bf neodpovídá}}
\threecol{explicitní mno¾ina}{[ {\rm$\ldots$} ]}{[^ {\rm$\ldots$} ]}
\threecol{slovotvorný znak}{\\w}{\\W}
\threecol{znak se syntaxí {\it c}}{\\s{\it c}}{\\S{\it c}}
}
\section{Mezinárodní znakové sady}
\metax{zadat hlavní jazyk}{M-x set-language-environment}
\metax{zobrazit v¹echny vstupní metody}{M-x list-input-methods}
\key{zapnout nebo vypnout vstupní metodu}{C-\\}
\key{zadat kódování pro následující pøíkaz}{C-x RET c}
\metax{zobrazit v¹echna kódování}{M-x list-coding-systems}
\metax{zmìnit preferované kódování}{M-x prefer-coding-system}
\section{Info}
\key{spustit Info}{C-h i}
\key{najít zadanou funkci nebo promìnnou v~Info}{C-h C-i}
\beginindentedkeys
Pohyb uvnitø uzlù:
\key{rolování vpøed}{SPC}
\key{rolování zpìt}{DEL}
\key{na zaèátek uzlu}{. {\rm (teèka)}}
Pohyb mezi uzly:
\key{{\bf dal¹í} uzel}{n}
\key{{\bf pøedchozí} uzel}{p}
\key{{\bf nadøazený} uzel}{u}
\key{vybrat z~menu podle názvu}{m}
\key{vybrat {\it n\/}-tou polo¾ku menu (1--9)}{{\it n}}
\key{nejbli¾¹í pøí¹tí køí¾ový odkaz (návrat \kbd{l})}{f}
\key{vrátit se do naposledy prohlí¾eného uzlu}{l}
\key{vrátit se do adresáøe uzlù}{d}
\key{pøejít do kteréhokoliv uzlu podle jména}{g}
Dal¹í:
\key{spustit {\bf tutoriál} k~Info}{h}
\key{{\bf ukonèit} Info}{q}
\key{prohledat uzly na øetìzec}{M-s}
\endindentedkeys
\section{Registry}
\key{ulo¾it oblast do registru}{C-x r s}
\key{vlo¾it obsah registru do bufferu}{C-x r i}
\key{ulo¾it pozici kurzoru do registru}{C-x r SPC}
\key{skoèit na pozici ulo¾enou v~registru}{C-x r j}
\section{Klávesová makra}
\key{{\bf zahájit} definování klávesového makra}{C-x (}
\key{{\bf zakonèit} definování klávesového makra}{C-x )}
\key{{\bf vykonat} poslední definované makro}{C-x e}
\key{pøipojit k~poslednímu klávesovému makru}{C-u C-x (}
\metax{pojmenovat poslední makro}{M-x name-last-kbd-macro}
\metax{vlo¾it do bufferu lispovou definici}{M-x insert-kbd-macro}
\section{Pøíkazy související s~Emacs Lispem}
\key{vyhodnotit {\bf výraz} pøed kurzorem}{C-x C-e}
\key{vyhodnotit {\bf funkci} pod kurzorem}{C-M-x}
\metax{vyhodnotit {\bf oblast}}{M-x eval-region}
\key{naèíst a vyhodnotit výraz v~minibufferu}{M-:}
\metax{naèíst soubor ze systémového adresáøe}{M-x load-library}
\section{Jednoduchá pøizpùsobení}
\metax{nastavit promìnné a faces}{M-x customize}
% The intended audience here is the person who wants to make simple
% customizations and knows Lisp syntax.
Definice obecné klávesové zkratky v~Emacs Lispu (pøíklad):
\beginexample%
(global-set-key "\\C-cg" 'goto-line)
(global-set-key "\\M-\#" 'query-replace-regexp)
\endexample
\section{Zápis pøíkazù}
\beginexample%
(defun \<command-name> (\<args>)
"\<documentation>" (interactive "\<template>")
\<body>)
\endexample
Pøíklad:
\beginexample%
(defun this-line-to-top-of-window (line)
"Reposition line point is on to top of window.
With ARG, put point on line ARG."
(interactive "P")
(recenter (if (null line)
0
(prefix-numeric-value line))))
\endexample
Specifikace \kbd{interactive} øíká, jak interaktivnì naèíst ar\-gu\-men\-ty.
Více se dozvíte po provedení \kbd{C-h f interactive}.
\copyrightnotice
\bye
% Local variables:
% compile-command: "csplain cs-refcard"
% End:

View file

@ -1,413 +0,0 @@
%
% Title: GNU Emacs Survival Card
% Author: Wlodek Bzyl <matwb@univ.gda.pl>
%
% $Revision: 1.1 $
% $Date: 2001/04/18 13:59:16 $
%
%**start of header
% User interface is `plain.tex' and macros described below
%
% \title{CARD TITLE}{for version 21}
% \section{NAME}
% optional paragraphs separated with \askip amount of vertical space
% \key{KEY-NAME} description of key or
% \mkey{M-x LONG-LISP-NAME} description of Elisp function
%
% \kbd{ARG} -- argument is typed literally
\def\plainfmtname{plain}
\ifx\fmtname\plainfmtname
\else
\errmessage{This file requires `plain' format to be typeset correctly}
\endinput
\fi
% Copyright (c) 2000 Free Software Foundation, Inc.
% This file is part of GNU Emacs.
% GNU Emacs is free software; you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation; either version 2, or (at your option)
% any later version.
% GNU Emacs is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
% You should have received a copy of the GNU General Public License
% along with GNU Emacs; see the file COPYING. If not, write to
% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
% Boston, MA 02111-1307, USA.
% Czech hyphenation rules applied
\chyph
% Translated to Czech by Pavel Janík <Pavel@Janik.cz> in March 2001
% Process the file with `csplain' from the `CSTeX' distribution (included
% e.g. in the TeX Live CD).
\def\versionnumber{1.0}
\def\year{2000}
\def\copyrightnotice{\penalty-1\vfill
\vbox{\smallfont\baselineskip=0.8\baselineskip\raggedcenter
Copyright \year\ Free Software Foundation, Inc.\break
Verze \versionnumber{} pro GNU Emacs 21, duben 2000\break
W{\l}odek Bzyl (matwb@univ.gda.pl)\break
Do èe¹tiny pøelo¾il Pavel Janík (Pavel@Janik.cz)
Kopie tohoto dokumentu mù¾ete vytváøet a ¹íøit
za pøedpokladu, ¾e budou obsahovat tuto poznámku
o autorských právech.\par}}
\hsize 3.2in
\vsize 7.95in
\font\titlefont=csss10 scaled 1200
\font\headingfont=csss10
\font\smallfont=csr6
\font\smallsy=cmsy6
\font\eightrm=csr8
\font\eightbf=csbx8
\font\eightit=csti8
\font\eighttt=cstt8
\font\eightmi=csmi8
\font\eightsy=cmsy8
\font\eightss=cmss8
\textfont0=\eightrm
\textfont1=\eightmi
\textfont2=\eightsy
\def\rm{\eightrm} \rm
\def\bf{\eightbf}
\def\it{\eightit}
\def\tt{\eighttt}
\def\ss{\eightss}
\baselineskip=0.8\baselineskip
\newdimen\intercolumnskip % horizontal space between columns
\intercolumnskip=0.5in
% The TeXbook, p. 257
\let\lr=L \newbox\leftcolumn
\output={\if L\lr
\global\setbox\leftcolumn\columnbox \global\let\lr=R
\else
\doubleformat \global\let\lr=L\fi}
\def\doubleformat{\shipout\vbox{\makeheadline
\leftline{\box\leftcolumn\hskip\intercolumnskip\columnbox}
\makefootline}
\advancepageno}
\def\columnbox{\leftline{\pagebody}}
\def\newcolumn{\vfil\eject}
\def\bye{\par\vfil\supereject
\if R\lr \null\vfil\eject\fi
\end}
\outer\def\title#1#2{{\titlefont\centerline{#1}}\vskip 1ex plus 0.5ex
\centerline{\ss#2}
\vskip2\baselineskip}
\outer\def\section#1{\filbreak
\bskip
\leftline{\headingfont #1}
\askip}
\def\bskip{\vskip 2.5ex plus 0.25ex }
\def\askip{\vskip 0.75ex plus 0.25ex}
\newdimen\defwidth \defwidth=0.25\hsize
\def\hang{\hangindent\defwidth}
\def\textindent#1{\noindent\llap{\hbox to \defwidth{\tt#1\hfil}}\ignorespaces}
\def\key{\par\hangafter=0\hang\textindent}
\def\mtextindent#1{\noindent\hbox{\tt#1\quad}\ignorespaces}
\def\mkey{\par\hangafter=1\hang\mtextindent}
\def\kbd#{\bgroup\tt \let\next= }
\newdimen\raggedstretch
\newskip\raggedparfill \raggedparfill=0pt plus 1fil
\def\nohyphens
{\hyphenpenalty10000\exhyphenpenalty10000\pretolerance10000}
\def\raggedspaces
{\spaceskip=0.3333em\relax
\xspaceskip=0.5em\relax}
\def\raggedright
{\raggedstretch=6em
\nohyphens
\rightskip=0pt plus \raggedstretch
\raggedspaces
\parfillskip=\raggedparfill
\relax}
\def\raggedcenter
{\raggedstretch=6em
\nohyphens
\rightskip=0pt plus \raggedstretch
\leftskip=\rightskip
\raggedspaces
\parfillskip=0pt
\relax}
\chardef\\=`\\
\raggedright
\nopagenumbers
\parindent 0pt
\interlinepenalty=10000
\hoffset -0.2in
%\voffset 0.2in
%**end of header
\title{Karta\ \ pro\ \ pøe¾ití\ \ s\ \ GNU\ \ Emacsem}{pro verzi 21}
V~následujícím textu \kbd{C-z} znamená: stisknìte klávesu `\kbd{z}' a
souèasnì pøidr¾te stisknutou klávesu {\it Ctrl}. \kbd{M-z} znamená, ¾e
souèasnì s klávesou `\kbd{z}' pøidr¾íte klávesu {\it Meta\/} (vìt¹inou
oznaèenou {\it Alt\/}) nebo ji stisknete po stisknutí klávesy {\it Esc\/}.
\section{Spu¹tìní Emacsu}
Pro spu¹tìní GNU Emacsu jednodu¹e napi¹te jeho jméno: \kbd{emacs}.
Emacs rozdìluje rámec na nìkolik èástí:
øádek menu,
buffer s editovaným textem,
tzv. mode line popisující buffer nad ní
a minibuffer v poslední øádce.
\askip
\key{C-x C-c} ukonèení Emacsu
\key{C-x C-f} editace souboru; tento pøíkaz vyu¾ívá minibuffer k pøeètení
jména souboru; tento pøíkaz pou¾ijte i tehdy, chcete-li
vytvoøit nový soubor zadaného jména
\key{C-x C-s} ulo¾it soubor
\key{C-x k} zavøít buffer
\key{C-g} ve vìt¹inì situací: zastavení aktuálnì provádìné èinnosti,
zru¹ení zadávání pøíkazu apod.
\key{C-x u} obnovit
\section{Pohyb}
\key{C-l} pøesun aktuální øádky do støedu okna
\key{C-x b} pøepnutí do jiného bufferu
\key{M-<} pøesun na zaèátek bufferu
\key{M->} pøesun na konec bufferu
\key{M-x goto-line} pøesun na øádek zadaného èísla
\section{Více oken}
\key{C-x 0} odstranìní aktuálního okna
\key{C-x 1} aktuální okno se stane jediným oknem
\key{C-x 2} rozdìlení okna horizontálnì
\key{C-x 3} rozdìlení okna vertikálnì
\key{C-x o} pøesun do jiného okna
\section{Regiony}
Emacs definuje `region' jako prostor mezi {\it znaèkou\/} a
{\it bodem}. Znaèka je nastavena pomocí \kbd{C-{\it space}}.
Bod je v místì aktuální pozice kurzoru.
\askip
\key{M-h} oznaè celý odstavec
\key{C-x h} oznaè celý buffer
\section{Vyjmutí a kopírování}
\key{C-w} vyjmi region
\key{M-w} zkopíruj region do kill-ringu
\key{C-k} vyjmi text od kurzoru do konce øádku
\key{M-DEL} vyjmi slovo
\key{C-y} vlo¾ zpìt poslední vyjmutý text (kombinace kláves \kbd{C-w C-y}
mù¾e být pou¾ita pro pøesuny textù)
\key{M-y} nahraï poslední vlo¾ený text pøedchozím vyjmutým textem
\section{Vyhledávání}
\key{C-s} hledej øetìzec
\key{C-r} hledej øetìzec zpìt
\key{RET} ukonèi hledání
\key{M-C-s} hledej regulární výraz
\key{M-C-r} hledej regulární výraz zpìt
\askip
Kombinace \kbd{C-s} nebo \kbd{C-r} mù¾ete pou¾ít i k opakování hledání
jiným smìrem.
\section{Znaèky (tags)}
Tabulky znaèek (tags) zaznamenávají polohu funkcí a procedur, globálních
promìnných, datových typù a dal¹ího. Pro vytvoøení tabulky znaèek spus»te
pøíkaz `{\tt etags} {\it vstupní\_soubory}' v pøíkazovém interpretu.
\askip
\key{M-.} najdi definici
\key{C-u M-.} najdi dal¹í výskyt definice
\key{M-*} bì¾ tam, odkud byla volána poslední \kbd{M-.}
\mkey{M-x tags-query-replace} spus» query-replace na v¹ech souborech
zaznamenaných v tabulce znaèek.
\key{M-,} pokraèuj v posledním hledání znaèky nebo query-replace
\section{Pøeklady}
\key{M-x compile} pøelo¾ kód v aktivním oknì
\key{C-c C-c} bì¾ na poslední chybu pøekladaèe, v oknì pøekladu
\key{C-x `} v oknì se zdrojovým textem
\section{Dired, editor adresáøù}
\key{C-x d} spus» Dired
\key{d} oznaè tento soubor pro smazání
\key{\~{}} oznaè v¹echny zálohy ke smazání
\key{u} odstraò v¹echny znaèky pro smazání
\key{x} sma¾ soubory oznaèené pro smazání
\key{C} kopíruj soubor
\key{g} obnov buffer Diredu
\key{f} nav¹tiv soubor v aktuální øádce
\key{s} pøepni mezi øazením podle abecedy a data/èasu
\section{Ètení a posílání po¹ty}
\key{M-x rmail} zaèni èíst po¹tu
\key{q} ukonèi ètení po¹ty
\key{h} uka¾ hlavièky
\key{d} oznaè aktuální zprávu ke smazání
\key{x} sma¾ v¹echny zprávy oznaèené ke smazání
\key{C-x m} nová zpráva
\key{C-c C-c} po¹li zprávu a pøepni do jiného bufferu
\key{C-c C-f C-c} pøesuò se na hlavièku `CC' a pokud neexistuje, tak ji
vytvoø
\section{Rùzné}
\key{M-q} zarovnej odstavec
\key{M-/} doplò dynamicky pøedchozí slovo
\key{C-z} ikonizuj (pøeru¹) Emacs
\mkey{M-x revert-buffer} nahraï text editovaného souboru tímté¾ souborem z disku
\section{Nahrazování}
\key{M-\%} interaktivnì hledej a nahrazuj
\key{M-C-\%} za pou¾ití regulárních výrazù
\askip
Mo¾né odpovìdi v módu hledání jsou
\askip
\key{SPC} nahraï tento výskyt; bì¾ na dal¹í
\key{,} nahraï tento výskyt; nechoï dále
\key{DEL} tento výskyt nenahrazuj a bì¾ dál
\key{!} nahraï v¹echny dal¹í výskyty
\key{\^{}} zpìt na pøedchozí výskyt
\key{RET} ukonèi query-replace
\key{C-r} zaèni rekurzivní editaci (\kbd{M-C-c} ji ukonèí)
\section{Regulární výrazy}
\key{. {\rm(teèka)}} libovolný znak kromì znaku nového øádku
\key{*} ¾ádné nebo mnoho opakování
\key{+} jedno nebo mnoho opakování
\key{?} ¾ádné nebo jedno opakování
\key{[$\ldots$]} oznaèuje tøídu znakù
\key{[\^{}$\ldots$]} neguje tøídu znakù
\key{\\{\it c}} uvození znaku, který by mìl jinak speciální význam v
regulárním výrazu
\key{$\ldots$\\|$\ldots$\\|$\ldots$} vyhovuje jedné z alternativ (\uv{nebo})
\key{\\( $\ldots$ \\)} seskupení nìkolika vzorkù do jednoho
\key{\\{\it n}} toté¾ jako {\it n\/}-tá skupina
\key{\^{}} vyhovuje na zaèátku øádku
\key{\$} vyhovuje na konci øádku
\key{\\w} vyhovuje znaku, který mù¾e být souèástí slova
\key{\\W} vyhovuje znaku, který nemù¾e být souèástí slova
\key{\\<} vyhovuje na zaèátku slova
\key{\\>} vyhovuje na konci slova
\key{\\b} vyhovuje mezislovním mezerám
\key{\\B} vyhovuje mezerám, které nejsou mezislovní
\section{Registry}
\key{C-x r s} ulo¾ region do registru
\key{C-x r i} vlo¾ obsah registru do bufferu
\key{C-x r SPC} ulo¾ aktuální pozici kurzoru do registru
\key{C-x r j} skoè na pozici kurzoru ulo¾enou v registru
\section{Obdélníky}
\key{C-x r r} zkopíruj obdélník do registru
\key{C-x r k} vyjmi obdélník
\key{C-x r y} vlo¾ obdélník
\key{C-x r t} uvození ka¾dého øádku øetìzcem
\key{C-x r o} otevøi obdélník, posuò text vpravo
\key{C-x r c} vyprázdni obdélník
\section{Pøíkazový interpret}
\key{M-x shell} spus» pøíkazový interpret v Emacsu
\key{M-!} spus» pøíkaz pøíkazového interpretu
\key{M-|} spus» pøíkaz pøíkazového interpretu na region
\key{C-u M-|} filtruj region pøes pøíkaz pøíkazového interpretu
\section{Kontrola pravopisu}
\key{M-\$} zkontroluj pravopis slova pod kurzorem
\mkey{M-x ispell-region} zkontroluj pravopis v¹ech slov v regionu
\mkey{M-x ispell-buffer} zkontroluj pravopis v bufferu
\section{Mezinárodní znakové sady}
\key{C-x RET C-\\} zvol a aktivuj vstupní metodu pro aktuální buffer
\key{C-\\} aktivuj nebo deaktivuj vstupní metodu
\mkey{M-x list-input-methods} zobraz seznam v¹ech vstupních metod
\mkey{M-x set-language-environment} specifikuj hlavní jazyk
\key{C-x RET c} nastav kódovací systém pro následující pøíkaz
\mkey{M-x find-file-literally} edituj soubor bez jakýchkoli konverzí
\mkey{M-x list-coding-systems} uka¾ v¹echny kódovací systémy
\mkey{M-x prefer-coding-system} zvol preferovaný kódovací systém
\section{Klávesová makra}
\key{C-x (} zaèni definici klávesového makra
\key{C-x )} ukonèi definici klávesového makra
\key{C-x e} spus» naposledy definované klávesové makro
\key{C-u C-x (} pøidej do poslednì definovaného klávesového makra
\mkey{M-x name-last-kbd-macro} pojmenuj naposledy definované makro
\section{Jednoduché nastavení}
\key{M-x customize} jednoduché nastavení
\section{Pomoc}
Emacs doplòuje pøíkazy. Stisknete-li \kbd{M-x} {\it tab\/} nebo {\it
space\/} dostanete seznam pøíkazù Emacsu.
\askip
\key{C-h} nápovìda Emacsu
\key{C-h t} spustí tutoriál Emacsu
\key{C-h i} spustí Info, prohlí¾eè dokumentace
\key{C-h a} uká¾e pøíkazy vyhovující zadanému øetìzci (apropos)
\key{C-h k} zobrazí dokumentaci funkce spu¹tìné pomocí zadané klávesy
\askip
Emacs pracuje v rùzných {\it módech}, které upravují chování
Emacsu pro editovaný text daného typu. Mode line obsahuje jména aktuálních
módù v závorkách.
\askip
\key{C-h m} zobraz dokumentaci aktuálních módù.
\copyrightnotice
\bye
% Local variables:
% compile-command: "csplain survival"
% End:

View file

@ -1 +0,0 @@
.so man1/etags.1

View file

@ -1,879 +0,0 @@
%!PS-Adobe-2.0
%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software
%%Title: refcard-de.dvi
%%Pages: 3
%%PageOrder: Ascend
%%BoundingBox: 0 0 596 842
%%EndComments
%DVIPSWebPage: (www.radicaleye.com)
%DVIPSCommandLine: dvips -o refcard-de.ps refcard-de.dvi
%DVIPSParameters: dpi=360, compressed
%DVIPSSource: TeX output 2000.08.16:2131
%%BeginProcSet: texc.pro
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
(LaserWriter 16/600)]{A length product length le{A length product exch 0
exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
%%EndProcSet
TeXDict begin 39158280 55380996 1000 360 360 (refcard-de.dvi)
@start
%DVIPSBitmapFont: Fa cmmi8 8 1
/Fa 1 59 df<126012F0A2126004047C830C>58 D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fb cmti8 8 24
/Fb 24 122 df<EAFFC0A30A037D890F>45 D<141CA2143C147CA214DCA2EB019C130314
1CEB061E140E130C131C13181330A21360EBFFFEEBC00EEA018080EA0300A21206120E12
1E39FF803FE01B1C7E9B20>65 D<903803F01090381C0C3090387002609038E003E03801
C001EA0380D8070013C0000E1300121E48130115804890C7FCA35AA41406A35C12705C6C
5B00185B6C5BD80707C7FCEA01FC1C1D7A9B1F>67 D<3803FFFC38007007EC0380EC01C0
EC00E05BA215F0A2485AA4484813E01401A215C038070003158014071500000E130E5C5C
5C381C01C0B5C7FC1C1B7C9A20>I<3903F007FC39007800E015C0A2137C9038DC018013
CC13CEA239018603001387A2138338030386A2130114C6000613CC130014ECA24813F814
78A2121C003C1330EAFF801E1B7C9A20>78 D<90B512C03901F803809038E00700EBC00E
495A00035BEB007814705CC6485A495A49C7FC130E5B133C13385BEBE018EA01C0EA0380
48485A120E001E1370001C5BEA3801387007C0B5FC1A1B7D9A1A>90
D<EA03C6EA063EEA0C1EEA181C12301270A2485AA4EB718012C0EAE0F13860F300EA6332
EA1E1C11117B9016>97 D<123F1207120EA45AA45AEA39E0EA3E30EA3C1812781270A3EA
E038A313301370EAC060EAE0E0EA60C0EA6300121E0D1C7B9B14>I<EA01F0EA070C120C
EA181CEA380CEA7000A25AA51308131CEA6038EA30E0EA1F800E117B9014>I<EB0FC013
01EB0380A4EB0700A4130EEA03CEEA063EEA0C1EEA181C12301270A2485AA4EB718012C0
EAE0F13860F300EA6332EA1E1C121C7B9B16>I<EA01F0EA070C120C12181230EA701813
70EAFFC0EAE000A41308EA601C1338EA30E0EA0F800E117B9014>I<EBF180EA018FEA03
0700061300120C121CA2EA380EA45B1230EA383C121813F8EA07B8EA0038A25BA2EAC060
EAE0E0EAC180007EC7FC11197D9014>103 D<EA0FC01201485AA448C7FCA4120E137C13
86EA0F07121EA2121CA2EA380EA35B00701360A2133814C038E0198038600F00131C7D9B
16>I<13C012011380C7FCA7121E12331263126712C7A2120EA35AA213C01238A2EA3980
1300121E0A1B7D9A0D>I<EA1F801203EA0700A4120EA45AA45AA45AA412E6A312E4126C
1238091C7C9B0B>108 D<391C0F83E0392730C430396740F838384780F012C7EB00E012
07390E01C070A315E0391C0380E3A2EC81C315C639380700CCD81803137820117D9023>
I<EA1C1F382721803867C1C0EA478112C713011207380E0380A3EB0700001C1318A2130E
143038380660381803C015117D9018>I<EA01F0EA0718EA0C0CEA180612381270A2EAE0
0EA3130C131C13181330EA6060EA30C0EA1F000F117B9016>I<380707803809D8C03819
F060EA11E0EA31C0A21201380380E0A314C0EA070114801303EB8300EA0E8C137890C7FC
A25AA45AB4FC13197F9016>I<EA1C3EEA2763EA67C3EA4787EAC70313001207120EA45A
A45A121810117D9012>114 D<EA01E0EA0618120CEA08381218EA1C00EA1F8013E0EA0F
F01203EA0070EA403012E0A2EAC060EA60C0EA3F000D117D9011>I<13C01201A2EA0380
A4EA0700EAFFE0EA0700A2120EA45AA4EA3860A2134013C0EA1980EA0E000B197D980E>
I<000E13C0EA3301EA6381EB838012C3EAC7031207EB0700120EA3381C0E30A3380C1E60
380636403803C38014117D9017>I<000E13C0EA3301EA6381EB838012C3EAC7031207EB
0700120EA3EA1C0EA3EA0C1E6C5AEA03DCEA001C13181338EA70301370EA60E0EA218000
1FC7FC12197D9015>121 D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fc cmsy6 6 1
/Fc 1 14 df<EB1FE0EB7FF83801E01E3907800780390E0001C048EB00E0481470003014
30007014380060141800E0141C48140CA56C141C00601418007014380030143000381470
6C14E06CEB01C039078007803901E01E0038007FF8EB1FE01E1B7D9425>13
D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fd cmr6 6 40
/Fd 40 122 df<126012F0A212701210A21220A21240A2040A7D830B>44
D<12FFA2080280860C>I<126012F0A2126004047D830B>I<120C121C12EC120CAFEAFFC0
0A137D9212>49 D<121FEA60C01360EAF07013301260EA0070A2136013C012011380EA02
005AEA08101210EA2020EA7FE012FF0C137E9212>I<EA07C0EA0C20EA10701220EA6000
A25A12CFEAD0C0EAE060EAC0201330A31240EA6020EA2060EA10C0EA0F000C137E9212>
54 D<120FEA3080EA6040EA4060EAC0201330A31240EA6070EA30B0EA0F301200132013
60EAE0401380EA4100123E0C137E9212>57 D<EBFE10380301B0380C00704813305A0070
1310A2481300A600701310A212306C13206C1340380301803800FE0014147E931A>67
D<B512C0EA1C01EB0040A21420A2130814001318EA1FF8EA1C18130814101300A2143014
20146014E0B5FC14147F9318>69 D<B512C0EA1C01EB0040A21420A2130814001318EA1F
F8EA1C181308A290C7FCA6EAFFC013147F9317>I<EBFE10380301B0380C00704813305A
00701310A2481300A4EB07FCEB00701270A212307E7E380301B03800FE1016147E931C>
I<EAFF80EA1C00B2EAFF8009147F930D>73 D<00FEEB03F8001E14C000171305A2381380
09A23811C011A23810E021A3EB7041A2EB3881A2EB1D01A2130E123839FE040FF81D147F
9321>77 D<00FC13FE001E133800171310EA138013C01211EA10E013701338131C131E13
0E1307EB0390EB01D0EB00F0A214700038133000FE131017147F931B>I<EAFFFE381C03
80EB01C0130014E0A314C01301EB0380381FFE00001CC7FCA8B47E13147F9318>80
D<EA0F88EA3078EA601812C01308A2EAE0001270127FEA1FE0EA07F0EA0078131C130C12
80A21308EAC018EAF030EA8FC00E147E9314>83 D<38FF80FE381C00381410AD120C000E
13206C13403803818038007E0017147F931B>85 D<127FEAE1C0EAE06012401200EA0FE0
EA3860126012C01364A2EA61E4EA3E380E0D7E8C12>97 D<12F01230A7EA33E0EA3C30EA
3008130C1306A5130CEA3808EA3C30EA23C00F157E9414>I<EA0FE0EA18701220EA6020
EAC000A51260EA2010EA1820EA0FC00C0D7F8C10>I<13781318A7EA0798EA1878EA2018
126012C0A51260EA2038EA1858EA0F9E0F157F9414>I<EA0F80EA1040EA2020EA6030EA
C010EAFFF0EAC000A31260EA2010EA1820EA0FC00C0D7F8C10>I<EA03C0EA0CE01208EA
18401300A4B4FC1218AB127E0B1580940B>I<EA0F3CEA30E6EA2040EA6060A3EA2040EA
30C0EA2F001260A2EA3FE013F0EA6018EAC00CA3EA6018EA3030EA0FC00F147F8C12>I<
12F01230A7EA33C0EA3420EA38301230A9EAFCFC0E157E9414>I<12301278A212301200
A412F01230AB12FC06157F940A>I<12F01230A7137C133013601380EA31001237EA3980
EA30C013E0137013301338EAFC3E0F157F9413>107 D<12F01230B312FC06157F940A>I<
38F3E1F03834321838381C0CEA3018A938FC7E3F180D7E8C1E>I<EAF3C0EA3420EA3830
1230A9EAFCFC0E0D7E8C14>I<EA0FC0EA1860EA2010EA6018EAC00CA5EA6018A2EA3870
EA0FC00E0D7F8C12>I<EAF3E0EA3C30EA3008130C1306A5130CEA3818EA3C30EA33C0EA
3000A512FC0F137E8C14>I<EAF3C0EA34E01238EA30401300A812FE0B0D7F8C0E>114
D<EA3F40EA40C0EA8040A2EAC000127EEA1F80EA00C0EA8020A212C0EAE040EA9F000B0D
7F8C0F>I<1210A312301270EAFF80EA3000A71380A3EA1900120E09127F910E>I<EAF0F0
EA3030A91370EA10F0EA0F3C0E0D7E8C14>I<EAFC3EEA300C1308EA1810A2EA0C20A2EA
0E60EA0640A2EA0380A2EA01000F0D7F8C13>I<38F87C7C38303018EB3810A238184820
134C000C134013841386380702801303A238020100160D7F8C1A>I<EAF83EEA3038EA18
20EA0C60EA06C0EA03801201EA03C01204EA0860EA1030EA3018EAF83E0F0D7F8C13>I<
EAFC3EEA300C1308EA1810A2EA0C20A2EA0E60EA0640A2EA0380A2EA0100A2120212E212
E412EC12700F137F8C13>I E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fe cmbx8 8 36
/Fe 36 123 df<90381FC1F890B512FC3903F07F3E3807C0FE380F80FCEC7C1C1500A4B6
12C0A2390F807C00AE393FE1FF80A21F1C809B1C>11 D<EB1FE0EBFFF03803F0383807C0
78380F80F81478143091C7FCA2EB83FCB5FCA2380F807CAE397FF3FF80A2191C809B1B>
I<EAFFE0A40B047F8A10>45 D<127812FCA4127806067C850E>I<497E497EA2497EA249
7EA2497E1319A2EB30FCA2497E147EEBE07F497E00011480EB801F48B512C0A2EB000F00
06EB07E0A24814F0140339FF801FFFA2201B7E9A25>65 D<B512FCECFF80390FC00FC0EC
07E0140315F0A415E01407EC1FC090B5120015809038C007E0EC03F0140115F8A5EC03F0
A2EC0FE0B61280ECFE001D1B7E9A23>I<B512F814FF390FC01FC0EC07E0EC01F0EC00F8
A2157CA3157EA8157CA215F8A2EC01F0EC03E0EC1FC0B6120014F81F1B7E9A25>68
D<B61280A2380FC00F1403140115C0A214C0A301C1130013C313FFA213C313C113C0A391
C7FCA6EAFFFEA21A1B7E9A1F>70 D<EAFFFEA2EA0FC0AE1403A31407A3140E141E147EB5
12FEA2181B7E9A1D>76 D<B512F814FE390FC01F80EC0FC0140715E0A515C0140FEC1F80
9038FFFE0014F801C0C7FCAAEAFFFCA21B1B7E9A21>80 D<3807F820381FFEE0EA3C07EA
7801EA700012F01460A26C1300B4FCEA7FF813FF6C13806C13C06C13E0C6FCEB0FF01301
A2EAC000A36C13E0EAF00138FC03C038EFFF00EA83FE141B7D9A1B>83
D<007FB512F0A2387C0FC0007014700060143000E0143800C01418A400001400AF0003B5
FCA21D1B7E9A22>I<3BFFF83FFE07FEA23B0FC007F000700203146001E015E000076E13
C0A23B03F007FC0180140601F814030001D90C7E1300A23A00FC1C7F06EC183F01FE140E
90397E301F8CA2D93F7013D8EC600F02E013F86D486C5AA2010F5CEC800301075CEC0001
A22F1B7F9A32>87 D<387FFFFEA2EA7E01007813FC387003F838E007F0A238C00FE0EB1F
C0A238003F80EB7F00A213FE485AA23803F803EA07F0A2380FE007EA1FC01406383F800E
387F001E48137EEBFFFEA2181B7D9A1E>90 D<EA1FF8EA3FFEEA7C1FEB0F80EB07C01238
1200A2EA07FFEA1F87EA7C07127812F8A3EA7C1B383FF3F8EA0FC015127E9118>97
D<B4FCA2121FA8EB1F80EB7FE0EBC0F0EB8078EB003CA2143EA6143C147CEB8078381EC1
F0381C7FE038181F80171C7F9B1B>I<EA03FEEA0FFF381E0F80123C127C3878070000F8
C7FCA61278127C6C13C0381F0180380FFF00EA03FC12127E9116>I<EB0FF0A21301A8EA
03F1EA0FFFEA1F07EA3C01127C127812F8A61278A2EA3C03EA1E0F380FFDFEEA03F1171C
7E9B1B>I<EA01FCEA0FFF381F0780383E03C0EA7C01007813E012F8A2B5FCA200F8C7FC
A2127C14606C13E0381F01C03807FF803801FE0013127F9116>I<133F3801FF803803E7
C0EA07C7EA0F87EB8380EB8000A4EAFFF8A2EA0F80AEEA3FF0A2121C809B0F>I<3803F0
F0380FFFF8383C0F383838073000781380A400381300EA3C0FEA1FFCEA33F00020C7FC12
30A2EA3FFF14C06C13E04813F0387801F838F00078A3007813F0383E03E0381FFFC03803
FE00151B7F9118>I<B4FCA2121FA8EB0FC0EB3FE0EB61F0EBC0F813801300AB38FFE7FF
A2181C7F9B1B>I<120C123FA4120CC7FCA5127FA2121FAEEAFFC0A20A1D7F9C0E>I<B4FC
A2121FA8EB01FEA2EB00F0EB01C0EB0780EB0E005B137C13FE7FEB9F80EB0FC01307EB03
E0EB01F0EB00F838FFE1FFA2181C7F9B1A>107 D<B4FCA2121FB3A6EAFFE0A20B1C7F9B
0E>I<38FF0FC0EB3FE0381F61F0EBC0F813801300AB38FFE7FFA218127F911B>110
D<EA01FC380FFF80381F07C0383C01E0007C13F0EA780000F813F8A6007813F0EA7C0100
3C13E0381F07C0380FFF803801FC0015127F9118>I<38FF1F80EB7FE0381FC1F0EB8078
EB007C143C143EA6147CA2EB80F8EBC1F0EB7FE0EB1F8090C7FCA6EAFFE0A2171A7F911B
>I<EAFC7C13FEEA3D9F131FA2EA3F0EEA3E00AAEAFFC0A210127E9114>114
D<EA1FD8EA3FF8EA7038EAE018A2EAF000B4FCEA7FE013F0EA1FF8EA07FCEA003CEAC01C
A212E0EAF038EAFFF0EACFC00E127E9113>I<1203A35AA25A123FEAFFFCA2EA1F00A913
0CA4EA0F1813F8EA03E00E197F9813>I<38FF07F8A2EA1F00AC1301EA0F03EBFCFFEA03
F818127F911B>I<38FFC0FEA2381F0030EB8070000F136013C0000713C013E03803E180
13F13801F300A2EA00FEA2137CA21338A217127F911A>I<39FF8FF87FA2393F03E01CD8
1F01131814F0D80F831330A23907C67860A29038EE7CE03903EC3CC0143E3901F81F80A3
3900F00F00A2EB600620127F9123>I<38FFC3FCA2381F80E0380FC1C03807C3803803E7
00EA01FE6C5A137C137E13FFEA01DFEB8F80380307C0380603E0380E01F038FF03FEA217
127F911A>I<383FFFC0A2383C1F80EA303F00701300EA607E5BEA01F81203485AEBE0C0
EA0FC0EA1F80EA3F01387F0380EA7E07B5FCA212127F9116>122
D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Ff cmtt8 8 73
/Ff 73 126 df<126012F0AF1200A4126012F0A212600418789715>33
D<EA2010EA7038EAF03CEA7038A90E0C7D9815>I<EA030CEA079EA4387FFF80B512C0A2
6C1380380F3C00A6387FFF80B512C0A26C1380381E7800A4EA0C3012187F9715>I<13C0
1201A3EA07E0EA1FF8EA3FFEEA79DEEAF1CF12E1A3EAF1C0127D123FEA1FF8EA03FCEA01
FE13CF1261EAF1C7A212E1EAF1CFEA79DEEA7FFCEA1FF8EA07E0EA01C0A21200101F7E9B
15>I<EA3806EA7C0FEAFE1FA2EAEE1E133EA2133CEAFE7CA2EA7CF81238C65A1201A25B
1203A25B1207A2EA0F87EB8F80EB1FC0EA1F1DA2121E123E131F383C0F8038180700121F
7F9B15>I<12301278127C123C121CA3123C1238127812F0A212C0060D799715>39
D<EA01C01203EA0780EA0F00121E121C123C123812781270A212F05AA87E1270A2127812
38123C121C121E7EEA0780EA03C012010A20799B15>I<12E07E12787E7E120E120F7E13
801203A213C01201A812031380A2120713005A120E121E5A5A5A5A0A207D9B15>I<1203
13801300A2EAE31CEAF33CEA7FF8EA1FE0EA0780EA1FE0EA7FF8EAF33CEAE31CEA0300A2
138013000E117D9415>I<13C0487EA6387FFF80B512C0A26C13803801E000A66C5A1212
7F9415>I<1238127C127EA2123E120E121E123C127C12F81260070B798415>I<EA7FFEB5
FCA2EA7FFE10047E8D15>I<127012F8A312700505788415>I<1306130F131FA2133EA213
3C137CA213F8A2EA01F0A2EA03E0A213C01207A2EA0F80A2EA1F00A2123EA2123C127CA2
5AA25A1260101F7E9B15>I<EA03C0EA0FF0EA1FF8EA3C3CEA381CEA700EA3EAE007A8EA
700EA2EA781EEA381CEA3C3CEA1FF8EA0FF0EA03C010187E9715>I<12035A5AA2123FB4
FCA212E71207ADEA7FF812FFA20D187C9715>I<EA07E0EA1FF8EA7FFCEAF03E131E130F
130712601200A2130F131E131C133C1378EA01F0EA03C0EA0780EA0F00EA1E07123CEA7F
FFB5FC7E10187E9715>I<EA07E0EA3FF8EA7FFCEA783E131E130E1200131EA2133CEA07
F813F013F8EA001E130E130F130712F0130FA2131EEA7FFCEA3FF8EA0FE010187E9715>
I<137C13FC13DC1201EA039CA2EA071C120F120E121E123C1238127812F0B512C0A33800
1C00A4EBFF804813C06C138012187F9715>I<EA3FFE127FA2EA7000A6EA77E0EA7FF813
FCEA7C1EEA300F12001307126012F0130F131EEAF83EEA7FFCEA3FF0EA0FC010187E9715
>I<127012F8A312701200A7127012F8A312700511789015>58 D<1306131F133F137EEA
01FCEA03F8EA07E0EA1FC0EA3F80EA7E005AA2127EEA3F80EA1FC0EA07E0EA03F8EA01FC
EA007E133F131F130610167E9615>60 D<126012F87E127EEA3F80EA1FC0EA07E0EA03F8
EA01FCEA007E133FA2137EEA01FCEA03F8EA07E0EA1FC0EA3F80EA7E005A5A126010167E
9615>62 D<EA0FF0EA3FFCEA7FFEEAF01F1307A2EA601FEA007E13F8EA01F0EA03C01380
A5C7FCA41203EA0780A2EA030010187E9715>I<EA01F0EA07FC487EEA1F0FEA3C7FEA79
FF1480EA73CFEAF78712E71303A4138712F73873CF00EA79FEA2EA3C78381F0780EA0FFF
3807FE00EA01F811187E9715>I<EA01E0A3EA0330A4EA0738A4EA0618EA0E1CA3EA0FFC
487EA2EA1C0EA3387E1F8038FF3FC0387E1F8012187F9715>I<EA7FFCB5FC6C1380EA1C
07EB03C01301A31303EB0780381FFF005B7F381C07801303EB01C0A41303EB0780EA7FFF
B51200EA7FFC1218809715>I<EA03E3EA0FFF5AEA3E1FEA3C0F1278EA7007A2EAF0005A
A67EEA7007A21278EA3C0FEA3E1EEA1FFCEA0FF8EA03E010187E9715>I<EAFFF013FC7F
EA381E7FEB07801303A214C01301A7EB0380A21307EB0F005BEAFFFE5B13F012187F9715
>I<387FFFC0B5FC7EEA1C01A490C7FC131CA2EA1FFCA3EA1C1CA290C7FCA214E0A4EA7F
FFB5FC7E1318809715>I<387FFFC0B5FC7EEA1C01A490C7FC131CA2EA1FFCA3EA1C1CA2
90C7FCA6EA7F8012FF127F12187F9715>I<EA7F80487E6C5A001CC7FCAEEB01C0A4EA7F
FFB5FC7E12187F9715>76 D<387C03E038FE07F0007E13E0383B0DC0A4139DEA3999A5EA
38F1A213611301A5387C03E038FE07F0387C03E01418809715>I<EA7FFC487E6C7E381C
07801303EB01C0A5EB03801307381FFF005B5B001CC7FCA6127F487E6CC7FC1218809715
>80 D<EAFFE013F87FEA381E7F7FA35B131EEA3FFC5B7FEA383E130EA4144014E0A2EAFE
0FEB07C0EB038013187F9715>82 D<EA0FC6EA3FFE127FEA783EEAF01EEAE00EA213007E
127CEA3FC0EA1FF8EA03FCEA003E130FA2130712E0A2EAF00FEAF81EEAFFFE13F8EAC7E0
10187E9715>I<387FFFC0B5FCA2EAE0E1A43800E000AEEA07FCA312187F9715>I<387E07
E000FE13F0007E13E0383801C0A600181380EA1CF3EA1DFBA4139BA2000D1300A3130BEA
0F0FA2EA070E1418809715>87 D<EA7FFFB5FCA2EAE00E131E133C1338EA007813F013E0
1201EA03C0A2EA078013005A121EEA1C07123C12781270B5FCA310187E9715>90
D<EAFFF0A3EAE000B3A7EAFFF0A30C1F799B15>I<126012F07EA2127CA2123C123EA27E
A2EA0F80A2EA07C0A2120313E0A2EA01F0A2EA00F8A2137CA2133C133EA2131FA2130F13
06101F7E9B15>I<EAFFF0A3EA0070B3A7EAFFF0A30C1F7F9B15>I<EA0780EA1FE0EA7FF8
EAFFFCEAF87CEA60180E067D9715>I<120C123CA21278127012F012E0A312F012F81278
1230060D799A15>96 D<EA1FC0EA7FF87FEA783EEA301EEA000EEA01FE120FEA3FEEEAF8
0E12E0A2131EEAF03E387FFFC0EA3FEFEA1F8712117E9015>I<12FCA3121CA41378EA1D
FEEA1FFFEB0F80EA1E07381C03C01301A51303381E0780EA1F0FEBFF005BEA0CF812187F
9715>I<EA03F0EA0FFC123FEA7C3CEA7818EAF0005AA47E130E1278EA7C1EEA3FFCEA0F
F8EA03E00F117D9015>I<137EA3130EA4EA07CEEA1FFE123FEA7C3EEA781EEAF00E12E0
A5EAF01E1278EA7C3E383FFFC0EA1FEFEA078F12187F9715>I<EA07F0EA0FF8EA1FFCEA
3C1EEA780EEAF00FEAE007B5FCA3EAF000EA70071278EA3E1FEA1FFEEA0FFCEA03F01011
7E9015>I<133E13FF5AEA03CF13861380A2EA7FFFB5FCA2EA0380ABEA7FFCA310187F97
15>I<3807C780381FFFC05A383C798038783C00EA701CA3EA783C6C5AEA3FF85BEA37C0
0030C7FCEA3FF813FF481380EA700738F003C0EAE001A3EAF003387C0F80383FFF006C5A
EA03F0121B7F9015>I<12FCA3121CA413F8EA1FFC7F131EEA1E0E121CA938FF8FC0139F
138F12187F9715>I<1203EA0780A2EA0300C7FCA4EA7F8012FF127F1203ABEAFFFCA30E
197D9815>I<136013F0A213601300A4EA1FF0A3EA0070B2EA60F0EAF1E012FFEA7FC0EA
3F000C227E9815>I<12FCA3121CA4EB7FC013FF137FEB3C005B5BEA1DE0121FA27FEA1E
78EA1C3CA27F38FF1FC0A312187F9715>I<EAFF80A31203B2EAFFFEA30F187D9715>I<38
F9C38038FFEFC0EBFFE0EA3C78A2EA3870A938FE7CF8A31511809015>I<EAFCF8B47E7F
EA1F1EEA1E0E121CA938FF8FC0139F138F12117F9015>I<EA07E0EA1FF8EA3FFCEA3C3C
EA700EA2EAE007A5EA700EEA781EEA3C3CEA3FFCEA1FF8EA07E010117E9015>I<EAFC78
EAFDFEB5FC381F0F80EA1E07381C03C01301A51303381E0780EA1F0FEBFF005BEA1CF890
C7FCA6B47EA3121A7F9015>I<EA03C7EA0FF7EA3FFFEA7C1FEA780F12F07F12E0A46C5A
1278EA7C1FEA3FFFEA1FF7EA07C7EA0007A6EB3FE0A3131A7F9015>I<EAFE1EEB7F80B5
FCEA0FC7EB830090C7FCA2120EA7EAFFF07F5B11117E9015>I<EA0FD8EA7FF812FFEAF0
78EAE038A2EAF800EA7FC0EA1FF0EA00F8EAE03C131C12F0EAF83CEAFFF813F0EACFC00E
117D9015>I<12035AA4EA7FFE12FFA2EA0700A613021307A3138FEA03FE13FCEA00F010
167F9515>I<EAFC7EA3EA1C0EA9131EA2381FFFC07EEA07CF12117F9015>I<387F3F8000
FF13C0007F1380381C0E00A2EA1E1EEA0E1CA36C5AA3EA0330A213F06C5AA212117F9015
>I<38FF3FC0A338380700A4EA39E7A2EA19E6EA1B36A4EA1F3EEA0F3CEA0E1C12117F90
15>I<387E3F80127F127E380F3C00EA073813F012036C5AA3487EEA0738120FEA0E1C38
7F3F8000FF13C0007F138012117F9015>I<387F1F8038FF3FC0387F1F80381C0E00121E
120E5B120F12075B120313B813B0120113F05B1200A212015BA2127BEA7F8090C7FC127E
123C121A7F9015>I<383FFF805AA238700F00131E5BC65A485A485A485A48C7FC381E03
80123C1278B5FCA311117F9015>I<131F137FEA01FF13E013C0A91207EAFF80EAFE00EA
FF80EA07C01201A913E013FFEA007F131F101F7E9B15>I<126012F0B3AB1260041F789B
15>I<12FCB4FC13C012031201A913F0EA00FF133F13FFEA01F013C0A9120312FF130012
FC101F7E9B15>I E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fg cmr8 8 63
/Fg 63 124 df<90383F0F803901C0D8C0390381F1E0380701E1000EEBE0C001001300A6
B512FE380E00E0AF387FC7FE1B1C809B19>11 D<133F3801C0C0EA0380380701E0120EEB
00C01400A5B512E0EA0E00AF387FC7FC161C809B18>I<EA6060EAF0F0EAF8F8EA6868EA
0808A3EA1010A2EA2020EA4040EA80800D0C7F9B15>34 D<1380EA0100120212065A1208
1218A25AA212701260A312E0AC1260A312701230A27EA21208120C7E12027EEA00800928
7C9D10>40 D<7E12407E12307E1208120CA27EA212077EA31380AC1300A35A1206A25AA2
120812185A12205A5A09287E9D10>I<126012F0A212701210A41220A212401280040C7C
830C>44 D<EAFFE0A20B0280890E>I<126012F0A2126004047C830C>I<1303A213071306
A2130E130C131C1318A213381330A21370136013E013C0A212011380A212031300A25A12
06120E120CA2121C1218A21238123012701260A212E05AA210287E9D15>I<12035A123F
12C71207B3A4EAFFF80D1B7C9A15>49 D<EA07E0EA1830EA201CEA401E130EEAF00F12F8
A312201200131EA2133C1338137013E013C0EA0180EA0300EA0601120C1218EA1002EA3F
FE127F12FF101B7E9A15>I<EA07E0EA1838EA201CA2EA781EA31238EA001C133C133813
60EA07C0EA0030131CA2130E130FA2127012F8A3EAF00EEA401C1220EA1830EA07C0101C
7E9A15>I<EA07C0EA0C30EA1818EA381CEA700C130E12F0A2130FA41270131F12381218
EA0C2FEA07CFEA000EA3EA301C12781318EA7038EA2030EA10E0EA0F80101C7E9A15>57
D<126012F0A212601200A9126012F0A2126004117C900C>I<13021307A3497EA2497E13
13A2EB21E0A3EB40F0A2497E1478A248487EEBFFFC3803003E0002131EA2487FA3000CEB
0780001CEB0FC0B4EB3FF81D1C7F9B20>65 D<B512C0380F00788080140E140FA4141E14
1C1478EBFFF080EB001C80140FEC0780A5EC0F00A2141E1478B512E0191B7E9A1E>I<90
381FC0409038F030C03801C00C38070003000E13015A14005A00781440A2127000F01400
A7007014401278A212386C1480A26CEB01006C13023801C00C3800F030EB1FC01A1D7E9B
1F>I<B512C0380F0070141C80801580140315C01401A215E0A715C0A214031580A2EC07
00140E5C1470B512C01B1B7E9A20>I<B512FE380F001E14061402A21403801481A21480
A2130113FF13011300A315801400EC0100A35CA21406141EB512FE191B7E9A1D>I<B512
FC380F003C140C1404A214061402A213011400A35B13FF13037FA490C7FCA7EAFFF8171B
7E9A1C>I<90381F8080EBE0613803801938070007000E13035A003C1301123800781300
A2127000F01400A5ECFFF0EC078012701278A21238123C121C7E6C130B380380193800E0
6090381F80001C1D7E9B21>I<39FFF1FFE0390F001E00ABEBFFFEEB001EAD39FFF1FFE0
1B1B7E9A20>I<EAFFF0EA0F00B3A7EAFFF00C1B7F9A0F>I<39FFF00FF0390F0003C01500
1402140C14105C5C5C49C7FC130213075BEB3780EB43C01383EB01E06D7EA2147880143E
141E80158015C039FFF03FF01C1B7E9A21>75 D<EAFFF8000FC7FCB01408A41418141014
30147014F0B5FC151B7E9A1A>I<B4EC7FC0000FEC7C00A2D80B8013BCA23909C0013CA3
3808E002A2EB7004A3EB3808A2EB1C10A3EB0E20A3EB0740A2EB0380A2121C3AFF8103FF
C0221B7E9A27>I<B4EB3FE0390F800700EBC002120BEA09E013F012081378133CA2131E
130FA2EB0782EB03C214E21301EB00F214FA147A143E141EA2140E1406121C38FF80021B
1B7E9A20>I<EB3FC0EBE0703803801C48487E000E7F48EB0380003C14C0003813010078
14E000701300A200F014F0A7007014E000781301A2003814C0003C1303001C14806CEB07
006C130E6C6C5A3800E070EB3FC01C1D7E9B21>I<B512C0380F0070143C141E140E140F
A4140E141E143C1470EBFFC090C7FCACEAFFF0181B7E9A1D>I<B5FC380F01E0EB007880
141C141EA4141C143C5CEB01E0EBFF80EB01E0EB0070147880A61510A2141C39FFF00E20
C7EA03C01C1C7E9A1F>82 D<3807F040380C0CC0EA3002EA7001EA600012E01440A36C13
001278127FEA3FF0EA1FFE6C7E0001138038001FC01303EB01E0A2EA8000A36C13C0A238
E0018038D00300EACE06EA81F8131D7E9B18>I<007FB512E038700F0000601460004014
20A200C0143000801410A300001400B0497E3803FFFC1C1B7F9A1F>I<39FFF03FE0390F
0007001402B36C5B138000035B12016C6C5AEB7060EB1F801B1C7E9A20>I<39FFE003F8
391F0001E0EC00C06C1480A23907800100A23803C002A213E000015BA26C6C5AA213F8EB
7810A26D5AA2EB3E60EB1E40A26D5AA26DC7FCA313021D1C7F9A20>I<3AFFC1FFC0FF3A
1F003E003C001E011E131816086C1510141FA2D807801420EC278013C000031540EC43C0
01E014C000011580EC81E001F013E1000015009038F100F101F913F3017913F2017A137A
013E137CA2013C133C011C1338A20118131801081310281C7F9A2B>I<387FFFF8387C00
F01270386001E0EB03C01240EB0780130F1400EA001E133E133C5B13F85B485A1203EBC0
08EA0780120FEB0018121E1410481330481370EB01F0B5FC151B7E9A1A>90
D<EA0808EA1010EA2020EA4040A2EA8080A3EAB0B0EAF8F8EA7878EA30300D0C7A9B15>
92 D<EA0FE0EA3838EA3C1C7F12181200133EEA07EEEA1E0E1238127800F01320A3EA70
1E38382740381FC38013117F9015>97 D<12FC121CAA137E381D8380381E01C0381C00E0
14F014701478A5147014F014E0381E01C03819838038107C00151C7F9B18>I<EA03F8EA
0E0EEA1C1E1238EA780CEA700012F0A512701278EA3801EA1C02EA0E04EA03F810117F90
13>I<EB0FC01301AAEA01F1EA0E0DEA1C03EA38011278127012F0A5127012781238EA1C
03EA0E0D3803F1F8151C7F9B18>I<EA03F0EA0E18EA180CEA380EEA7007A212F0B5FCEA
F000A31270A2EA3801EA1C02EA0E04EA03F810117F9013>I<13F8EA018CEA071E1206EA
0E0C1300A6EAFFE0EA0E00AFEA7FE00F1C809B0D>I<EB03803807E4C0EA1C3838381C80
1400EA781EA3EA381CA26C5AEA37E00020C7FC1230A2EA3FF86CB4FC1480EA3003386001
C0EAC000A33860018038300300EA1C0EEA07F8121B7F9115>I<12FC121CAA137EEB8380
EA1D01001E13C0121CAC38FF8FF8151C7F9B18>I<1218123CA21218C7FCA712FC121CAF
EAFF80091C7F9B0C>I<13C0EA01E0A2EA00C01300A7EA07E01200B31260EAF0C012F1EA
6180EA3E000B24829B0D>I<12FC121CAAEB0FE0EB0780EB060013085B5B1360EA1DE0EA
1E70EA1C787F131C7F130FEB078014C038FF8FF0141C7F9B16>I<12FC121CB3A8EAFF80
091C7F9B0C>I<39FC7E07E0391C838838391D019018001EEBE01C001C13C0AC3AFF8FF8
FF8021117F9024>I<EAFC7E381C8380EA1D01001E13C0121CAC38FF8FF815117F9018>I<
EA03F0EA0E1CEA1806EA380738700380A200F013C0A500701380A238380700EA1806EA0E
1CEA03F012117F9015>I<EAFC7E381D8380381E01C0381C00E014F014701478A5147014
F014E0381E01C0381D8780381C7C0090C7FCA7B47E15197F9018>I<EAFCF0EA1D1CEA1E
3CA2EA1C181300ABEAFFC00E117F9011>114 D<EA1FC8EA3038EA4018EAC008A2EAE000
127F13E0EA1FF0EA01F8EA003CEA800CA212C0EAE008EAD030EA8FC00E117F9011>I<12
04A4120CA2121C123CEAFFE0EA1C00A91310A4120CEA0E20EA03C00C197F9810>I<38FC
0FC0EA1C01AC1303120CEA060D3803F1F815117F9018>I<38FF07E0383C0380381C0100
A2EA0E02A2EA0F06EA0704A2EA0388A2EA01D0A213F06C5AA2134013117F9016>I<39FF
3FC3F0393C0701C0001C130015801480000EEB81001309000713C2131014E2380390E4EB
A064EBE07C00011378EBC03800001330EB80101C117F901F>I<38FF0FE0383C0700EA1C
06EA0E046C5AEA039013E0120112007FEA0138EA023CEA061C487EEA08070038138038FC
0FE013117F9016>I<38FF07E0383C0380381C0100A2EA0E02A2EA0F06EA0704A2EA0388
A2EA01D0A213F06C5AA21340A25BA212F190C7FC12F21266123813197F9016>I<EA7FFE
EA701CEA603CEA4038137013E01241EA01C0EA0380EA0700EA0F02120E121CEA38041278
EA701CEAFFFC0F117F9013>I<B512F01401808A15>I E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fh cmbx10 12 43
/Fh 43 123 df<903901FF81FE011F9038EFFF80903A7F80FF87C0D9FE00EB0FE03903FC
01FE13F8D807F013FCEE07C093C7FCA7B712F8A32707F001FCC7FCB3A33A7FFF1FFFE0A3
2B2A7FA928>11 D<49B4FC011F13C090387F80F09038FE00F83903FC01FCEBF803EA07F0
A36E5A6E5A92C7FCA4B612FCA33807F001B3A33A7FFF1FFFC0A3222A7FA926>I<B51280
A611067F9017>45 D<EC03804A7EA24A7EA34A7EA24A7EA3EC73FCA2ECF3FE14E101017F
14C0A2010380EC807F010780EC003FA2010E6D7EA2011E80011C130F011FB5FC4980A290
39780007FC0170130301F080491301A2000181497F00031680D8FFFE011F13FEA32F297E
A834>65 D<B612FCEDFF80823A03F8001FF06F7E6F7E1503A2821501A315035EA24B5A4B
5A4B5AEDFFC090B548C7FCEDFFE09039F80007F0ED03FC6F7EA26F7EA21780A617005D4B
5A4B5AED1FF8B75A16C04BC7FC29297DA831>I<91393FF00180903903FFFE03010FEBFF
8F90393FF007DF9039FF8001FF4848C7FC4848143F4848141F485A001F150F491407123F
5B007F1503A25B00FF92C7FCAB127F6DEC0380A2123F7F001F15076D1500000F5D6C6C14
1E6C6C143E6C6C5C6C6C6C5B90393FF007E0010FB55A010349C7FC9038003FF0292B7CA9
32>I<B612F8EDFF8016E03A03FC001FF8ED07FCED01FE6F7EEE7F80EE3FC0161F17E0A2
EE0FF0A417F8AA17F0A3EE1FE0A217C0163FEE7F801700ED01FE4B5AED1FF8B712E01680
03FCC7FC2D297DA835>I<B712F0A33903FC000FED03F81501150016781638A3EDE03C16
1CA302011300A2140790B5FCA3EBFC071401A202001307A3160E1500A2161EA2161C163C
167C16FC1501150FB712F8A328297EA82D>I<B712E0A33903FC001FED07F01501A21500
1670A31678EDE038A316001401A2140790B5FCA3EBFC071401A21400A492C7FCA9B512FC
A325297EA82B>I<91393FF00180903903FFFE03010FEBFF8F90393FF007DF9039FF8001
FF4848C7FC4848143F4848141F485A001F150F491407123F5B007F1503A25B00FF92C7FC
A992387FFFFCA26C7E9238007F80A2123F7F121F7F120F6C7E6C7E6CB414FF6C6D5A9039
3FF007DF010FB512870103EBFE019026003FF0C7FC2E2B7CA936>I<B539F01FFFFEA3D8
03FCC7EA7F80AF90B7FCA301FCC7127FB1B539F01FFFFEA32F297DA836>I<B512FCA338
01FE00B3B1B512FCA316297EA81A>I<B539F001FFFCA3D803FCC7EA1F00163E16785EED
03E04B5A4B5A4BC7FC153E15785DEC03E04A5A140F4A7E143F4A7E4A7E9038FFE7FC14C7
EC83FEEC01FFD9FC007FA26F7E6F7E6F7EA26F7E6F7E6F7EA26F7E6F1380EE7FC0B539F0
0FFFFEA32F297DA836>75 D<B512FCA3D803FCC8FCB3A316E0A4150116C0A21503A21507
A2150F153FEDFF80B7FCA323297EA829>I<D8FFFE92381FFFC0A26D5D0003EFF000A2D9
BF801477A2D99FC014E7A2D98FE0EB01C7A2D987F0EB0387A3D983F8EB0707A2D981FC13
0EA2D980FE131CA26E133880A291383F8070A291381FC0E0A291380FE1C0A3913807F380
A2913803FF00A26E5AA26E5AA2D8FFFE4AB512C01578A23A297DA841>I<B612F815FF16
C03A03FC003FE0ED0FF0ED07F816FC150316FEA716FC150716F8ED0FF0ED3FE090B61280
EDFE0001FCC8FCB0B512F0A327297DA82F>80 D<B612E015FE6F7E3A03FC007FE0ED0FF0
6F7E82150382A65E4B5AA2ED1FE0ED7FC090B500FEC7FC15F89038FC01FCEC007F6F7E82
151F82A482A4170716F8A2030F130FB539F007FC0E923803FE1C923800FFF8C9EA1FE030
2A7DA834>82 D<90387F80603903FFE0E0000F13F9381FC07F383F001F003E130F007E13
07007C130300FC1301A314007E7E6D13007FEA7FFEEBFFE06C13FC6C13FF1580000714C0
6C14E0C67E010713F0EB007FEC0FF81407140312E01401A37E15F07E6C13036C14E06CEB
07C0EBE01F00F3B5120000E05B38C01FF01D2B7CA926>I<007FB712C0A39039803FC03F
D87E00140700781503A20070150100F016E0A2481500A5C71500B3A4017FB512E0A32B28
7EA730>I<B500F090383FFF80A3D803FEC73801E00000015E7F6C4B5AA26E1307017F92
C7FC6E5B013F140E6E131E011F141C80010F5CA26E1378010714706E13F001035CECFE01
01015C14FF6D495AA21587027F90C8FC15CFEC3FCE15EEEC1FFCA26E5AA36E5AA26E5AA2
6E5A31297FA834>86 D<B53CE07FFFF007FFF0A32803FC0001FEC7EA1C00A26C6C6E5C81
A26C6C6F5BA26E486D13F0017F5FA26D6C486D485A169FA2903C1FE0070FF00380A2DAF0
0FEBF807010FD90E0791C7FCA2902607F81EEBFC0EED1C0302FC151E010390393801FE1C
A2DAFE78EBFF3C0101D970001338A26D6C48EB7FF0A36E486D5AA36E486D5AA26EC76C5A
A3020E6EC8FC44297FA847>I<3803FF80000F13F0381F01FC383F80FE147FA2EC3F80EA
1F00C7FCA3EB0FFF90B5FC3807FC3FEA1FE0EA3F80127F130012FEA3147F7E6CEBFFC039
3F83DFFC380FFF8F3801FC031E1B7E9A21>97 D<EAFFE0A3120FACEBE1FE9038E7FF8090
38FE07E09038F803F8496C7E496C7EA281811680A916005D5D7F4A5A6D485A90389E0FE0
90380FFF80260E01FCC7FC212A7EA926>I<EB3FF8EBFFFE3803F01F390FE03F80EA1FC0
EA3F80A2007FEB1F0090C8FC5AA97E7F003FEB01C013C0001F1303390FE007803903F01F
003800FFFCEB3FE01A1B7E9A1F>I<EC3FF8A31403ACEB1FE3EBFFFB3803F83F380FE00F
381FC007383F8003A2127F13005AA97E1380123F1407381FC00F380FE01F3A03F03FFF80
3800FFF3EB3FC3212A7EA926>I<EB3FE03801FFF83803F07E380FE03F391FC01F80393F
800FC0A2EA7F00EC07E05AA390B5FCA290C8FCA47E7F003F14E01401D81FC013C0380FE0
033903F81F803900FFFE00EB1FF01B1B7E9A20>I<EB07F0EB3FFCEBFE3E3801FC7FEA03
F8A2EA07F0143E1400A7B512C0A33807F000B3A3387FFF80A3182A7EA915>I<15F09038
FF83F80003EBEF7C380FC1FCEA1F80003F13FE9038007E1048EB7F00A66C137EEB80FE00
1F5B380FC1F8381FFFE0001813800038C8FC123CA2123E383FFFF814FF6C14C06C14E06C
14F0121F397E0007F8007C13015A1400A36C1301007EEB03F06CEB07E0390FC01F803903
FFFE0038007FF01E297E9B22>I<EAFFE0A3120FAC147F9038E1FFC09038E787E09038EE
07F09038FC03F813F813F0A313E0AF3AFFFE3FFF80A3212A7DA926>I<1207EA1FC0EA3F
E0A5EA1FC0EA0700C7FCA7EAFFE0A3120FB3A3EAFFFEA30F2B7DAA14>I<EAFFE0A3120F
ACEC1FFCA3EC07C0EC0F80EC1E00147C5CEBE1F0EBE3E0EBE7C0EBEFE0EBFFF0A280EBF3
FCEBE1FE13C080EC7F80143F15C0EC1FE0EC0FF039FFFC3FFEA31F2A7EA924>107
D<EAFFE0A3120FB3B2EAFFFEA30F2A7DA914>I<3BFFC07F800FF0903AC1FFE03FFC903A
C783F0F07E3B0FCE03F9C07F903ADC01FB803F01F8D9FF00138001F05BA301E05BAF3CFF
FE1FFFC3FFF8A3351B7D9A3A>I<38FFC07F9038C1FFC09038C787E0390FCE07F09038DC
03F813F813F0A313E0AF3AFFFE3FFF80A3211B7D9A26>I<EB3FE03801FFFC3803F07E39
0FC01F80391F800FC0003F14E0EB00074814F0A34814F8A86C14F0A2393F800FE0A2001F
14C0390FC01F803907F07F003801FFFC38003FE01D1B7E9A22>I<38FFE1FE9038E7FF80
9038FE07E0390FF803F8496C7E01E07F140081A2ED7F80A9EDFF00A25DEBF0014A5A01F8
5B9038FE0FE09038EFFF80D9E1FCC7FC01E0C8FCA9EAFFFEA321277E9A26>I<38FFC1F0
EBC7FCEBCE3E380FDC7F13D813F813F0143E14005BAFB5FCA3181B7E9A1C>114
D<3803FE30380FFFF0EA3E03EA7800127000F01370A27E00FE1300EAFFE013FE387FFFC0
6C13E06C13F0000713F8C613FC1307EAE000147C6C133CA27E14787E38FF01F038F7FFC0
00C11300161B7E9A1B>I<1370A413F0A312011203A21207381FFFF0B5FCA23807F000AD
1438A73803F870000113F03800FFE0EB1F8015267FA51B>I<39FFE03FF8A3000F1303B1
1407A2140F0007131F3A03F03BFF803801FFF338003FC3211B7D9A26>I<3AFFFE03FF80
A33A0FF0007800000714706D13F000035CEBFC0100015CA26C6C485AA2EBFF07017F90C7
FC148FEB3F8E14CEEB1FDCA2EB0FF8A36D5AA26D5AA26D5A211B7F9A24>I<3BFFFC3FFC
0FFEA33B0FE007E000E03B07F003F001C0A29039F807F80300031680A23B01FC0EFC0700
A291381EFE0F3A00FE1C7E0EA29039FF383F1E017F141C147890393FF01FB8A29138E00F
F8011F5CA26D486C5AA36D486C5AA22F1B7F9A32>I<003FB51280A21300003C14003838
01FE387803FC130700705B495A495A1200495A495A13FF91C7FC3901FE0380EA03FCA2EA
07F8380FF007121F01E0130048485A48485A00FF137F90B5FCA2191B7E9A1F>122
D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fi cmbx10 14.4 16
/Fi 16 123 df<B812F0A3C69038C0003FEE07F816031600A21778A21738A383ED0380A3
94C7FC1507A2150F153F91B5FCA3ECC03F150F1507A21503EF0380A392C7EA0700A45FA2
171EA2173E177E17FE1603161FB85AA331317EB036>69 D<913A03FF800380023FEBF007
49B5EAFC0F01079038007F1FD91FF8EB0FBFD93FE0EB03FFD9FFC07F48497F4890C8127F
4848153F485A171F485A170F485AA2007F1607A25B94C7FC12FFA90307B512FEA2127FDB
000113807FA2123FA26C7EA26C7EA26C7E6C7E6C6D5B6C7FD93FE05BD91FF85B903A07FF
803F1F01019038FFFE07D9003FEBF80102030180C7FC37337BB141>71
D<B500C091387FFFF08080C66D913800F8006E157080EBEFFF01E77F13E301E17F01E07F
816E7E6E7E6E7E6E7E6E7F806E7F6E7F826F7E6F7E6F7E6F7E6F13806F13C0816F13E0EE
7FF017F8EE3FFCEE1FFEEE0FFF7013F0828282177FA2173F171F170F17071703486C1501
B500E014001870A23C317EB041>78 D<B712C016FCEEFF80C6D9C00113E09238003FF0EE
0FFC160783707EA284A695C7FCA24C5A5F160FEE3FF04BB45A91B6128004FCC8FC829139
C007FF8003007F707E163F83707EA583A4194019E083160F1801DC07FF13C0B6D8C00313
8770EBFF80706C1300CAEA0FFC3B327EB03E>82 D<B6D8C003B512C0A3C601C0C73807E0
00715AB3AF017F4B5A80170F013F93C7FC6D6C5C171E6D6C147C6D6C5C6DB4EB03F00100
9038E01FE0023FB55A020F49C8FC020013F03A327EB03F>85 D<EB7FF80003B5FC000F14
C0391FE01FF09038F007F88114036E7EEA0FE0EA07C0EA0100C7FCA2EB01FF133F3801FF
F13807FE01EA1FF0EA3FE0EA7FC0138012FF1300A3EB80031407387FC00F393FF03EFF3A
1FFFF87FF80007EBF03FC6EB801F25207E9F28>97 D<EB07FF017F13E048B512F83903FC
03FC3807F807EA0FF0EA1FE0EA3FC0EC03F8007FEB01F0903880004000FF1400AA6C7EA2
003F140E7F001F141E6C6C133C6C6C13783903FF01F06CEBFFE06C6C1380903807FC001F
207D9F25>99 D<EB0FFE90387FFFC048B57E3903FE0FF03907F801F848486C7E48487F48
48137FA2007F80491480A212FFA290B6FCA30180C8FCA3127FA27F003FEC03807F001F14
076C6CEB0F006C6C133E3903FF01FCC6EBFFF8013F13E0010790C7FC21207E9F26>101
D<14FF010713C0011F13F0EB7FC79038FF0FF85A13FE120313FCEC07F0EC01C091C7FCA7
B512FCA3D803FCC7FCB3A8387FFFF0A31D327EB119>I<EA01F812FFA3120F1207ADED7F
FCA3ED1FC01600153E15F84A5A4A5AEC0780021FC7FC143E147EEBF9FEEBFBFF90B57E6E
7E496C7E496C7E13F06E7E6E7E6E7E6E7EA26E1380ED7FC0ED3FE016F0B56CB5FCA32832
7EB12C>107 D<2703F007F8EB0FF000FFD93FFFEB7FFE4A6DB5FC903CF1F03FC3E07F80
3D0FF3C01FE7803FC02607F780EBEF009126000FFEEB1FE001FE5C495CA2495CB3B500C1
B50083B5FCA340207D9F45>109 D<3903F007F800FFEB3FFF4A7F9039F1F03FC03A0FF3
C01FE03807F7804A6C7E13FE5BA25BB3B500C1B51280A329207D9F2E>I<3803F03F00FF
EBFFC001F113F0EBF3C7390FF78FF80007130F13FEA29038FC07F0EC03E0EC008015005B
B1B512E0A31D207E9F22>114 D<EBFF87000713EF001F13FF48C67E007C131F805A807E
A2B490C7FC13F8387FFFC014F06C13FC6C7F00077F00011480EA001F010013C0141F00E0
130FA26C1307A27E6CEB0F806C131F39FF803F00EBFFFE00F313F838E07FC01A207D9F21
>I<131CA4133CA3137CA213FC120112031207121FB6FCA3D803FCC7FCB0EC01C0A7EBFE
030001EB0780EBFF0F39007FFF00EB3FFCEB07F01A2E7FAD20>I<003FB512FCA39038C0
0FF8393E001FF0003C133F003814E00078EB7FC0ECFF80EA70014913005C495AEA000F49
5A5C495A017F130EEBFFC014804813005A4848131E5B4848131C4848133C003F147C4913
FC387FC007B6FCA31F207E9F25>122 D E
%EndDVIPSBitmapFont
end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 360dpi
TeXDict begin
%%PaperSize: A4
%%EndSetup
%%Page: 1 1
1 0 bop -209 -166 a Fi(GNU)27 b(Emacs)g(Referenzk)-5
b(arte)-295 -37 y Fh(Emacs)22 b(Starten)-295 59 y Fg(Um)13
b(GNU)h(Emacs)f(19)h(zu)f(starten,)h(tipp)q(en)f(Sie)g(ein:)18
b Ff(emacs)-295 123 y Fg(Um)12 b(eine)f(Datei)j(fuers)d(Editieren)g(zu)
h(laden,)f(lesen)h(Sie)g(un)o(ten)f(w)o(eiter.)-295 241
y Fh(Emacs)22 b(V)-6 b(erlassen)-295 337 y Fg(Emacs)13
b(pausieren)e(lassen)431 b Ff(C-z)-295 384 y Fg(Emacs)13
b(b)q(eenden)575 b Ff(C-x)21 b(C-c)-295 497 y Fh(Dateien)-295
592 y Fg(Datei)14 b Fe(o)q(e\013nen)599 b Ff(C-x)21 b(C-f)-295
640 y Fg(Datei)14 b Fe(sic)o(hern)600 b Ff(C-x)21 b(C-s)-295
688 y Fe(alle)13 b Fg(Dateien)h(sic)o(hern)489 b Ff(C-x)21
b(s)-295 736 y Fg(den)13 b(Inhalt)h(einer)e(anderen)g(Datei)j
Fe(einfuegen)80 b Ff(C-x)21 b(i)-295 784 y Fg(diese)13
b(Datei)h(durc)o(h)e(eine)h(andere)g(ersetzen)153 b Ff(C-x)21
b(C-v)-295 832 y Fg(Datei)14 b(neu)f(anlegen)g(und)g(sp)q(eic)o(hern)
257 b Ff(C-x)21 b(C-w)-295 879 y Fg(v)o(ersion)13 b(con)o(trol)g
(ein/ausc)o(hec)o(k)o(en)297 b Ff(C-x)21 b(C-q)-295 999
y Fh(Hilfe)-295 1095 y Fg(Das)14 b(Hilfesystem)e(ist)h(einfac)o(h)f(zu)
i(b)q(edienen.)h(Tipp)q(en)d(Sie)h Ff(C-h)h Fg(\(o)q(der)-295
1143 y Ff(F1)p Fg(\).)19 b(Neulinge)12 b(tipp)q(en)h
Ff(C-h)22 b(t)14 b Fg(um)f(ein)g Fe(tutorial)h Fg(zu)g(starten.)-295
1207 y(Hilfe)f(F)l(enster)g(en)o(tfernen)440 b Ff(C-x)21
b(1)-295 1255 y Fg(Hilfe)13 b(F)l(enster)g(scrollen)473
b Ff(C-M-v)-295 1319 y Fg(aprop)q(os:)17 b(zeigt)d(alle)g(Befehle)f
(mit)g(dem)g(Muster)60 b Ff(C-h)21 b(a)-295 1367 y Fg(zeigt)14
b(die)f(F)l(unktion)h(mit)f(dieser)g(T)l(astenk)o(om)o(b.)79
b Ff(C-h)21 b(c)-295 1415 y Fg(b)q(esc)o(hreibt)11 b(die)j(F)l(unktion)
426 b Ff(C-h)21 b(f)-295 1462 y Fg(mo)q(dussp)q(ezi\014s)o(c)o(h)o(e)11
b(Information)318 b Ff(C-h)21 b(m)-295 1580 y Fh(W)-6
b(as)24 b(tun)f(w)n(enn)f(nic)n(h)n(ts)g(mehr)g(geh)n(t)-295
1676 y Fe(Abbrec)o(hen)14 b Fg(eines)f(V)l(organgs)346
b Ff(C-g)-295 1724 y Fe(Wiederherstellung)16 b Fg(v)o(on)e(Dateien)150
b Ff(M-x)22 b(recover-file)-295 1772 y Fe(ruec)o(kgaengig)15
b Fg(mac)o(hen)432 b Ff(C-x)21 b(u)-295 1819 y Fg(Pu\013er)12
b(in)i(Ursprungsz)o(ustand)c(bringen)115 b Ff(M-x)22
b(revert-buffer)-295 1867 y Fg(Bildsc)o(hirm)o(anzei)o(ge)11
b(in)j(Ordn)o(ung)d(bringen)150 b Ff(C-l)-295 1985 y
Fh(Inkremen)n(telle)19 b(Suc)n(he)-295 2081 y Fg(Suc)o(he)12
b(v)o(orw)o(aerts)564 b Ff(C-s)-295 2129 y Fg(Suc)o(he)12
b(ruec)o(kw)o(aerts)523 b Ff(C-r)-295 2176 y Fg(Suc)o(he)12
b(mit)i(regulaeren)d(Ausdruec)o(k)o(en)222 b Ff(C-M-s)-295
2224 y Fg(Ruec)o(kw)o(aertssuc)o(he)11 b(mit)i(reg.)18
b(Ausdruec)o(k)o(en)114 b Ff(C-M-r)-295 2272 y Fg(letzten)14
b(Suc)o(hausdr)o(uc)n(k)e(ausw)o(aehlen)247 b Ff(M-p)-295
2320 y Fg(spaeteren)12 b(Suc)o(hausdru)o(c)o(k)g(ausw)o(aehlen)197
b Ff(M-n)-295 2368 y Fg(inkremen)o(telle)11 b(Suc)o(he)h(b)q(eenden)328
b Ff(RET)-295 2415 y Fg(ein)13 b(Suc)o(hzeic)o(hen)d(zuruec)o(kgehen)
311 b Ff(DEL)-295 2463 y Fg(Suc)o(he)12 b(abbrec)o(hen)553
b Ff(C-g)-295 2527 y Fg(Wiederholtes)11 b(Druec)o(k)o(en)g(v)o(on)i
Ff(C-s)g Fg(o)q(der)f Ff(C-r)i Fg(suc)o(h)o(t)d(w)o(eitere)h(T)l
(re\013er.)-295 2575 y(W)l(enn)e(Emacs)e(suc)o(h)o(t,)i(un)o(terbric)o
(h)n(t)e Ff(C-g)i Fg(n)o(ur)f(die)g(jew)o(eils)f(letzte)i(Suc)o(he.)
-240 2639 y Fd(c)-250 2640 y Fc(\015)i Fd(1996)h(F)m(ree)h(Soft)o(w)o
(are)h(F)m(oundation,)g(Inc.)i(P)o(ermissions)d(on)f(bac)o(k.)k(v2.1)
1022 -166 y Fh(Cursor)24 b(Bew)n(egung)1022 -67 y Fe(T)l(extteile)16
b(ueb)q(erspringen)282 b(ruec)o(kw.)42 b(v)o(orw.)1022
-19 y Fg(Zeic)o(hen)643 b Ff(C-b)144 b(C-f)1022 29 y
Fg(W)l(ort)692 b Ff(M-b)144 b(M-f)1022 77 y Fg(Zeile)697
b Ff(C-p)144 b(C-n)1022 124 y Fg(zum)13 b(Zeilenende)e(springen)326
b Ff(C-a)144 b(C-e)1022 172 y Fg(Satz)705 b Ff(M-a)144
b(M-e)1022 220 y Fg(P)o(aragraph)591 b Ff(M-{)144 b(M-})1022
268 y Fg(Seite)695 b Ff(C-x)22 b([)101 b(C-x)22 b(])1022
316 y Fg(Lisp-s-expression)469 b Ff(C-M-b)102 b(C-M-f)1022
363 y Fg(F)l(unktion)618 b Ff(C-M-a)102 b(C-M-e)1022
411 y Fg(zum)13 b(Pu\013eranfang)f(\(o)q(der)i(Ende\)springen)61
b Ff(M-<)144 b(M->)1022 476 y Fg(eine)13 b(Bildsc)o(hirmse)o(ite)f(run)
o(ter)g(scrollen)212 b Ff(C-v)1022 524 y Fg(eine)13 b(Bildsc)o(hirmse)o
(ite)f(ho)q(c)o(h)h(scrollen)239 b Ff(M-v)1022 572 y
Fg(nac)o(h)13 b(links)h(scrollen)522 b Ff(C-x)22 b(<)1022
620 y Fg(nac)o(h)13 b(rec)o(h)o(ts)g(scrollen)500 b Ff(C-x)22
b(>)1022 668 y Fg(Cursorzeile)11 b(in)j(die)f(Bildsc)o(hirmm)o(itte)e
(scrollen)75 b Ff(C-u)22 b(C-l)1022 784 y Fh(Lo)r(esc)n(hen)1022
883 y Fe(T)l(extteile)418 b(ruec)o(kw)o(aerts)43 b(v)o(orw)o(aerts)1022
931 y Fg(Zeic)o(hen)12 b(\(lo)q(esc)o(hen\))265 b Ff(DEL)234
b(C-d)1022 979 y Fg(W)l(ort)513 b Ff(M-DEL)192 b(M-d)1022
1027 y Fg(Zeile)14 b(\(bis)f(zum)g(Ende\))218 b Ff(M-0)22
b(C-k)149 b(C-k)1022 1075 y Fg(Satz)526 b Ff(C-x)22 b(DEL)149
b(M-k)1022 1122 y Fg(Lisp-s-expression)290 b Ff(M--)22
b(C-M-k)107 b(C-M-k)1022 1187 y Fe(Bereic)o(he)14 b Fg(lo)q(esc)o(hen)
512 b Ff(C-w)1022 1235 y Fg(Bereic)o(h)13 b(in)g(die)g(Ablage)g(k)o
(opieren)296 b Ff(M-w)1022 1283 y Fg(Bis)14 b(zum)f Fb(Zeichen)g
Fg(lo)q(esc)o(hen)386 b Ff(M-z)22 b Fb(Zeichen)1022 1331
y Fg(letztes)14 b(gelo)q(esc)o(h)o(tes)f(Zeic)o(hen)f(einsetzen)193
b Ff(C-y)1022 1379 y Fg(eins)13 b(da)o(v)o(or)h(einsetzen)493
b Ff(M-y)1022 1502 y Fh(Markieren)1022 1601 y Fg(Mark)o(e)14
b(setzen)619 b Ff(C-@)22 b Fg(or)f Ff(C-SPC)1022 1649
y Fg(zwisc)o(hen)12 b(Cursor)g(und)h(Mark)o(e)g(w)o(ec)o(hseln)171
b Ff(C-x)22 b(C-x)1022 1697 y Fg(Mark)o(e)14 b Fb(A)o(r)n(gument)j
Fe(W)l(orte)e Fg(en)o(tfern)o(t)e(setzen)114 b Ff(M-@)1022
1744 y Fe(P)o(aragraph)15 b Fg(markieren)440 b Ff(M-h)1022
1792 y Fe(Seite)15 b Fg(markieren)558 b Ff(C-x)22 b(C-p)1022
1840 y Fe(Lisp-s-expression)17 b Fg(markieren)300 b Ff(C-M-@)1022
1888 y Fe(F)l(unktion)14 b Fg(markiern)491 b Ff(C-M-h)1022
1936 y Fg(den)13 b(ganzen)h Fe(Pu\013er)h Fg(markieren)310
b Ff(C-x)22 b(h)1022 2058 y Fh(In)n(teraktiv)n(es)h(Ersetzen)1022
2157 y Fg(Zeic)o(henk)o(ette)13 b(in)o(teraktiv)h(ersetzen)274
b Ff(M-\045)1022 2205 y Fg(mit)14 b(regulaeren)e(Ausdruec)o(k)o(en)122
b Ff(M-x)22 b(query-replace-regexp)1022 2270 y Fg(Mo)q(eglic)o(he)13
b(An)o(t)o(w)o(orten)f(in)i(diesem)e(Mo)q(dus:)1022 2335
y(dies)h Fe(ersetzten)j Fg(und)c(zum)h(naec)o(hsten)f(gehen)94
b Ff(SPC)1022 2382 y Fg(dies)13 b(ersetzen)629 b Ff(,)1022
2430 y Fg(dies)13 b Fe(ueb)q(erspringen)p Fg(,)k(zum)c(naec)o(hsten)f
(gehen)58 b Ff(DEL)1022 2478 y Fg(alle)14 b(v)o(erbleib)q(enden)c(T)l
(re\013er)j(ersetzen)230 b Ff(!)1022 2526 y Fg(eine)13
b(Ersetzung)p Fe(ruec)o(kgaengig)h Fg(mac)o(hen)160 b
Ff(^)1022 2574 y Fg(in)o(teraktiv)o(en)14 b(Mo)q(dus)p
Fe(v)o(erlassen)310 b Ff(RET)1022 2622 y Fg(rekursiv)o(en)12
b(Mo)q(dus)h(starten)h(\()p Ff(C-M-c)h Fg(v)o(erlassen\))58
b Ff(C-r)929 3414 y Fg(1)p eop
%%Page: 2 2
2 1 bop -295 -166 a Fh(Mehrere)22 b(F)-6 b(enster)-295
-83 y Fg(Die)11 b(zw)o(eite)g(T)l(astenk.)18 b(b)q(ezieh)o(t)10
b(sic)o(h)g(immer)f(auf)i(das)g(andere)f(F)l(enster:)-295
-22 y(alle)j(anderen)f(F)l(enster)h(in)h(den)f(Hin)o(tergrund)119
b Ff(C-x)21 b(1)-295 39 y Fg(F)l(enster)13 b(v)o(ertik)n(al)h(teilen)
325 b Ff(C-x)22 b(2)127 b(C-x)22 b(5)f(2)-295 87 y Fg(dieses)12
b(F)l(enster)h(lo)q(esc)o(hen)304 b Ff(C-x)22 b(0)127
b(C-x)22 b(5)f(0)-295 148 y Fg(F)l(enster)13 b(horizon)o(tal)g(teilen)
414 b Ff(C-x)21 b(3)-295 209 y Fg(das)13 b(andere)g(F)l(enster)g
(scrollen)362 b Ff(C-M-v)-295 270 y Fg(ins)13 b(andere)f(F)l(enster)h
(w)o(ec)o(hseln)489 b Ff(C-x)22 b(o)127 b(C-x)22 b(5)f(o)-295
318 y Fg(Pu\013er)12 b(in)i(ein)f(anderes)f(F)l(enster)h(bringen)316
b Ff(C-x)22 b(4)f(b)85 b(C-x)22 b(5)f(b)-295 366 y Fg(Pu\013er)12
b(in)i(einem)e(anderen)g(F)l(enster)h(darstellen)215
b Ff(C-x)22 b(4)f(C-o)43 b(C-x)22 b(5)f(C-o)-295 413
y Fg(Datei)14 b(in)g(ein)f(anderes)f(F)l(enster)h(o)q(e\013nen)336
b Ff(C-x)22 b(4)f(f)85 b(C-x)22 b(5)f(f)-295 461 y Fg(Datei)14
b(im)g(Ansic)o(h)o(tmo)q(du)o(s)d(in)j(anderem)d(F)l(enster)i(o)q
(e\013nen)49 b Ff(C-x)22 b(4)f(r)85 b(C-x)22 b(5)f(r)-295
509 y Fg(Dired)13 b(in)g(einem)g(anderen)f(F)l(enster)h(o)q(e\013nen)
272 b Ff(C-x)22 b(4)f(d)85 b(C-x)22 b(5)f(d)-295 557
y Fg(T)l(ag)14 b(in)g(einem)e(anderen)g(F)l(enster)h(\014nden)324
b Ff(C-x)22 b(4)f(.)85 b(C-x)22 b(5)f(.)-295 618 y Fg(F)l(enster)13
b(v)o(ergro)q(essern)485 b Ff(C-x)21 b(^)-295 666 y Fg(F)l(enster)13
b(sc)o(hmaler)e(mac)o(hen)398 b Ff(C-x)21 b({)-295 714
y Fg(F)l(enster)13 b(breiter)f(mac)o(hen)437 b Ff(C-x)21
b(})-295 810 y Fh(F)-6 b(ormattierung)-295 893 y Fe(Zeile)14
b Fg(\(mo)q(dusabhaengig\))e(einruec)o(k)o(en)197 b Ff(TAB)-295
941 y Fe(Bereic)o(h)13 b Fg(\(mo)q(dusabh.\))18 b(einruec)o(k)o(en)239
b Ff(C-M-\\)-295 989 y Fe(Lisp-s-expression)15 b Fg(\(mo)q(dusabh.\))h
(einruec)o(k)o(en)40 b Ff(C-M-q)-295 1037 y Fg(Bereic)o(h)12
b Fb(A)o(r)n(gument)17 b Fg(Spalten)c(einruec)o(k)o(en)163
b Ff(C-x)21 b(TAB)-295 1085 y Fg(Zeilen)o(um)o(b)o(ru)o(c)o(h)11
b(nac)o(h)i(Cursor)f(einfuegen)164 b Ff(C-o)-295 1133
y Fg(Zeilenrest)12 b(v)o(ertik)n(al)i(nac)o(h)f(un)o(ten)f(v)o(ersc)o
(hieb)q(en)86 b Ff(C-M-o)-295 1180 y Fg(Leerzeilen)12
b(um)h(Cursorp)q(osition)e(lo)q(esc)o(hen)152 b Ff(C-x)21
b(C-o)-295 1228 y Fg(Zeile)13 b(mit)h(letzter)f(v)o(erbinden)f(\(Arg.)
18 b(naec)o(hster\))51 b Ff(M-^)-295 1276 y Fg(Leerzeic)o(hen)11
b(an)j(Cursorp)q(osition)e(lo)q(esc)o(hen)136 b Ff(M-\\)-295
1324 y Fg(ein)13 b(Leerzeic)o(hen)f(an)h(Cursorp)q(osition)f(setzen)109
b Ff(M-SPC)-295 1372 y Fg(P)o(aragraph)12 b(au\013uellen)478
b Ff(M-q)-295 1419 y Fg(F)l(uell)13 b(Spalte)g(setzen)517
b Ff(C-x)21 b(f)-295 1467 y Fg(Prae\014x)13 b(setzen)g(fuer)g(jede)g
(Zeile)330 b Ff(C-x)21 b(.)-295 1515 y Fg(Zeic)o(hendarstell)o(ung)11
b(setzen)391 b Ff(M-g)-295 1618 y Fh(Gross-Klein)n(buc)n(hstab)r(en)
-295 1702 y Fg(W)l(ort)15 b(in)e(Grossbuc)o(hstab)q(en)390
b Ff(M-u)-295 1749 y Fg(W)l(ort)15 b(in)e(Klein)o(buc)o(hstab)q(en)396
b Ff(M-l)-295 1797 y Fg(W)l(ord)14 b(mit)g(grossen)e(Anfangsbuc)o
(hstab)q(en)159 b Ff(M-c)-295 1858 y Fg(Bereic)o(h)12
b(in)h(Grossbuc)o(hstab)q(en)347 b Ff(C-x)21 b(C-u)-295
1906 y Fg(Bereic)o(h)12 b(in)h(Klein)o(buc)o(hstab)q(en)353
b Ff(C-x)21 b(C-l)-295 2003 y Fh(Der)h(Minipu\013er)-295
2086 y Fg(Die)14 b(folgenden)e(T)l(astenk)o(om)o(bination)g(gelten)i
(im)f(Minipu\013er:)-295 2147 y(so)h(viel)g(wie)f(mo)q(eglic)o(h)f
(ergaenzen)299 b Ff(TAB)-295 2195 y Fg(ein)13 b(W)l(ort)i(ergaenzen)505
b Ff(SPC)-295 2243 y Fg(ergaenzen)12 b(und)h(ausfuehren)382
b Ff(RET)-295 2290 y Fg(mo)q(eglic)o(he)12 b(Ergaenzungen)g(zeigen)281
b Ff(?)-295 2338 y Fg(letzte)14 b(Eingab)q(e)f(wiederanzeigen)304
b Ff(M-p)-295 2386 y Fg(spaetere)13 b(Eingab)q(e)g(wiederanzeigen)254
b Ff(M-n)-295 2434 y Fg(reg.)18 b(Ausd.)f(ruec)o(kw)o(aerts)12
b(in)h(History)h(suc)o(hen)93 b Ff(M-r)-295 2482 y Fg(reg.)18
b(Ausd.)f(v)o(orw)o(aerts)c(in)g(History)h(suc)o(hen)133
b Ff(M-s)-295 2529 y Fg(V)l(organg)14 b(un)o(terbrec)o(h)o(en)454
b Ff(C-g)-295 2590 y Fg(Tipp)q(en)8 b(Sie)i Ff(C-x)21
b(ESC)h(ESC)11 b Fg(um)e(den)h(letzten)g(Befehl)f(zu)h(editieren)e(und)
-295 2638 y(zu)13 b(wiederholen)e(der)i(im)g(Minipu\013er)e
(ausgefuehrt)i(wurde.)1108 -166 y Fi(GNU)28 b(Emacs)f(Referenzk)-5
b(arte)1022 -33 y Fh(Pu\013er)1022 67 y Fg(anderen)12
b(Pu\013er)h(ausw)o(aehlen)366 b Ff(C-x)22 b(b)1022 115
y Fg(alle)14 b(Pu\013er)e(anzeigen)501 b Ff(C-x)22 b(C-b)1022
162 y Fg(Pu\013er)13 b(lo)q(esc)o(hen)582 b Ff(C-x)22
b(k)1022 279 y Fh(V)-6 b(ertausc)n(hen)1037 378 y Fe(Zeic)o(hen)13
b Fg(v)o(ertausc)o(hen)453 b Ff(C-t)1037 426 y Fe(W)l(orte)15
b Fg(v)o(ertausc)o(hen)483 b Ff(M-t)1037 474 y Fe(Zeilen)13
b Fg(v)o(ertausc)o(hen)487 b Ff(C-x)22 b(C-t)1037 522
y Fe(Lisp-s-expressions)16 b Fg(v)o(ertausc)o(hen)234
b Ff(C-M-t)1022 643 y Fh(Rec)n(h)n(tsc)n(hreibk)n(orrrektur)1022
743 y Fg(Ueb)q(erpruefe)11 b(aktuelles)j(W)l(ort)356
b Ff(M-$)1022 791 y Fg(Ueb)q(erpruefe)11 b(alle)j(W)l(o)q(erter)g(in)g
(Bereic)o(h)111 b Ff(M-x)21 b(ispell-region)1022 838
y Fg(Ueb)q(erpruefe)11 b(den)i(gesam)o(ten)g(Bereic)o(h)137
b Ff(M-x)21 b(ispell-buffer)1022 961 y Fh(T)-6 b(ags)1022
1060 y Fg(T)l(ag)15 b(\014nden)d(\(De\014nition\))437
b Ff(M-.)1022 1108 y Fg(Naec)o(hstes)13 b(V)l(ork)o(ommen)f(v)o(on)i(T)
l(ag)h(\014nden)154 b Ff(C-u)22 b(M-.)1022 1156 y Fg(Neue)13
b(T)l(ags)i(Datei)f(angeb)q(en)254 b Ff(M-x)22 b(visit-tags-table)1022
1204 y Fg(Regulaere)13 b(Ausdruc)o(k)f(Suc)o(he)g(in)h(Dateien)81
b Ff(M-x)21 b(tags-search)1022 1251 y Fg(In)o(terakt.)e(Ersetzen)13
b(in)g(allen)g(Dateien)41 b Ff(M-x)21 b(tags-query-replace)1022
1299 y Fg(Letzte)15 b(T)l(ag)g(Suc)o(he)d(o)q(der)h(Ersetzen)g(no)q(c)o
(hmal)104 b Ff(M-,)1022 1421 y Fh(Shells)1022 1520 y
Fg(Shell)13 b(Kommando)f(ausfuehren)330 b Ff(M-!)1022
1568 y Fg(Shell)13 b(Kommando)f(fuer)h(b)q(ereic)o(h)f(ausfuehren)98
b Ff(M-|)1022 1616 y Fg(Bereic)o(h)13 b(durc)o(h)e(Shell)i(Kommando)f
(\014ltern)150 b Ff(C-u)22 b(M-|)1022 1664 y Fg(Shell)13
b(im)g(F)l(enster)g Ff(*shell*)i Fg(starten)174 b Ff(M-x)21
b(shell)1022 1780 y Fh(Rec)n(h)n(tec)n(k)n(e)1022 1880
y Fg(Kopiere)13 b(Rec)o(h)o(tec)o(k)g(in)h(Register)325
b Ff(C-x)22 b(r)f(r)1022 1927 y Fg(Lo)q(esc)o(he)14 b(Rec)o(h)o(tec)o
(k)539 b Ff(C-x)22 b(r)f(k)1022 1975 y Fg(Rec)o(h)o(tec)o(k)14
b(einsetzen)515 b Ff(C-x)22 b(r)f(y)1022 2023 y Fg(Rec)o(h)o(tec)o(k)14
b(aufmac)o(hen,)d(T)l(ext)k(nac)o(h)e(rec)o(h)o(ts)152
b Ff(C-x)22 b(r)f(o)1022 2071 y Fg(Rec)o(h)o(tec)o(k)14
b(mit)f(Leerzeic)o(hen)f(ueb)q(ersc)o(hrei)o(b)q(en)101
b Ff(C-x)22 b(r)f(c)1022 2119 y Fg(Prae\014x)14 b(v)o(or)g(jede)f
(Zeile)g(setzen)342 b Ff(C-x)22 b(r)f(t)1022 2241 y Fh(Abkuerzungen)
1022 2340 y Fg(globale)14 b(Abkuerzung)d(hinzufuegen)260
b Ff(C-x)22 b(a)f(g)1022 2388 y Fg(mo)q(dusabhaengige)12
b(Abkuerzung)f(hinzufuegen)63 b Ff(C-x)22 b(a)f(l)1022
2436 y Fg(globale)14 b(Expansion)f(fuer)f(Abk.)19 b(de\014nieren)137
b Ff(C-x)22 b(a)f(i)h(g)1022 2483 y Fg(mo)q(dusabhaengige)12
b(Abkuerzung)f(de\014nieren)104 b Ff(C-x)22 b(a)f(i)h(l)1022
2531 y Fg(explizites)13 b(Expandieren)444 b Ff(C-x)22
b(a)f(e)1022 2579 y Fg(letztes)14 b(W)l(ort)i(dynamisc)o(h)11
b(expandieren)189 b Ff(M-/)929 3414 y Fg(2)p eop
%%Page: 3 3
3 2 bop -295 -166 a Fh(Regulaere)21 b(Ausdruec)n(k)n(e)-295
-67 y Fg(jedes)13 b(Zeic)o(hen)f(ausser)g(Zeilen)o(um)o(br)o(uc)o(h)202
b Ff(.)42 b Fg(\(Punkt\))-295 -19 y(Null)13 b(o)q(der)g(mehr)f
(Wiederholungen)265 b Ff(*)-295 29 y Fg(Eine)13 b(o)q(der)g(mehr)f
(Wiederholungen)261 b Ff(+)-295 77 y Fg(Null)13 b(o)q(der)g(eine)g
(Wiederholung)329 b Ff(?)-295 124 y Fg(jedes)13 b(Zeic)o(hen)f(in)h
(der)g(Menge)361 b Ff([)21 b Fa(:)7 b(:)g(:)21 b Ff(])-295
172 y Fg(jedes)13 b(Zeic)o(hen)f(nic)o(h)o(t)h(in)g(der)g(Menge)255
b Ff([^)21 b Fa(:)7 b(:)g(:)21 b Ff(])-295 220 y Fg(Zeilenanfang)628
b Ff(^)-295 268 y Fg(Zeilenende)666 b Ff($)-295 316 y
Fg(sp)q(ezielles)12 b(Zeic)o(hen)g(maskieren)g Fb(c)308
b Ff(\\)p Fb(c)-295 363 y Fg(Alternativ)o(e)13 b(\(\\o)q(der"\))486
b Ff(\\|)-295 411 y Fg(Grupp)q(e)722 b Ff(\\\()21 b Fa(:)7
b(:)g(:)21 b Ff(\\\))-295 459 y Fb(n)s Fg(te)15 b(Grupp)q(e)645
b Ff(\\)p Fb(n)-295 507 y Fg(Pu\013eranfang)626 b Ff(\\`)-295
555 y Fg(Pu\013erende)664 b Ff(\\')-295 603 y Fg(W)l(ortzwisc)o
(henraum)509 b Ff(\\b)-295 650 y Fg(W)l(eder)14 b(Anfang)f(no)q(c)o(h)g
(Ende)g(eines)f(W)l(ortes)142 b Ff(\\B)-295 698 y Fg(W)l(ortanfang)647
b Ff(\\<)-295 746 y Fg(W)l(ortende)685 b Ff(\\>)-295
794 y Fg(jedes)13 b(W)l(ort-Syn)o(tax)i(Zeic)o(hen)367
b Ff(\\w)-295 842 y Fg(jedes)13 b(Nic)o(h)o(t-W)l(ort-Syn)o(tax)h(Zeic)
o(hen)253 b Ff(\\W)-295 890 y Fg(Zeic)o(hen)12 b(mit)i(Syn)o(tax)g
Fb(c)470 b Ff(\\s)p Fb(c)-295 937 y Fg(Zeic)o(hen)12
b(nic)o(h)o(t)h(mit)g(Syn)o(tax)i Fb(c)364 b Ff(\\S)p
Fb(c)-295 1059 y Fh(Register)-295 1159 y Fg(Region)14
b(in)f(Register)g(sp)q(eic)o(hern)333 b Ff(C-x)21 b(r)h(s)-295
1206 y Fg(Register)13 b(Inhalt)h(in)g(Pu\013er)e(einfuegen)222
b Ff(C-x)21 b(r)h(i)-295 1254 y Fg(Cursorp)q(osition)11
b(in)j(Register)f(sp)q(eic)o(hern)188 b Ff(C-x)21 b(r)h(SPC)-295
1302 y Fg(Springe)12 b(zur)h(abgesp)q(eic)o(herten)e(P)o(osition)181
b Ff(C-x)21 b(r)h(j)-295 1425 y Fh(Info)-295 1524 y Fg(Info)14
b(starten)647 b Ff(C-h)21 b(i)-295 1589 y Fg(Bew)o(egung)12
b(innerhalb)g(eines)g(Knotens:)-253 1654 y(v)o(orw)o(aerts)h(scrollen)
489 b Ff(SPC)-253 1702 y Fg(ruec)o(kw)o(aerts)12 b(scrollen)449
b Ff(DEL)-253 1750 y Fg(zum)13 b(Anfang)g(eines)g(Knotens)324
b Ff(.)42 b Fg(\(dot\))-295 1815 y(Bew)o(egung)12 b(zwisc)o(hen)g
(Knoten:)-253 1880 y Fe(naec)o(hster)j Fg(Knoten)469
b Ff(n)-253 1928 y Fe(v)o(orheriger)15 b Fg(Knoten)452
b Ff(p)-253 1975 y Fg(nac)o(h)13 b Fe(ob)q(en)621 b Ff(u)-253
2023 y Fg(Men)o(ue)13 b(Elemen)o(t)f(ueb)q(er)g(Namen)h(ausw)o(aehlen)
47 b Ff(m)-253 2071 y Fb(n)s Fg(ten)14 b(Men)o(ueein)o(trag)e(ausw)o
(aehlen)g(\(1{9\))139 b Fb(n)-253 2119 y Fg(Kreuzv)o(erw)o(eis)11
b(folgen)i(\(zuruec)o(k)g(mit)h Ff(l)p Fg(\))154 b Ff(f)-253
2167 y Fg(zuruec)o(k)12 b(zum)h(letzten)h(gesehenen)e(Knoten)101
b Ff(l)-253 2215 y Fg(zuruec)o(k)12 b(zum)h(V)l(erzeic)o(hnisknoten)240
b Ff(d)-253 2262 y Fg(Knoten)14 b(ueb)q(er)e(Namen)h(ausw)o(aehlen)199
b Ff(g)-295 2327 y Fg(Sonstige:)-253 2392 y(Info)14 b
Fe(T)l(utorial)g Fg(starten)419 b Ff(h)-253 2440 y Fg(Info)14
b(Befehle)f(zeigen)472 b Ff(?)-253 2488 y Fg(Info)14
b Fe(v)o(erlassen)543 b Ff(q)-253 2536 y Fg(Knoten)14
b(nac)o(h)f(reg.)18 b(Ausd.)f(durc)o(hsuc)n(hen)126 b
Ff(M-s)1022 -166 y Fh(T)-6 b(astatur)24 b(Makros)1022
-67 y Fg(T)l(astatur)15 b(Makro)f(De\014nition)f Fe(starten)209
b Ff(C-x)22 b(\()1022 -19 y Fg(T)l(astatur)15 b(Makro)f(De\014nition)f
Fe(b)q(eenden)184 b Ff(C-x)22 b(\))1022 29 y Fg(zuletzt)14
b(de\014niertes)e(T)l(ast.)19 b(Makro)14 b Fe(ausfuehren)46
b Ff(C-x)22 b(e)1022 77 y Fg(an)14 b(letztes)g(T)l(astatur)g(Makro)g
(anhaengen)169 b Ff(C-u)22 b(C-x)g(\()1022 124 y Fg(letztes)14
b(T)l(astatur)h(Makro)f(b)q(enennen)47 b Ff(M-x)22 b
(name-last-kbd-macro)1022 172 y Fg(Lisp)14 b(De\014nition)f(in)g
(Pu\013er)g(einfuegen)88 b Ff(M-x)22 b(insert-kbd-macro)1022
294 y Fh(Kommandos)h(fuer)g(Emacs)g(Lisp)1022 393 y Fe
(Lisp-s-expression)17 b Fg(v)o(or)d(Cursor)e(laden)175
b Ff(C-x)22 b(C-e)1022 441 y Fg(aktuelle)14 b Fe(De\014nition)h
Fg(ausw)o(erten)292 b Ff(C-M-x)1022 489 y Fe(Bereic)o(h)14
b Fg(ausw)o(erten)418 b Ff(M-x)21 b(eval-region)1022
537 y Fg(gesam)o(ten)13 b Fe(Pu\013er)j Fg(ausw)o(erten)147
b Ff(M-x)22 b(eval-current-buffer)1022 585 y Fg(Lispausdruc)o(k)12
b(im)h(Minipu\013er)e(ausw)o(erten)151 b Ff(M-:)1022
632 y Fg(letztes)14 b(Minipu\013erk)o(omm)o(and)o(o)e(ausw)o(erten)135
b Ff(C-x)22 b(ESC)g(ESC)1022 680 y Fg(Emacs)13 b(Lisp)h(Datei)g(lesen)f
(und)g(ausw)o(erten)62 b Ff(M-x)21 b(load-file)1022 728
y Fg(aus)14 b(Standard)e(System)o(v)o(erzeic)o(hnis)f(laden)75
b Ff(M-x)21 b(load-library)1022 851 y Fh(Einfac)n(hes)i
(Kon\014gurieren)1022 950 y Fg(Ein)14 b(Beispiel)e(dafuer,)g(wie)h(man)
h(T)l(astenk)o(om)o(binationen)d(de\014niert:)1022 1015
y Ff(\(global-set-key)24 b("\\C-cg")f('goto-line\))1022
1063 y(\(global-set-key)h("\\C-x\\C-k")f('kill-region\))1022
1111 y(\(global-set-key)h("\\M-#")e('query-replace-rege)q(xp\))1022
1176 y Fg(So)14 b(w)o(eist)f(man)h(in)f(Emacs)g(Lisp)g(einer)g(V)l
(ariablen)f(W)l(erte)j(zu:)1022 1241 y Ff(\(setq)22 b
(backup-by-copying-)q(when-l)q(inked)j(t\))1022 1364
y Fh(Selbst)d(Kommandos)h(sc)n(hreib)r(en)1022 1463 y
Ff(\(defun)g Fb(Commando-Name)f Ff(\()p Fb(ar)n(gs)s
Ff(\))1065 1511 y(")p Fb(Do)n(cumentation)s Ff(")1065
1559 y(\(interactive)h(")p Fb(template)s Ff("\))1065
1607 y Fb(b)n(o)n(dy)s Ff(\))1022 1672 y Fg(Ein)14 b(Beispiel:)1022
1737 y Ff(\(defun)23 b(diese-Zeile-zum-Fenster)q(anfang)i(\(Zeile\))
1065 1785 y("Zeile)d(an)f(Cursorposition)j(zum)e(Fensteranfang)h
(bewegen")1022 1832 y(Mit)f(numerischem)h(Argument)g(n,)e(zur)h(Zeile)g
(n)1022 1880 y(Mit)g(negativem)h(Argument)f(zum)g(Fensterende)1065
1928 y(\(interactive)h("P"\))1065 1976 y(\(recenter)f(\(if)g(\(null)g
(Zeile\))1361 2024 y(0)1319 2071 y(\(prefix-numeric-value)j
(Zeile\)\)\)\))1022 2136 y Fg(Das)13 b(Argumen)o(t)e(fuer)g
Ff(interactive)k Fg(ist)d(eine)g(Zeic)o(henk)o(ette,)f(die)h(sp)q(e-)
1022 2184 y(zi\014ziert,)22 b(wie)e(die)g(Argumente)f(b)q
(ereitgestellt)i(w)o(erden,)f(w)o(enn)f(die)1022 2232
y(F)l(unktion)d(in)o(teraktiv)f(aufgerufen)f(wird.)22
b Ff(C-h)g(f)f(interactive)d Fg(fuer)1022 2280 y(mehr)13
b(Informationen.)1198 2400 y Fd(Cop)o(yrigh)o(t)1380
2399 y(c)1370 2400 y Fc(\015)f Fd(1996)i(F)m(ree)g(Soft)o(w)o(are)g(F)m
(oundation)q(,)h(Inc.)1232 2438 y(designed)f(b)o(y)f(Stephen)i(Gildea,)
e(Marc)o(h)h(1996)f(v2.1)1246 2476 y(for)h(GNU)e(Emacs)h(v)o(ersion)h
(19)f(on)g(Unix)g(systems)1022 2532 y(P)o(ermission)19
b(is)e(gran)o(ted)h(to)g(mak)o(e)f(and)g(distribute)j(copies)e(of)f
(this)g(card)h(pro-)1022 2570 y(vided)e(the)g(cop)o(yrigh)o(t)h(notice)
g(and)e(this)g(p)q(ermission)h(notice)h(are)e(preserv)o(ed)i(on)1022
2608 y(all)d(copies.)929 3414 y Fg(3)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF

View file

@ -1,641 +0,0 @@
% Reference Card for GNU Emacs version 19 on Unix systems
%**start of header
\newcount\columnsperpage
% This file can be printed with 1, 2, or 3 columns per page (see below).
% Specify how many you want here. Nothing else needs to be changed.
\columnsperpage=2
% Copyright (c) 1987, 1993, 1996, 2000 Free Software Foundation, Inc.
% This file is part of GNU Emacs.
% GNU Emacs is free software; you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation; either version 2, or (at your option)
% any later version.
% GNU Emacs is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
% You should have received a copy of the GNU General Public License
% along with GNU Emacs; see the file COPYING. If not, write to
% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
% Boston, MA 02111-1307, USA.
% This file is intended to be processed by plain TeX (TeX82).
%
% The final reference card has six columns, three on each side.
% This file can be used to produce it in any of three ways:
% 1 column per page
% produces six separate pages, each of which needs to be reduced to 80%.
% This gives the best resolution.
% 2 columns per page
% produces three already-reduced pages.
% You will still need to cut and paste.
% 3 columns per page
% produces two pages which must be printed sideways to make a
% ready-to-use 8.5 x 11 inch reference card.
% For this you need a dvi device driver that can print sideways.
% Which mode to use is controlled by setting \columnsperpage above.
%
% Author:
% Stephen Gildea
% Internet: gildea@stop.mail-abuse.org
%
% Thanks to Paul Rubin, Bob Chassell, Len Tower, and Richard Mlynarik
% for their many good ideas.
% If there were room, it would be nice to see a section on Dired.
\def\versionnumber{2.1}
\def\year{1996}
\def\version{March \year\ v\versionnumber}
\def\shortcopyrightnotice{\vskip 1ex plus 2 fill
\centerline{\small \copyright\ \year\ Free Software Foundation, Inc.
Permissions on back. v\versionnumber}}
\def\copyrightnotice{\vskip 1ex plus 2 fill\begingroup\small
\centerline{Copyright \copyright\ \year\ Free Software Foundation, Inc.}
\centerline{designed by Stephen Gildea, \version}
\centerline{for GNU Emacs version 19 on Unix systems}
Permission is granted to make and distribute copies of
this card provided the copyright notice and this permission notice
are preserved on all copies.
\endgroup}
% make \bye not \outer so that the \def\bye in the \else clause below
% can be scanned without complaint.
\def\bye{\par\vfill\supereject\end}
\newdimen\intercolumnskip %horizontal space between columns
\newbox\columna %boxes to hold columns already built
\newbox\columnb
\def\ncolumns{\the\columnsperpage}
\message{[\ncolumns\space
column\if 1\ncolumns\else s\fi\space per page]}
\def\scaledmag#1{ scaled \magstep #1}
% This multi-way format was designed by Stephen Gildea October 1986.
% Note that the 1-column format is fontfamily-independent.
\if 1\ncolumns %one-column format uses normal size
\hsize 4in
\vsize 10in
\voffset -.7in
\font\titlefont=\fontname\tenbf \scaledmag3
\font\headingfont=\fontname\tenbf \scaledmag2
\font\smallfont=\fontname\sevenrm
\font\smallsy=\fontname\sevensy
\footline{\hss\folio}
\def\makefootline{\baselineskip10pt\hsize6.5in\line{\the\footline}}
\else %2 or 3 columns uses prereduced size
\hsize 3.2in
\vsize 7.95in
% \hoffset -.75in
\hoffset -.82in
% \voffset -.745in
\voffset -.6in
\font\titlefont=cmbx10 \scaledmag2
\font\headingfont=cmbx10 \scaledmag1
\font\smallfont=cmr6
\font\smallsy=cmsy6
\font\eightrm=cmr8
\font\eightbf=cmbx8
\font\eightit=cmti8
\font\eighttt=cmtt8
\font\eightmi=cmmi8
\font\eightsy=cmsy8
\textfont0=\eightrm
\textfont1=\eightmi
\textfont2=\eightsy
\def\rm{\eightrm}
\def\bf{\eightbf}
\def\it{\eightit}
\def\tt{\eighttt}
\normalbaselineskip=.8\normalbaselineskip
\normallineskip=.8\normallineskip
\normallineskiplimit=.8\normallineskiplimit
\normalbaselines\rm %make definitions take effect
\if 2\ncolumns
\let\maxcolumn=b
\footline{\hss\rm\folio\hss}
\def\makefootline{\vskip 2in \hsize=6.86in\line{\the\footline}}
\else \if 3\ncolumns
\let\maxcolumn=c
\nopagenumbers
\else
\errhelp{You must set \columnsperpage equal to 1, 2, or 3.}
\errmessage{Illegal number of columns per page}
\fi\fi
\intercolumnskip=.46in
\def\abc{a}
\output={% %see The TeXbook page 257
% This next line is useful when designing the layout.
%\immediate\write16{Column \folio\abc\space starts with \firstmark}
\if \maxcolumn\abc \multicolumnformat \global\def\abc{a}
\else\if a\abc
\global\setbox\columna\columnbox \global\def\abc{b}
%% in case we never use \columnb (two-column mode)
\global\setbox\columnb\hbox to -\intercolumnskip{}
\else
\global\setbox\columnb\columnbox \global\def\abc{c}\fi\fi}
\def\multicolumnformat{\shipout\vbox{\makeheadline
\hbox{\box\columna\hskip\intercolumnskip
\box\columnb\hskip\intercolumnskip\columnbox}
\makefootline}\advancepageno}
\def\columnbox{\leftline{\pagebody}}
\def\bye{\par\vfill\supereject
\if a\abc \else\null\vfill\eject\fi
\if a\abc \else\null\vfill\eject\fi
\end}
\fi
% we won't be using math mode much, so redefine some of the characters
% we might want to talk about
\catcode`\^=12
\catcode`\_=12
\chardef\\=`\\
\chardef\{=`\{
\chardef\}=`\}
\hyphenation{mini-buf-fer}
\parindent 0pt
\parskip 1ex plus .5ex minus .5ex
\def\small{\smallfont\textfont2=\smallsy\baselineskip=.8\baselineskip}
% newcolumn - force a new column. Use sparingly, probably only for
% the first column of a page, which should have a title anyway.
\outer\def\newcolumn{\vfill\eject}
% title - page title. Argument is title text.
\outer\def\title#1{{\titlefont\centerline{#1}}\vskip 1ex plus .5ex}
% section - new major section. Argument is section name.
\outer\def\section#1{\par\filbreak
\vskip 3ex plus 2ex minus 2ex {\headingfont #1}\mark{#1}%
\vskip 2ex plus 1ex minus 1.5ex}
\newdimen\keyindent
% beginindentedkeys...endindentedkeys - key definitions will be
% indented, but running text, typically used as headings to group
% definitions, will not.
\def\beginindentedkeys{\keyindent=1em}
\def\endindentedkeys{\keyindent=0em}
\endindentedkeys
% paralign - begin paragraph containing an alignment.
% If an \halign is entered while in vertical mode, a parskip is never
% inserted. Using \paralign instead of \halign solves this problem.
\def\paralign{\vskip\parskip\halign}
% \<...> - surrounds a variable name in a code example
\def\<#1>{{\it #1\/}}
% kbd - argument is characters typed literally. Like the Texinfo command.
\def\kbd#1{{\tt#1}\null} %\null so not an abbrev even if period follows
% beginexample...endexample - surrounds literal text, such a code example.
% typeset in a typewriter font with line breaks preserved
\def\beginexample{\par\leavevmode\begingroup
\obeylines\obeyspaces\parskip0pt\tt}
{\obeyspaces\global\let =\ }
\def\endexample{\endgroup}
% key - definition of a key.
% \key{description of key}{key-name}
% prints the description left-justified, and the key-name in a \kbd
% form near the right margin.
\def\key#1#2{\leavevmode\hbox to \hsize{\vtop
{\hsize=.75\hsize\rightskip=1em
\hskip\keyindent\relax#1}\kbd{#2}\hfil}}
\newbox\metaxbox
\setbox\metaxbox\hbox{\kbd{M-x }}
\newdimen\metaxwidth
\metaxwidth=\wd\metaxbox
% metax - definition of a M-x command.
% \metax{description of command}{M-x command-name}
% Tries to justify the beginning of the command name at the same place
% as \key starts the key name. (The "M-x " sticks out to the left.)
\def\metax#1#2{\leavevmode\hbox to \hsize{\hbox to .75\hsize
{\hskip\keyindent\relax#1\hfil}%
\hskip -\metaxwidth minus 1fil
\kbd{#2}\hfil}}
% threecol - like "key" but with two key names.
% for example, one for doing the action backward, and one for forward.
\def\threecol#1#2#3{\hskip\keyindent\relax#1\hfil&\kbd{#2}\hfil\quad
&\kbd{#3}\hfil\quad\cr}
%**end of header
\title{GNU Emacs Referenzkarte}
%\centerline{(fuer version 19)}
\section{Emacs Starten}
Um GNU Emacs 19 zu starten, tippen Sie ein: \kbd{emacs}
Um eine Datei fuers Editieren zu laden, lesen Sie unten weiter.
\section{Emacs Verlassen}
\key{Emacs pausieren lassen}{C-z}
\key{Emacs beenden}{C-x C-c}
\section{Dateien}
\key{Datei {\bf oeffnen} }{C-x C-f}
\key{Datei {\bf sichern} }{C-x C-s}
\key{{\bf alle} Dateien sichern}{C-x s}
\key{den Inhalt einer anderen Datei {\bf einfuegen}}{C-x i}
\key{diese Datei durch eine andere ersetzen}{C-x C-v}
\key{Datei neu anlegen und speichern}{C-x C-w}
\key{version control ein/auschecken}{C-x C-q}
\section{Hilfe}
Das Hilfesystem ist einfach zu bedienen. Tippen Sie \kbd{C-h} (oder \kbd{F1}). Neulinge tippen \kbd{C-h t} um ein {\bf tutorial} zu starten.
\key{Hilfe Fenster entfernen}{C-x 1}
\key{Hilfe Fenster scrollen}{C-M-v}
\key{apropos: zeigt alle Befehle mit dem Muster}{C-h a}
\key{zeigt die Funktion mit dieser Tastenkomb.}{C-h c}
\key{beschreibt die Funktion}{C-h f}
\key{modusspezifische Information}{C-h m}
\section{Was tun wenn nichts mehr geht}
\key{{\bf Abbrechen} eines Vorgangs}{C-g}
\metax{{\bf Wiederherstellung} von Dateien}{M-x recover-file}
\key{{\bf rueckgaengig} machen}{C-x u}
\metax{Puffer in Ursprungszustand bringen}{M-x revert-buffer}
\key{Bildschirmanzeige in Ordnung bringen}{C-l}
\section{Inkrementelle Suche}
\key{Suche vorwaerts}{C-s}
\key{Suche rueckwaerts}{C-r}
\key{Suche mit regulaeren Ausdruecken}{C-M-s}
\key{Rueckwaertssuche mit reg. Ausdruecken}{C-M-r}
\key{letzten Suchausdruck auswaehlen}{M-p}
\key{spaeteren Suchausdruck auswaehlen}{M-n}
\key{inkrementelle Suche beenden}{RET}
\key{ein Suchzeichen zurueckgehen}{DEL}
\key{Suche abbrechen}{C-g}
Wiederholtes Druecken von \kbd{C-s} oder \kbd{C-r} sucht weitere Treffer.
Wenn Emacs sucht, unterbricht \kbd{C-g} nur die jeweils letzte Suche.
\shortcopyrightnotice
\section{Cursor Bewegung}
\paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\cr
\threecol{{\bf Textteile ueberspringen}}{{\bf rueckw.}}{{\bf vorw.}}
\threecol{Zeichen}{C-b}{C-f}
\threecol{Wort}{M-b}{M-f}
\threecol{Zeile}{C-p}{C-n}
\threecol{zum Zeilenende springen}{C-a}{C-e}
\threecol{Satz}{M-a}{M-e}
\threecol{Paragraph}{M-\{}{M-\}}
\threecol{Seite}{C-x [}{C-x ]}
\threecol{Lisp-s-expression}{C-M-b}{C-M-f}
\threecol{Funktion}{C-M-a}{C-M-e}
\threecol{zum Pufferanfang (oder Ende)springen}{M-<}{M->}
}
\key{eine Bildschirmseite runter scrollen}{C-v}
\key{eine Bildschirmseite hoch scrollen}{M-v}
\key{nach links scrollen}{C-x <}
\key{nach rechts scrollen}{C-x >}
\key{Cursorzeile in die Bildschirmmitte scrollen}{C-u C-l}
\section{Loeschen}
\paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\cr
\threecol{{\bf Textteile }}{{\bf rueckwaerts}}{{\bf vorwaerts}}
\threecol{Zeichen (loeschen)}{DEL}{C-d}
\threecol{Wort}{M-DEL}{M-d}
\threecol{Zeile (bis zum Ende)}{M-0 C-k}{C-k}
\threecol{Satz}{C-x DEL}{M-k}
\threecol{Lisp-s-expression}{M-- C-M-k}{C-M-k}
}
\key{{\bf Bereiche} loeschen}{C-w}
\key{Bereich in die Ablage kopieren}{M-w}
\key{Bis zum {\it Zeichen} loeschen }{M-z {\it Zeichen}}
\key{letztes geloeschtes Zeichen einsetzen}{C-y}
\key{eins davor einsetzen}{M-y}
\section{Markieren}
\key{Marke setzen}{C-@ {\rm or} C-SPC}
\key{zwischen Cursor und Marke wechseln}{C-x C-x}
\key{Marke {\it Argument\/} {\bf Worte} entfernt setzen}{M-@}
\key{{\bf Paragraph} markieren}{M-h}
\key{{\bf Seite} markieren}{C-x C-p}
\key{{\bf Lisp-s-expression} markieren}{C-M-@}
\key{{\bf Funktion} markiern}{C-M-h}
\key{den ganzen {\bf Puffer} markieren}{C-x h}
\section{Interaktives Ersetzen}
\key{Zeichenkette interaktiv ersetzen}{M-\%}
\metax{mit regulaeren Ausdruecken}{M-x query-replace-regexp}
Moegliche Antworten in diesem Modus:
\key{dies {\bf ersetzten} und zum naechsten gehen}{SPC}
\key{dies ersetzen}{,}
\key{dies {\bf ueberspringen}, zum naechsten gehen}{DEL}
\key{alle verbleibenden Treffer ersetzen}{!}
\key{eine Ersetzung{\bf rueckgaengig} machen }{^}
\key{interaktiven Modus{\bf verlassen}}{RET}
\key{rekursiven Modus starten (\kbd{C-M-c} verlassen)}{C-r}
\section{Mehrere Fenster}
Die zweite Tastenk. bezieht sich immer auf das andere Fenster:
\key{alle anderen Fenster in den Hintergrund}{C-x 1}
{\setbox0=\hbox{\kbd{0}}\advance\hsize by 0\wd0
\paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\cr
\threecol{Fenster vertikal teilen}{C-x 2\ \ \ \ }{C-x 5 2}
\threecol{dieses Fenster loeschen}{C-x 0\ \ \ \ }{C-x 5 0}
}}
\key{Fenster horizontal teilen}{C-x 3}
\key{das andere Fenster scrollen}{C-M-v}
{\setbox0=\hbox{\kbd{0}}\advance\hsize by 2\wd0
\paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\cr
\threecol{ins andere Fenster wechseln}{C-x o}{C-x 5 o}
\threecol{Puffer in ein anderes Fenster bringen}{C-x 4 b}{C-x 5 b}
\threecol{Puffer in einem anderen Fenster darstellen}{C-x 4 C-o}{C-x 5 C-o}
\threecol{Datei in ein anderes Fenster oeffnen}{C-x 4 f}{C-x 5 f}
\threecol{Datei im Ansichtmodus in anderem Fenster oeffnen}{C-x 4 r}{C-x 5 r}
\threecol{Dired in einem anderen Fenster oeffnen}{C-x 4 d}{C-x 5 d}
\threecol{Tag in einem anderen Fenster finden}{C-x 4 .}{C-x 5 .}
}}
\key{Fenster vergroessern}{C-x ^}
\key{Fenster schmaler machen}{C-x \{}
\key{Fenster breiter machen}{C-x \}}
\section{Formattierung}
\key{{\bf Zeile} (modusabhaengig) einruecken}{TAB}
\key{{\bf Bereich} (modusabh.) einruecken}{C-M-\\}
\key{{\bf Lisp-s-expression} (modusabh.) einruecken}{C-M-q}
\key{Bereich {\it Argument\/} Spalten einruecken}{C-x TAB}
\key{Zeilenumbruch nach Cursor einfuegen}{C-o}
\key{Zeilenrest vertikal nach unten verschieben}{C-M-o}
\key{Leerzeilen um Cursorposition loeschen}{C-x C-o}
\key{Zeile mit letzter verbinden (Arg. naechster)}{M-^}
\key{Leerzeichen an Cursorposition loeschen}{M-\\}
\key{ein Leerzeichen an Cursorposition setzen}{M-SPC}
\key{Paragraph auffuellen}{M-q}
\key{Fuell Spalte setzen}{C-x f}
\key{Praefix setzen fuer jede Zeile}{C-x .}
\key{Zeichendarstellung setzen}{M-g}
\section{Gross-Kleinbuchstaben}
\key{Wort in Grossbuchstaben}{M-u}
\key{Wort in Kleinbuchstaben}{M-l}
\key{Word mit grossen Anfangsbuchstaben}{M-c}
\key{Bereich in Grossbuchstaben}{C-x C-u}
\key{Bereich in Kleinbuchstaben}{C-x C-l}
\section{Der Minipuffer}
Die folgenden Tastenkombination gelten im Minipuffer:
\key{so viel wie moeglich ergaenzen}{TAB}
\key{ein Wort ergaenzen}{SPC}
\key{ergaenzen und ausfuehren}{RET}
\key{moegliche Ergaenzungen zeigen}{?}
\key{letzte Eingabe wiederanzeigen}{M-p}
\key{spaetere Eingabe wiederanzeigen}{M-n}
\key{reg. Ausd. rueckwaerts in History suchen}{M-r}
\key{reg. Ausd. vorwaerts in History suchen}{M-s}
\key{Vorgang unterbrechen}{C-g}
Tippen Sie \kbd{C-x ESC ESC} um den letzten Befehl zu editieren und zu wiederholen der im Minipuffer ausgefuehrt wurde.
\newcolumn
\title{GNU Emacs Referenzkarte}
\section{Puffer}
\key{anderen Puffer auswaehlen}{C-x b}
\key{alle Puffer anzeigen}{C-x C-b}
\key{Puffer loeschen}{C-x k}
\section{Vertauschen}
\key{ {\bf Zeichen} vertauschen}{C-t}
\key{ {\bf Worte} vertauschen}{M-t}
\key{ {\bf Zeilen} vertauschen}{C-x C-t}
\key{ {\bf Lisp-s-expressions} vertauschen}{C-M-t}
\section{Rechtschreibkorrrektur}
\key{Ueberpruefe aktuelles Wort}{M-\$}
\metax{Ueberpruefe alle Woerter in Bereich}{M-x ispell-region}
\metax{Ueberpruefe den gesamten Bereich}{M-x ispell-buffer}
\section{Tags}
\key{Tag finden (Definition)}{M-.}
\key{Naechstes Vorkommen von Tag finden}{C-u M-.}
\metax{Neue Tags Datei angeben}{M-x visit-tags-table}
\metax{Regulaere Ausdruck Suche in Dateien}{M-x tags-search}
\metax{Interakt. Ersetzen in allen Dateien}{M-x tags-query-replace}
\key{Letzte Tag Suche oder Ersetzen nochmal}{M-,}
\section{Shells}
\key{Shell Kommando ausfuehren}{M-!}
\key{Shell Kommando fuer bereich ausfuehren}{M-|}
\key{Bereich durch Shell Kommando filtern}{C-u M-|}
\metax{Shell im Fenster \kbd{*shell*} starten}{M-x shell}
\section{Rechtecke}
\key{Kopiere Rechteck in Register}{C-x r r}
\key{Loesche Rechteck}{C-x r k}
\key{Rechteck einsetzen}{C-x r y}
\key{Rechteck aufmachen, Text nach rechts}{C-x r o}
\key{Rechteck mit Leerzeichen ueberschreiben}{C-x r c}
\key{Praefix vor jede Zeile setzen}{C-x r t}
\section{Abkuerzungen}
\key{globale Abkuerzung hinzufuegen}{C-x a g}
\key{modusabhaengige Abkuerzung hinzufuegen}{C-x a l}
\key{globale Expansion fuer Abk. definieren}{C-x a i g}
\key{modusabhaengige Abkuerzung definieren}{C-x a i l}
\key{explizites Expandieren}{C-x a e}
\key{letztes Wort dynamisch expandieren}{M-/}
\section{Regulaere Ausdruecke}
\key{jedes Zeichen ausser Zeilenumbruch}{. {\rm(Punkt)}}
\key{Null oder mehr Wiederholungen}{*}
\key{Eine oder mehr Wiederholungen}{+}
\key{Null oder eine Wiederholung}{?}
\key{jedes Zeichen in der Menge}{[ {\rm$\ldots$} ]}
\key{jedes Zeichen nicht in der Menge}{[^ {\rm$\ldots$} ]}
\key{Zeilenanfang}{^}
\key{Zeilenende}{\$}
\key{spezielles Zeichen maskieren {\it c\/}}{\\{\it c}}
\key{Alternative (``oder'')}{\\|}
\key{Gruppe}{\\( {\rm$\ldots$} \\)}
\key{{\it n\/}te Gruppe}{\\{\it n}}
\key{Pufferanfang}{\\`}
\key{Pufferende}{\\'}
\key{Wortzwischenraum}{\\b}
\key{Weder Anfang noch Ende eines Wortes}{\\B}
\key{Wortanfang}{\\<}
\key{Wortende}{\\>}
\key{jedes Wort-Syntax Zeichen}{\\w}
\key{jedes Nicht-Wort-Syntax Zeichen}{\\W}
\key{Zeichen mit Syntax {\it c}}{\\s{\it c}}
\key{Zeichen nicht mit Syntax {\it c}}{\\S{\it c}}
\section{Register}
\key{Region in Register speichern}{C-x r s}
\key{Register Inhalt in Puffer einfuegen}{C-x r i}
\key{Cursorposition in Register speichern}{C-x r SPC}
\key{Springe zur abgespeicherten Position}{C-x r j}
\section{Info}
\key{Info starten}{C-h i}
\beginindentedkeys
Bewegung innerhalb eines Knotens:
\key{vorwaerts scrollen}{SPC}
\key{rueckwaerts scrollen}{DEL}
\key{zum Anfang eines Knotens}{. {\rm (dot)}}
Bewegung zwischen Knoten:
\key{{\bf naechster} Knoten}{n}
\key{{\bf vorheriger} Knoten}{p}
\key{nach {\bf oben}}{u}
\key{Menue Element ueber Namen auswaehlen}{m}
\key{{\it n\/}ten Menueeintrag auswaehlen (1--9)}{{\it n}}
\key{Kreuzverweis folgen (zurueck mit \kbd{l})}{f}
\key{zurueck zum letzten gesehenen Knoten}{l}
\key{zurueck zum Verzeichnisknoten}{d}
\key{Knoten ueber Namen auswaehlen}{g}
Sonstige:
\key{Info {\bf Tutorial} starten}{h}
\key{Info Befehle zeigen}{?}
\key{Info {\bf verlassen} }{q}
\key{Knoten nach reg. Ausd. durchsuchen}{M-s}
\endindentedkeys
\section{Tastatur Makros}
\key{Tastatur Makro Definition {\bf starten} }{C-x (}
\key{Tastatur Makro Definition {\bf beenden} }{C-x )}
\key{zuletzt definiertes Tast. Makro {\bf ausfuehren}}{C-x e}
\key{an letztes Tastatur Makro anhaengen}{C-u C-x (}
\metax{letztes Tastatur Makro benennen}{M-x name-last-kbd-macro}
\metax{Lisp Definition in Puffer einfuegen}{M-x insert-kbd-macro}
\section{Kommandos fuer Emacs Lisp}
\key{{\bf Lisp-s-expression} vor Cursor laden}{C-x C-e}
\key{aktuelle {\bf Definition} auswerten}{C-M-x}
\metax{{\bf Bereich} auswerten}{M-x eval-region}
\metax{gesamten {\bf Puffer} auswerten}{M-x eval-current-buffer}
\key{Lispausdruck im Minipuffer auswerten}{M-:}
\key{letztes Minipufferkommando auswerten}{C-x ESC ESC}
\metax{Emacs Lisp Datei lesen und auswerten}{M-x load-file}
\metax{aus Standard Systemverzeichnis laden}{M-x load-library}
\section{Einfaches Konfigurieren}
% Das ist nur was fuer Leute die Lisp beherrschen
Ein Beispiel dafuer, wie man Tastenkombinationen definiert:
\beginexample%
(global-set-key "\\C-cg" 'goto-line)
(global-set-key "\\C-x\\C-k" 'kill-region)
(global-set-key "\\M-\#" 'query-replace-regexp)
\endexample
So weist man in Emacs Lisp einer Variablen Werte zu:
\beginexample%
(setq backup-by-copying-when-linked t)
\endexample
\section{Selbst Kommandos schreiben}
\beginexample%
(defun \<Commando-Name> (\<args>)
"\<Documentation>"
(interactive "\<template>")
\<body>)
\endexample
Ein Beispiel:
\beginexample%
(defun diese-Zeile-zum-Fensteranfang (Zeile)
"Zeile an Cursorposition zum Fensteranfang bewegen"
Mit numerischem Argument n, zur Zeile n
Mit negativem Argument zum Fensterende
(interactive "P")
(recenter (if (null Zeile)
0
(prefix-numeric-value Zeile))))
\endexample
Das Argument fuer \kbd{interactive} ist eine Zeichenkette, die spe\-zi\-fi\-ziert, wie die
Ar\-gu\-men\-te be\-reit\-ge\-stellt wer\-den, wenn die Funktion inter\-aktiv auf\-ge\-ru\-fen wird.
\kbd{C-h f interactive} fuer mehr Informationen.
\copyrightnotice
\bye
% Local variables:
% compile-command: "tex refcard"
% End:

View file

@ -1,653 +0,0 @@
%!PS-Adobe-2.0
%%Creator: dvips(k) 5.86d Copyright 1999 Radical Eye Software
%%Title: dired-ref.dvi
%%Pages: 1
%%PageOrder: Ascend
%%BoundingBox: 0 0 596 842
%%EndComments
%DVIPSWebPage: (www.radicaleye.com)
%DVIPSCommandLine: dvips -o dired-ref.ps dired-ref.dvi
%DVIPSParameters: dpi=600, compressed
%DVIPSSource: TeX output 2002.02.12:1310
%%BeginProcSet: texc.pro
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
(LaserWriter 16/600)]{A length product length le{A length product exch 0
exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
%%EndProcSet
TeXDict begin 39158280 55380996 1000 600 600 (dired-ref.dvi)
@start
%DVIPSBitmapFont: Fa cmtt8 8 63
/Fa 63 127 df<123812FEB3A8127C1200A7123812FEA51238072A72A923>33
D<EB3C0F90387E1F80A6EBFE3F01FC1300A2007FB512F8B612FCA4003F14F83901F87E00
AA003FB512F8B612FCA46C14F83903F0FC00EA07F1EBE1F8A63803C0F01E297EA823>35
D<130E131FA4EB7FC03803FFF04813FC001F7F487FD87FDF1380EB1F1F00FEEB0FC012FC
00F8131FA312FCEC0F8000FEEB0700007F90C7FCEA3FDF13FF000F13C06C13F0000113FC
6C6C7EEB1FFFEC7F80141F15C0007C130F00FE1307A400FC130FA2007EEB1F80007F133F
9038DFFF006CB45A6C5B00075B6C13E038007F80011FC7FCA5130E1A347CAD23>I<000F
EB01C0391F8003E0383FC007EA7FE0140FD8F9F013C0141F00F01480A2143F150000F95B
147EEA7FE014FE6C485AEA1F80EA0F0100005B13035CA213075C130F5CA2131F5C133F91
C7FCA25B137E9038FE03C09038FC07E0EC0FF00001EB1FF813F8EC3E7C12039038F03C3C
120713E0A2000FEB3E7C13C0001FEB1FF81380EC0FF0000FEB07E039070003C01E347EAD
23>I<137CEA01FE487E487FA2EBCFC0EA0F87A21303A31307A290380FCFF8EC9FFC139F
13BF3907FF0FF801FE138013FCA29038F81F00EA0FF0381FE01E383FF03E13F8007F5BEA
7E7C00FC1378EB3EF812F86D5AA290380FE03C1307EAFC0F90381FF07C387E3FFC007FB5
12FC393FFE7FF8EBFC3F390FF01FE03907E007C01E2B7EA923>I<EB0380EB0FC0131FEB
3F80EBFF005BEA01F81203485A485A5B485AA248C7FCA2123E127EA2127CA212FCA25AA8
7EA2127CA2127EA2123E123FA26C7EA26C7E7F6C7E6C7E1201EA00FE7FEB3F80EB1FC013
0FEB0380123476AD23>40 D<131EA2131F131EA30070EB0380007C130F00FEEB1FC0397F
9E7F8090B5FC001FEBFE00000713F8000113E038007F803801FFE0000713F8001F13FE00
7FEBFF80EB9E7F39FE1E1FC0007CEB0F8000701303000090C7FCA3131F131EA21A1D7CA2
23>42 D<EB0780497EAB007FB512F8B612FCA46C14F839000FC000AB6D5A1E1E7EA223>
I<007FB51280B612C0A46C14801A067C9623>45 D<123E127FEAFF80A5EA7F00123E0909
738823>I<EC0380EC07C0140FA2141F1580143F15005C147EA214FE5C13015C13035C13
075CA2130F5C131F5C133F91C7FCA25B137E13FE5B12015BA212035B12075B120F5B121F
5BA2123F90C8FC5A127E12FE5AA25A12781A347CAD23>I<EB7FC03803FFF04813FC001F
7F48EBFF80EA7F80397E003FC000FEEB0FE04813076CEB03F0A31401127C1238C7FC1403
A2EC07E0A2EC0FC0141FEC3F80150014FE1301EB03F8495A495AEB3FC0495A01FEC7FC48
5A485AD80FF013E0391FE001F0EA3F8048B5FCB6FCA36C14E01C2A7DA923>50
D<EB7FC03801FFF0000713FC487F487F393FE07F809038801FC0140F1407A3EA0E00C712
0FA2EC1F80143F903801FF00EB7FFE495A5C806DB4FC9038007F80EC1FC0EC0FE01407EC
03F0A21401A2127C12FE1403A2EC07E048130F6CEB1FC0387FC07F6CB512806C14006C13
FC00035B38007FC01C2B7DA923>I<EC0380EC0FC0141F143F14FF491380903807FE0049
5A495AEB7FE0495A4890C7FCEA07FE485AEA1FF0EA7FE0485A90C8FCA213C06C7EEA1FF0
EA0FFC6C7EEA01FF6C13C06D7EEB1FF86D7E6D7E903801FF806D13C0143F141F140FEC03
801A247CA523>60 D<007FB512F8B612FCA4003F14F8C9FCA6003FB512F8B612FCA46C14
F81E127E9C23>I<127012FC7E7E13C06C7EEA1FF86C7E6C7E3801FF806C7FEB3FE0EB1F
F86D7EEB03FE903801FF806D13C0143FA214FF491380903803FE00EB0FFC495AEB3FE0EB
FFC0485BD807FEC7FC485A485AEA7FE0485A90C8FC5A5A12701A247CA523>I<3801FFC0
000713F8001F13FE487F48148039FF007FC048130F1407A2140F007C131F0038EB7F80C7
12FF01031300EB07FCEB0FF0495A5C495AA291C7FCA6133E90C8FCA7131C137FA5131C1A
297CA823>I<EB07F0EB1FFCEB7FFE48B5FC4814803907FC1FC0380FE0079038C0FFE0EA
1F83485AEA3E0FD87E1F13F0007C138FEB3F0738783E0338F87C01A212F0EB7800A5EB7C
0112F8A239783E03E0387C3F0790381F8FC0007E13FFD83E0F1380D83F071300381F83FE
390FC0F9E09038E007F03807FC0F6CB5FC6C14C06C6C138090381FFE00EB07F81C297DA8
23>I<EB0FC0A2497EA4EB3CF0A5EB7CF8A3EB7878EBF87CA548487EA40003133F497EA2
90B5FCA2481480A3EBC00F000F14C0EB8007A3397FF03FF800FF14FCA3007F14F81E2A7E
A923>I<B512F014FE80158015C0390F800FE01407EC03F01401A5140315E01407EC1FC0
90B5128015005C8015C09038800FE01407EC03F0140115F81400A5140115F01403EC0FE0
B6FC15C01580150014FC1D297EA823>I<90380FE0E090383FF9F0EBFFFD4813FF5A3807
FC3F380FF00F381FC007A2383F80031300481301127EA2007CEB00E000FC1400A25AA97E
A2127C007E14E0EC01F0127F7EEB8003EA1FC0EC07E0380FF00F3907FC1FC06CB512806C
14006C5BEB3FF8EB0FE01C2B7DA923>I<90381FC1C090387FF3E090B5FC12035AEBF83F
380FE01F381FC00F1380003F13071300007E1303A3007CEB01C000FC90C7FCA25AA6EC7F
F815FCA27E15F8007CEB03E0127E1407A27EEB800F121FEBC01FEA0FE03807F87F90B5FC
7EC613FB90387FF1C090381FC0001E2B7EA923>71 D<397FF00FFE39FFF81FFFA3397FF0
0FFE390F8001F0AC90B5FCA5EB8001AE397FF00FFE39FFF81FFFA3397FF00FFE20297FA8
23>I<B512FEA538007C00B3ADB512FEA517297AA823>I<EA7FFEB5FCA36C5AEA07C0B3A6
157CA7007FB512FCB6FCA36C14F81E297EA823>76 D<39FF8001FFA26D5AA3391EE00778
A3EBF00FEB700EA2EB781EA2EB381CEB3C3CA2EB1C38EB1E78A2EB0E70A3EB07E0A3EB03
C0A290C7FCA939FFC003FFA520297FA823>I<3803FFF0000F13FC487F487FA2397F807F
80387E001F007C130FA200FC14C0481307B3A46C130FA2007C1480A2007E131F387F807F
6CB51200A26C5B6C5B000313F01A2B7CA923>79 D<B512F014FE80158015C0390F801FE0
EC07F01403140115F81400A5140115F014031407EC1FE090B512C0158015005C14F00180
C7FCABEAFFF87FA35B1D297EA823>I<3803FFF0000F13FC487F487FA2397F807F80387E
001F007C130FA200FC14C0481307B3A3131F148700FC138F397C0FCF80A2387E07FFEA7F
876CB51200A26C5B6C5B1203C7FC147EA280A2EC1F80A2140F1A337CA923>I<387FFFC0
B512F88014FF7E390F807F80EC1FC0140F6E7E1403A514074A5A141FEC7F8090B5C7FCA2
14FC8080EB807F6E7E141F140FA61587ED8F80A215CFD87FF013DF39FFF807FF1600806C
486C5AC812F8212A7FA823>I<9038FF83800003EBE3C04813FF121F5AEA7FC0EB003F00
FE131F48130FA25A1407A26CEB038091C7FC127E127FEA3FF06CB4FC6C13F06C13FC0001
7F39001FFF80010113C0EB001FEC0FE01407EC03F0A20070130112F8A36C1303A26CEB07
E06C130F9038E03FC090B5FC15005C00F15B38703FE01C2B7DA923>I<39FFF81FFFA539
0F8001F0B3A7EBC003A2000714E0EBE007EBF00F000314C0EBFC3F6CB512806C14006D5A
EB1FF8EB07E0202A7FA823>85 D<397FF07FF0EBF8FFA3EBF07F3907E03F000003133EEB
F07E0001137CEBF8FC00005B13FDEB7DF0137F6D5AA26D5AA26D5AA280131F80133F8013
7DEB7CF813F8147CEA01F0801203497E12079038C00F80120F397FE03FF8D8FFF013FCA3
D87FE013F81E297EA823>88 D<397FF00FFE39FFF81FFFA3397FF00FFE3907C003E0EBE0
07000314C013F00001130F01F813800000131F01FC1300137C143E133E147EEB1F7CA26D
5AA26D5AA25C1303ACEB1FFC497EA36D5A20297FA823>I<003FB512E04814F0A4397C00
07E0140FEC1FC01580143F0038EB7F00C7127E14FE495A5C1303495A5C130F495A5C133F
49C7FC137E13FE485A5B1203485A4913E0000FEB01F0EA1FC01380123FEA7F00127EB6FC
A46C14E01C297DA823>I<133013FCEA03FF000F13C0003F13F0B512FC1387EAFE0138F8
007C00601318160A7AA823>94 D<007FB51280B612C0A46C14801A067C7E23>I<3803FF
80000F13E04813F8487F80EB80FFEC3F80381F001FC7FC140F14FF137F0003B5FC120F5A
387FF00F130012FCA25A141F7E6C133F387F81FF90B512FC6C14FE7E000713C73901FE01
FC1F1D7D9C23>97 D<EB3FF0EBFFFC000313FF5A5A381FE07FEA3F80387F003E007E90C7
FCA25AA25AA57EA2007E1307007FEB0F80141FEA3FC0391FF07F006CB5FC6C5B6C5BC613
F0EB3FC0191D7B9C23>99 D<ECFF8015C0A41407A7EB7F873801FFE74813F7000F13FF5A
13E0383F803F387F001F007E130FA2481307A25AA56C130FA2127E141F007F133F383F80
7FEBE0FF6CB512FE7E000313F76C13C738007F031F297EA823>I<EB3FC0EBFFF800037F
4813FF481480381FF07F393F801FC0EB000F007E130715E05AB6FCA415C000F8C8FC7EA2
007EEB01C0007FEB03E0383F800713E0391FF81FC06CB5FC6C14800001EBFE006C6C5AEB
1FE01B1D7D9C23>I<147F903801FFC0010713E05B5BEB3FCF140F90383E07C091C7FCA4
007FB51280B612C0A36C1480D8003EC7FCB3383FFFFE487FA36C5B1B297EA823>I<EC01
F090383F07FC9038FFDFFE000313FF5A48147E381FE1FE9038807E18393F003F00A2003E
7FA4003F5BA2381F807EEBE1FE6CB45A485B5C001E13C0013FC7FC90C8FC121F1340380F
FFFCECFF804814C04814F0397E0007F8007C130048147CA248143CA36C147C6C14FC007F
EB03F8EBE01F6CB512F0000F14C06C14800001EBFE0038003FF01F2E7E9D23>I<B47E7F
A41207A7EBC1FCEBC7FF01DF138090B512C0A29038FE0FE0EBF807EBF00313E0A313C0AD
39FFFE1FFF5CA38020297FA823>I<133813FEA5133890C7FCA6EA7FFC487EA3127FEA00
3EB3387FFFFEB6FCA36C13FE182A7AA923>I<14E0EB03F8A5EB00E01400A63803FFF048
13F8A37EC7FCB3AB13011238387C03F012FEEB0FE0B5FC14C06C13006C5AEA0FF815397D
A923>I<EA7F80487EA3127F1203A7ECFFFC13C1A313C0EC3F00147E5CEBC1F8EBC3F0EB
C7E0EBCFC0EBDFE0EBFFF0A2EBFCF8497EEBF07EEBE03E497E1580EC0FC01407EC03E039
7FFE0FFFB55AA36C487E20297FA823>I<EA7FFEB5FCA37EEA001FB3AD007FB512C0B612
E0A36C14C01B297CA823>I<397E1F01F039FF7FC7FC9038FFEFFE14FF6C80390FE1FE1F
EBC1FC01C07FEB80F8A2EB00F0AE3A7FE3FE3FE026FFF3FF13F0A3267FE3FE13E0241D81
9C23>I<38FF81FCEBC7FF01DF138090B512C0A23907FE0FE0EBF807EBF00313E0A313C0
AD39FFFE1FFF5CA380201D7F9C23>I<133F3801FFE0487F487F487F381FC0FE383F807F
383E001F007E1480007C130F00FC14C0481307A66C130FA2007C1480007E131F6CEB3F00
6D5A381FE1FE6CB45A6C5B6C5B6C5BD8003FC7FC1A1D7C9C23>I<38FF81FCEBC7FF01DF
13C090B512E015F03907FE0FF8EBF8039038F001FCEBE000A249137EA2153EA5157E7F15
FC7F14019038F803F89038FE0FF090B5FC15E001DF138001CF1300EBC3F801C0C7FCAAEA
FFFEA51F2C7F9C23>I<90383FC1C09038FFF3E0000313FB4813FF5A381FF07F383FC01F
387F000F127E14075A14035AA57E1407127E140F007F131FEA3F80381FE07F90B5FC1207
6C13FB6C13E338003F83EB0003AAEC7FFF91B51280A36E1300212C7E9C23>I<397FF00F
E039FFF87FF8ECFFFC13FB6CB5FCC613F8ECC078EC800091C7FC5BA25BA35BAA387FFFFC
B57EA36C5B1E1D7E9C23>I<3801FF9C000F13FE5A127FA2EAFF0000FC137E48133EA26C
131C6C1300EA7FF0383FFF80000F13E06C13F838007FFCEB01FEEB007F0070133F00F813
1F7E143F7E38FF80FFEBFFFE14FC14F814F000701380181D7B9C23>I<137013F8A7007F
B51280B612C0A36C1480D800F8C7FCACEC01C0EC03E0A3EBFC07140F9038FE1FC0EB7FFF
158090383FFE00EB0FFCEB07F01B257EA423>I<39FF807FC001C013E0A400071303B014
07140FEBE03F90B6FC7EA2C613F3EB3FC1201D7F9C23>I<39FFF03FFCA5390F8007C000
071480A2EBC00F00031400A26D5A0001131EA2EBF03E0000133CA2EBF87CEB7878A2EB7C
F8EB3CF0A2133F6D5AA36D5A6D5A1E1D7E9C23>I<397FF00FFE39FFF81FFFA3397FF00F
FE001FC712F86C14F0A57F390783E1E0EB87F1A3EB8FF90003EB79C013CFA2EBDF7BA2EB
DE3B00011480EBFE3FA2EBFC1FA23900F80F00201D7F9C23>I<397FF07FF039FFF8FFF8
A3397FF07FF03903E03E003801F03C3800F87CEB78F8EB7CF0EB3FE0131F6D5A5C130749
7E497E133DEB3CF0EB7878EBF07C0001133C497E3803C01F397FF03FF839FFF87FFCA339
7FF03FF81E1D7E9C23>I<EC1FE0ECFFF05B130715E090380FF00014C05CAE131F137FD8
7FFFC7FC485A5BA27F6C7EC66C7E131F130FAE8014F0903807FFE015F013017FEC1FE01C
347DAD23>123 D<EA7FC0EAFFF87F13FF7EC66C7E131F130FAE8014F0903807FFE06D13
F07FA25B4913E090380FF00014C05CAE131F137FD87FFFC7FCB5FC13FC5BEA7FC01C347D
AD23>125 D<3803C038380FF07C381FF8FCEA3FFF4813F8B512F038FC7FE038F83FC038
700F0016097AA823>I E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fb cmbx10 12 37
/Fb 37 122 df<923B1FFF8001FFC00203B5D8F01F13F0021FDAF87F13FC027F91B67E90
2701FFF803ECC3FF49D9C001EBFE0790270FFE000349481380494815F84A4913F0494815
E0495AA201FF4C6C13004A6D6E5A735A70EC00707092C7FCAABA12FCA5C601E0C701E0C8
FCB3B0007F9026FFC07FEBFFF0A549467EC543>11 D<ED1FFF0203B512E0021F14F8027F
80903A01FFF803FE499038C0007F010F90390001FF80D91FFC497F4A5B495A495AA201FF
4A7F4A6D5BA3705B7090C7FC705A94C8FCA693387FFFE0B9FCA5C601E0C7FCB3B0007F90
26FFC07FEBFFC0A53A467EC540>I<EE0FC04C7EA24C7EA34C7EA24C7EA24B7FA34B7FA2
4B80A34B8016CF031F80168F1687033F801603037F80157E8203FE804B7E0201814B137F
A20203814B7F0207824B7FA2020F824B7F021F824B7F023F82A292C77E4AB77EA291B87E
A3D901FCC87F4A157F0103835C840107844A81010F844A81A2011F844A81013F84496C81
B600C0010FB612FCA54E457CC457>65 D<B912C018FCF0FF8019E019F8D8001F90C70003
7F9438007FFE727E7213807213C0841AE0A2841AF0A71AE0601AC0604E13801A004E5AF0
FFFC050313F0053F5B92B7C7FC18FCF0FFC019F892C86C7EF01FFF7213807213C07213E0
1AF07213F8A27213FCA31AFEA2197FA319FFA21AFCA2601AF8604E13F0A2061F13E04E13
C04DB51280BAEAFE006119F0198006F0C7FC47447DC351>I<DCFFFC141C031FD9FFC013
7C4AB600F813FC0207EDFE01021FEDFF03027FD9F00113C749B5C7EA3FEF4901F8EC0FFF
010F01E01403490180804990C9FC4948167F4948163F4849161F4849160F5C4818074849
1603A2485B19015A91CAFC19005AA3491800A212FFAC127FA27F1A7CA27EA2806C19FC1A
F86C7F19016C7F6CF003F0806C6DEE07E06C6DEE0FC06D6C161F6D6CEE3F806D6DED7F00
6D01E0EC01FE010301F8EC07FC6D01FFEC1FF86D6C9039F801FFE0021F90B65A020793C7
FC020115FCDA001F14E0030049C8FC46467AC453>I<B97E18F818FF19E019F8D8001F90
C7000F13FE05007F061F7F06077F7213F084727F737E737E737EA2731380A27313C0A21B
E085A21BF0A51BF8A285A961A21BF0A41BE0A2611BC0A2611B801B00614F5A62197F4F5A
06035B4E5B061F5B95B5C7FC050F5BBA12F819E0198006FCC8FC18804D447CC358>I<BA
12FCA485D8001F9038800001EF003F180F180318011800A2197F85A385A2177CA2F10F80
A405FC90C7FCA316011603161F92B5FCA5ED801F160316011600F101F0A2177CF103E0A5
94C71207A21AC0A2190FA2191FA2193FF17F8019FF601807181F4DB5FCBBFC1A00A44443
7DC24B>I<BA12E0A419F0D8001F903880000F1700183F181F180F1807180319F81801A3
1800A3EE01F0197CA419001603A31607160F163F92B5FCA5ED803F160F16071603A31601
A693C9FCAEB712FCA53E437CC248>I<DCFFFC1438033FD9FF8013F84AB6EAF001020FED
FC03023FEDFF0791B5D8F003138F4991C7EA7FDF010701F8EC1FFF4901E0140749018080
4990C9FCD97FFC167F495A48183F4849161F4A160F5A48491607A2485B19035A91CAFC19
015AA34994C8FC12FFAC057FB612F8A2127F7FA2DD0001EBF8007EA2807EA26C7FA26C7F
7E806C7F6C7F6D7E6D6C5D6D13C06D6D5C6D01F85C010101FF143F6D9139F801FFDF023F
90B6128F020F16030201EDFC00DA003F02E01338030049C9FC4D467AC45A>I<B7D8F007
B71280A5D8001F0180C801FCC7FCB3A792B8FCA50380C8FCB3AAB7D8F007B71280A55144
7CC35A>I<B712F0A5D8001FEB8000B3B3B3A4B712F0A524447DC32B>I<B600C0051FB512
F06F5FA26F5FA2D8001FF380006F17F7A2DABFFCEE01E7A2DA9FFEEE03C7A2DA8FFFEE07
87A202876DED0F07A302836D151EA202816D153CA202806D1578A26F6C15F0A36F6CEC01
E0A26F6CEC03C0A26F6CEC0780A26F6DEB0F00A36F6D131EA26F6D5BA26F6D5BA2706C5B
A2706C485AA3706C485AA2706C485AA270018FC7FCA27013DEA37013FCA2705BA2715AA2
715A497EB600F0043FB612F0715AA2715A71C7FC64447CC36D>77
D<B812FEEFFFF018FE727E85D8001F90C7001F13F005037F05007F727E727E841A801AC0
84A21AE0A91AC0A24E1380A21A00604E5A4E5A05035B051F13E092B75A96C7FC18F818C0
0380CAFCB3A7B712F0A543447CC34E>80 D<B812F8EFFFC018F818FF19C0D8001F90C700
3F7F050313F805007F727E727E84868684A286A762A24E5BA297C8FC4E5A4E5A4D485A05
075B053F13C092B7C9FC18FC18F018FC92C77F94383FFF80050F7F717F717F85838583A6
85A61B0773EB0F80A372141F1A8072EC3F00B700E06D13C072EBF0FE72EBFFFC06015C72
6C13E0CC0003138051457CC356>82 D<DAFFF8130701079038FF800F013FECE01F49ECF8
3F48B6EAFE7F48D9C00FB5FC3907FE00014848EB003FD81FF080160748488082484880A2
8312FF83A27F837F7F7F01FF92C7FC6C13C014FEECFFE06C14FF16F06C15FC16FF6C16C0
6C826C826C826C82013F81010F811303D9003F15801403DA001F14C01500163F040F13E0
1603A200788100F881A3177F7EA218C07EA26CEEFF80A26D4A130013E06D4A5A01FE4A5A
6D6CEB1FF802FCEBFFF0486CB65AD8FC1F5DD8F80792C7FC48C614FC48010713C033467A
C440>I<B700F0011FB512FEA5D8001F0180C83807F800735AB3B3A71907A26D6D5EA219
0F7F6F4B5A7F6F4B5A6D4DC7FC6D6D5D6E6C4A5A6E6CEC07FC91261FFFC0EB1FF8020790
39F801FFF06E90B612C0020093C8FC033F5C030714F0DB003F90C9FC4F457CC358>85
D<903801FFF8011FEBFF80017F14E090B612F8489038807FFC3A03FE001FFE486CEB07FF
486E7F0280806F7FA36F7F6C90C7FCA26C5AEA00F890C8FCA2150F021FB5FC0103B6FC13
1F017F13C03901FFFC004813E0000F13804890C7FC485A5B485AA2485AA45DA26C6C5BED
07BF6C6C010F13FC6CB490391F3FFFE06C9026C0FE1F13F06CEBFFFC6CECF007C66CD9E0
0113E0010790C9FC342F7DAD38>97 D<EB7FC0B5FCA512037EB1ED1FFC92B512C002C314
F002CF14FC9139DFF01FFF9126FF800713809126FE000113C04A6D13E002F015F04A147F
18F8173F18FCA2EF1FFEA318FFAB18FEA3173F18FCA218F8177F6E15F06EECFFE06E4913
C06E49138091263F800F1300903AFE1FE03FFE496CB55AD9F80314F049C61480C8D81FF8
C7FC38467DC440>I<EC3FFE49B512E0010F14F8013F8090397FF807FE9039FFE001FF48
4948138048018014C048495A485A121FA2485A6F1380A2007F6E130049EB007C93C7FC12
FFAC127F7FA2123FEE03E06C7E16076C6C15C06C150F6C6DEB1F806C6DEB3F006C01F013
FE90397FFE03FC6DB55A010F5C010314C09026003FFCC7FC2B2F7CAD33>I<EFFF804BB5
FCA5ED000782B1EC1FFC49B51283010F14E3013F14F390267FFC07B5FC9038FFF0004801
C0133F48497F4890C77E484880121F5B123FA2127F5BA312FFAB127FA36C7EA2121F7F00
0F5D6C6C5C5E6C6D90B512C06CD9E00114FF39007FF80F6DB512E7010F14C70103140790
26003FF0EBFC0038467CC440>I<EC1FFE49B512C0010714F0011F14FC90397FFC0FFE90
3AFFE003FF804849C613C0485B4890C7EA7FE048ED3FF0485AEE1FF8485AA2007F150F49
15FCA212FFA390B7FCA317F801F8C9FCA5127FA27FA2003F1638177C6C6C15FCA26C6CEC
01F86C6D13036CED07F06C6DEB0FE06C01F0EB3FC0903A3FFE01FF806DB5EAFE0001075C
010014F0020F90C7FC2E2F7DAD35>I<913801FFC0021F13F0027F13FC49B57E49EBC3FF
903807FE074948481380EB1FF8EB3FF0EB7FE0A349486C13006F5A6F5AED007093C7FCAA
B612FCA5C601E0C8FCB3B0007FEBFFE0A529467DC523>I<902601FFF013FF010FD9FE03
1380013FD9FF8F13C090B812E048D9C07F13BF489039001FF83F4848EB0FFC4848EB07FE
001F9238FF1FC0496DEB0F8094C7FC003F82A7001F93C7FCA26D5B000F5D6C6C495A6C6C
495A6C9038C07FF04890B55A1680D8078F49C8FC018113F0D80F80CAFCA47F7F13F890B6
12E016FEEEFFC06C16F0836C826C82831207481780D81FF8C77ED83FE014074848020113
C000FF8149157FA56D15FF007F17806D5C6C6C4A1300D81FFCEC0FFE6CB4EC3FFC6C9039
E001FFF8000190B612E06C6C1580010F02FCC7FCD9007F138033427DAC39>I<EB7FC0B5
FCA512037EB1923803FF80031F13F0037F7F92B57E9139C1FC1FFE9139C3E00FFF9126C7
C0077FECCF0002DE7F02FC81A25C5CA35CB3A7B600C1B61280A539457CC440>I<13FCEA
03FF4813804813C0A24813E0A66C13C0A26C13806C1300EA00FC90C7FCA9EB7FC0EA7FFF
A512037EB3AFB6FCA518467CC520>I<EB7FC0B5FCA512037EB293387FFFF0A593380FF8
004C5AEE3FC04C5A4B48C7FCED03FC4B5A4B5AED3FE0ED7F804BC8FCECC1FE14C7ECCFFF
02DF7F91B57E82A202FD7F02F07F4A7F4A6C7E153F6F7E6F7F83816F7F6F7F6F7F83167F
707E83B66CB512FCA536457DC43C>107 D<EB7FC0B5FCA512037EB3B3B3A3B61280A519
457CC420>I<90287FC003FF80EB07FFB5011F01F0013F13E0037F6D90B57E92B56C4880
913DC1FC1FFE03F83FFC913DC3E00FFF07C01FFE00039026C7C00790398F800FFF6CD9CF
00EC9E0002DE6D01BC7F02FC03F81580A24A5D4A5DA34A5DB3A7B600C1B60083B6FCA558
2D7CAC5F>I<903A7FC003FF80B5011F13F0037F7F92B57E9139C1FC1FFE9139C3E00FFF
00039026C7C0077F6CEBCF0002DE7F02FC81A25C5CA35CB3A7B600C1B61280A5392D7CAC
40>I<EC1FFE49B512E0010714F8011F14FE903A7FF807FF809026FFE0017F4890398000
7FE04890C76C7E48486E7E000F8249140F001F82A2003F824980007F1780A400FF17C0AA
007F1780A46C6C4A1300A2001F5EA26C6C4A5A00075E6D143F6C6D495AC69039E001FFC0
90267FF8075B6DB6C7FC010F14FC010114E09026001FFEC8FC322F7DAD39>I<90397FC0
1FFCB590B512C002C314F002CF14FC9139DFF03FFF9126FF800F138000039026FE000313
C06C496D13E002F015F04A7FEF7FF8A218FC173F18FEA3EF1FFFAB18FE173FA318FC177F
18F817FF6E15F06E4913E06E4913C06E4913806E6C4813009238E07FFE02EFB55A02E314
F002E01480DB1FF8C7FC92C9FCADB612C0A538407DAC40>I<90397F803FC0B5EBFFF002
8313F8028713FC91388FE7FE91389F8FFF0003EB9E0F6C13BCA214F8A29138F007FEED03
FC9138E001F892C7FCA35CB3A5B612C0A5282D7DAC2F>114 D<90391FFE078090B512DF
000314FF5A380FF803381FE000D83F80133F127F90C7121FA248140FA27FA201E090C7FC
13F8EBFFC06C13FEECFFC06C14F015FC6C806C806C1580000115C07E011F14E01301D900
0713F014000078147F00F8143F151F6C140FA37E6C15E0151F6D14C06D133F01F0EB7F80
9039FC03FF0090B55A00FC5CD8F83F13F0D8F00790C7FC242F7CAD2D>I<EB01F0A51303
A41307A2130FA2131FA2133F137F13FF1203000F90B512C0B7FCA4C601F0C7FCB3A3ED01
F0AA017FEB03E014F81507D93FFC13C090391FFE1F806DB512006D5B01015B9038003FF0
24407EBE2D>I<D93FE0EC7FC0B549B5FCA50003EC00076C81B3A85EA35E6C5DA26E013D
7F017F02F9EBFF8090393FFC03F16DB512E16D14C1010314019026003FFC91C7FC392E7C
AC40>I<007FB590387FFFF8A5C601F890380FF8006D6CEB07E0013F4A5A6D6C131F6E49
5A6D6D48C7FC6DEBC0FE6DEBC1FC6DEBE1F8EDF3F06DEBFFE0806E5B6E5B93C8FC6E7F6E
7F6E7FA24A7F4A7F4A7FEDBFFEEC3F1F91387E0FFF02FE8049486C7F49486C7F49487E49
486C7F4A8049486D7E49C76C7ED9FF80131FB500F090B512FEA5372C7EAB3C>120
D<007FB5398007FFFCA5000101F0C7EA7F806CEE3E006E147E017F157C8017FC013F5D6E
1301011F5D6E13036D5DED80076D5DEDC00F6D5D15E0161F6D92C7FC6F5A6D143EEDF87E
027F137CEDFCFC023F5B15FF6E5BA36E5BA26E5BA26E5BA26E90C8FCA26E5AA2157CA215
FC5D1401000F5C383FC003D87FE05B1407D8FFF05B140F5D141F4AC9FC387FE07E495A38
3F87F8EBFFF06C5B00071380D801FCCAFC36407EAB3C>I E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fc cmbx8 8 20
/Fc 20 119 df<91383FFCF00103B5FC130F90383FF01F9038FF803F4813005B12034913
1F150FA7B7FCA43903FC000FB3A4263FFFC0B5FCA4282E7FAD2D>13
D<14E01301EB07C0EB0F80EB1F00133E137E5B5B1201485AA2485AA2485AA2121F5B123F
A290C7FC5AA512FEAF127FA57E7FA2121F7F120FA26C7EA26C7EA26C7E12007F137E133E
7FEB0F80EB07C0EB01E01300134378B120>40 D<12E07E127C7E7E6C7E7F6C7E12037F6C
7EA26C7EA2137EA2137F7F1480A2131F14C0A5EB0FE0AFEB1FC0A51480133FA214005B13
7EA25BA2485AA2485A5B1207485A5B48C7FC123E5A12F05A13437CB120>I<B712E016FE
707E17E00001D9800013F8EE1FFCEE07FE707E7013807013C0EF7FE0173F18F0A2171F18
F8A318FCAA18F8A4EF3FF0A218E0177FEFFFC018805E04071300EE1FFCEEFFF8B85A17C0
4CC7FC16E0362E7DAD3E>68 D<B690380FFFFEA4000101809038001F00B3AC5F6C6D143E
A2017F157E6E147C013F5D6D6C1303D90FFCEB0FF0903A07FF807FE06D90B51280010092
C7FC023F13FC020313C0372F7DAD3E>85 D<007FB548B512E0A4C6903AE0000FE0006D6C
5C6E495A6D6C49C7FC011F5C6D6C137E6E5B6DEB81F86D13836DEBC7F0EDE7E06DEBFFC0
6E5B8093C8FC6E5A140F6E7E826E7F5C4A7F4A7F82EC3F3F91387E1FFC02FE7F4A6C7E49
487E49486C7F0107814A6C7F49487E49486D7E013F8149C76C7E017E141F496E7EB5D8F0
01B512FCA4362E7DAD3D>88 D<EB7FF80003B5FC000F14C0391FE01FF09038F007F86E7E
A26E7EEA0FE0EA07C0C7FCA214FF133F48B5FC000713C1381FFC01EA3FE0EA7FC0EAFF80
1300A3140313806C6C487E263FF03F13F8381FFFFE0007EBF87FC6EBC01F251E7E9D28>
97 D<EB0FFE90387FFFC048B512F03907FC07F8380FF00FEA1FE0123F13C0007FEB07F0
90388003E091C7FC12FFA8127F7FA26C6C133CA26C6C137C6C6C13F83907FE03F00001B5
12E06C6C138090380FFC001E1E7D9D24>99 D<ED0FC0EC03FFA4EC003FABEB0FF8EB7FFF
48B6FC3807FC07380FF001391FE0007F003F143F5B127F5BA212FFA9127F7F123F157F6C
6C13FF380FF0032607FC0F13FC0001B512BF6CEBFE3FEB1FF0262E7DAD2D>I<EB0FFC90
387FFF8048B512E03907FC0FF0390FF003F8391FE001FC1400484813FE007F147E5B157F
12FFA290B6FCA30180C7FCA3127F7FA2003F140F6C7E6C6C131F6C6C137E3903FE01FC6C
B512F86C6C13E001071300201E7E9D25>I<ED07C090391FF81FF090B5EA7FF8000314FD
3907F81FF3380FE007001F14F99039C003F8F0003FECFC00A6001F5CEBE007000F5C3907
F81FE090B55A4891C7FCEB1FF8001EC9FC121FA27F90B512C06C14F815FF6C158016C048
15E0123F48C7EA3FF000FE140F4814071503A36C1407007FEC0FE06C6CEB1FC0D81FF0EB
FF800007B5EAFE00000114F8D8001F1380252D7E9E29>103 D<EA03F012FFA4120FAB91
3803FFF0A4913800FC00EC03F84A5AEC0FC0EC3F804AC7FC14FCEBF1F8EBF7FCEBFFFE80
A2497F9038F87FC0496C7E496C7E6E7EA26E7E6E7E6E7E6E138026FFFE0313FCA4262E7D
AD2B>107 D<EA03F012FFA4120FB3B3B5FCA4102E7CAD17>I<2707E00FF8EB1FF000FFD9
7FFEEBFFFC01E1B5008313FF9028E7E07FCFC01380903BEF803FDF007F260FFE0013FC03
1FEC3FC0495C495CA2495CB0B53B01FFFE03FFFCA43E1E7C9D45>I<3907E01FF000FFEB
7FFC01E1B5FCD9E7E013809038EF807F260FFE0013C049133FA25BA25BB0B53803FFFCA4
261E7C9D2D>I<EB07FE90387FFFE048B512F83903FC03FC3907F000FE4848137F4848EB
3F80003F15C049131F007F15E0A200FF15F0A8007F15E0A26D133F003F15C0001F15806D
137F6C6CEBFF003903FC03FC6CB55A6C6C13E0D907FEC7FC241E7E9D29>I<3807E07E39
FFE1FF8001E313E0EBE78F9038EF1FF0EA0FFE13FCA29038F80FE0EC07C091C7FC5BAFB5
7EA41C1E7D9D22>114 D<3801FF8E000713FE121FEA3F00007C137E0078133E00F8131E
A27EB490C7FC13F0EBFF806C13E06C13F86C13FE7E00037FD8003F13801300143F00F013
1F140F7EA26CEB1F007E38FF807EEBFFFC00FB13F000E01380191E7D9D20>I<133CA413
7CA313FCA2120112031207001FB5FCB6FCA3D803FCC7FCAEEC03C0A61407D801FE1380EB
FF0F6CEBFF00EB3FFCEB0FF01A2A7FA920>I<B5EB3FFCA4D80FF8EB07C0000715806D13
0F000315006D5B0001141E6D133E6C143CEC807C017F1378ECC0F8013F5B14E1011F5B14
F3010F5B14FF6D5BA26D90C7FCA26D5AA26D5AA21478261E7E9D2B>118
D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fd cmr8 8 42
/Fd 42 127 df<9138FF807E01079038E1FF80903A1F807FC3C0D93E00EB87E049EBFF07
4913FE485A00039138FC018049017CC7FCAAB712FCA22703E0007CC7FCB3A6486C13FE3A
7FFF0FFFF0A22B2F7FAE29>11 D<14FF010713E090381F80F090383E003849137C4913FC
485A1203491378153092C7FCA7157CB612FCA23803E000157CB3A5486C13FE3A7FFF0FFF
E0A2232F7FAE27>I<ECFFC0010713FC90381F807C90383E00FC5B5B485A0003147C5BAA
B612FCA23903E0007CB3A6486C13FE3A7FFF0FFFE0A2232F7FAE27>I<13031307130E13
1C1338137013F0EA01E013C01203EA0780A2EA0F00A2121EA35AA45AA512F8A25AAB7EA2
1278A57EA47EA37EA2EA0780A2EA03C0120113E0EA00F013701338131C130E1307130310
437AB11B>40 D<12C07E12707E7E7E120FEA0780120313C0EA01E0A2EA00F0A21378A313
3CA4131EA5131FA2130FAB131FA2131EA5133CA41378A313F0A2EA01E0A2EA03C0138012
07EA0F00120E5A5A5A5A5A10437CB11B>I<123C127EB4FCA21380A2127F123D1201A312
031300A25A1206120E5A5A5A126009157A8714>44 D<B512C0A412047F9018>I<123C12
7E12FFA4127E123C08087A8714>I<15C0140114031580A214071500A25C140EA2141E14
1CA2143C143814781470A214F05CA213015CA213035C130791C7FCA25B130EA2131E131C
A2133C1338A21378137013F05BA212015BA212035BA2120790C8FC5A120EA2121E121CA2
123C1238A212781270A212F05AA21A437CB123>I<130C133C137CEA03FC12FFEAFC7C12
00B3B113FE387FFFFEA2172C7AAB23>49 D<EB7F803801FFF0380780FC380E003F48EB1F
8048EB0FC05A0060EB07E012F000FC14F07E1403A3007C1307C7FCA215E0140F15C0141F
1580EC3F00147E147C5C495A495A495A495A011EC7FC5B5B4913305B485A4848136048C7
FC000E14E0001FB5FC5A4814C0B6FCA21C2C7DAB23>I<DA1FF013C09138FFFE01903903
F00F8390390F8001E3013FC71277017C143F4848141F4848140F48481407A24848140312
1F491401123F90C8FC481500A300FE1600AB127F17C0A27E7F001F15016D1580120F6C6C
1403EE07006C6C14066C6C140ED8007C5C013F147890390F8001E0903903F00FC0902600
FFFEC7FCEC1FF02A2F7CAD33>67 D<B612F815FF3A03F8001FE00001EC03F0ED00F8167E
82EE1F80160F17C0EE07E0A2EE03F0A217F81601A317FCAA17F8A3EE03F0A217E0160717
C0160FEE1F80EE3F00167E5EED03F00003EC1FE0B7128003F8C7FC2E2D7DAC36>I<B712
FEA23903F800010001EC003E828282A282A3178016011518A293C7FCA31538157815F890
B5FCA2EBF800157815381518A21760A392C712C0A4160117801603A21607160F163F0003
913801FF00B8FCA22B2D7EAC30>I<DA1FF013C09138FFFE01903903F00F8390390F8001
E3013FC71277017C143F4848141F4848140F48481407A248481403121F491401123F90C8
FC481500A300FE1600A992381FFFFEA2007F9138001FE0EE0FC0A27E7F121F7F120F6C7E
A26C7E6C6C141FEA007C013F143FD90F8013F3903903F007C10100B51200DA1FF813002F
2F7CAD37>71 D<D8FFF8903803FFFC7F00019138003FC06DEC0F006D1406EBBF80A2EB9F
C0EB8FE0138780EB83F8138180EB80FE147E147FEC3F80EC1FC0140F15E0EC07F0140315
F8EC01FC140015FE157FED3F86151F16C6ED0FE6150716F6ED03FE1501A21500167E163E
A2486C141ED80FF0140EB5FC16062E2D7DAC35>78 D<B539F003FFFCA2D803FCC7EA3FC0
6C48EC0F001606B3AB160E0000150C7F161C017C1418017E14386D5C6D146090390F8001
E0903907E00380902601F80FC7FC9038007FFCEC0FF02E2E7DAC35>85
D<13FF000713C0380F01F0381C00F8003F137C80A2143F001E7FC7FCA4EB07FF137F3801
FE1FEA07F0EA1FC0EA3F80EA7F00127E00FE14065AA3143F7E007E137F007FEBEF8C391F
83C7FC390FFF03F83901FC01E01F207D9E23>97 D<EA07C012FFA2120F1207AC14FE9038
C7FF809038CF03E09038DC01F09038F8007C49137E49133E497F1680A2150F16C0A9ED1F
80A216005D6D133E6D5B01B05B9038BC01F090380E07E0390607FF80260001FCC7FC222F
7EAD27>I<EB1FE0EB7FFC3801F01E3803E0073907C01F80EA0F80EA1F005A003EEB0F00
007E90C7FCA2127C12FCA9127EA215C07E6C130101801380380FC0033907E007003801F0
3E38007FF8EB1FC01A207E9E1F>I<15F8141FA214011400ACEB0FE0EB7FF83801F81E38
03E0073807C003380F8001EA1F00481300123E127EA25AA9127C127EA2003E13017EEB80
03000F13073903E00EFC3A01F03CFFC038007FF090391FC0F800222F7EAD27>I<EB1F80
EBFFF03803E0783807C03E380F801E381F001FEC0F80123E007E130715C0127C12FCA3B6
FCA200FCC8FCA5127EA2003E14C0123F6C1301390F80038001C013003803E00F3801F03C
38007FF8EB1FC01A207E9E1F>I<EB03F0EB0FFCEB3E1EEB7C3F13F8EA01F0A23803E00C
1400AAB512E0A23803E000B3A6487E387FFF80A2182F7FAE16>I<013F13F89038FFC3FE
3903E1FF1E3807807C000F140C391F003E00A2003E7FA76C133EA26C6C5A00071378380F
E1F0380CFFC0D81C3FC7FC90C8FCA3121E121F380FFFF814FF6C14C04814F0391E0007F8
48130048147C12F848143CA46C147C007C14F86CEB01F06CEB03E03907E01F803901FFFE
0038003FF01F2D7E9D23>I<EA07C012FFA2120F1207AC14FE9038C3FF809038C703E090
38DE01F013F8496C7EA25BA25BB2486C487E3AFFFE1FFFC0A2222E7EAD27>I<EA0780EA
0FC0EA1FE0A4EA0FC0EA0780C7FCA8EA07C012FFA2120F1207B3A5EA0FE0EAFFFCA20E2E
7EAD14>I<EA07C012FFA2120F1207ADEC1FFEA2EC0FF0EC07C05D020EC7FC5C5C5C5CEB
C3C013C7EBCFE0EBDFF013F9EBF0F8497EEBC07E143E80816E7E14076E7E816E7E486C48
7E3AFFFE07FF80A2212E7EAD25>107 D<EA07C012FFA2120F1207B3B3A3EA0FE0EAFFFE
A20F2E7EAD14>I<2607C07FEB07F03BFFC3FFC03FFC903AC783F0783F3C0FCE01F8E01F
803B07DC00F9C00F01F8D9FF8013C04990387F000749137EA249137CB2486C01FEEB0FE0
3CFFFE0FFFE0FFFEA2371E7E9D3C>I<3807C0FE39FFC3FF809038C703E0390FDE01F0EA
07F8496C7EA25BA25BB2486C487E3AFFFE1FFFC0A2221E7E9D27>I<EB1FE0EB7FF83801
F03E3803C00F3907800780390F0003C04814E0003EEB01F0A248EB00F8A300FC14FCA900
7C14F8A26CEB01F0A26CEB03E0A2390F8007C03907C00F803901F03E0038007FF8EB1FE0
1E207E9E23>I<3807C0FE39FFC7FF809038CF03E0390FDC01F03907F800FC49137E4913
3E49133FED1F80A3ED0FC0A8151F1680A2ED3F00A26D137E6D137C5D9038FC01F09038CE
07E09038C7FF80D9C1FCC7FC01C0C8FCA9487EEAFFFEA2222B7E9D27>I<90380FE01890
387FF8383801F81C3903E00E783807C007390F8003F8001F1301EA3F00A2007E1300A212
FE5AA8127EA36C13017EEB8003380FC0073803E00E3801F03C38007FF0EB1FC090C7FCA9
4A7E91381FFFC0A2222B7E9D25>I<380781F838FF87FEEB8E3FEA0F9CEA07B813B0EBF0
1EEBE000A45BB0487EB5FCA2181E7E9D1C>I<3801FE183807FFB8381E01F8EA3C004813
78481338A21418A27E7EB41300EA7FF06CB4FC6C13C06C13F0000113F838001FFC130138
C0007E143EA26C131EA27EA26C133CA26C137838FF01F038E3FFC000C0130017207E9E1C
>I<1360A413E0A312011203A21207121FB512F0A23803E000AF1418A714383801F03014
703800F860EB3FE0EB0F80152A7FA81B>I<D807C013F800FF131FA2000F130100071300
B21401A314033803E007EC0EFC3A01F81CFFC038007FF890391FE0F800221F7E9D27>I<
3AFFFC01FFC0A23A0FE0007E000007147C15380003143015706C6C1360A26C6C5BA39038
7C0180A26D48C7FCA2EB3F07EB1F06A2EB0F8CA214DCEB07D8A2EB03F0A36D5AA26D5A22
1E7F9C25>I<3BFFFC3FFE07FFA23B0FE003F001F801C09038E000F00007010114E08126
03E00314C0A2913807F8012701F006781380A29039F80E7C030000D90C3C1300A290397C
181E06A2151F6D486C5AA2168C90391F600798A216D890390FC003F0A36D486C5AA36DC7
5A301E7F9C33>I<3AFFFC07FF80A23A0FF003FC000003EB01F0000114C06D485A000091
C7FCEB7C06EB3E0E6D5A14B8EB0FB0EB07E013036D7E497E1307EB067C497EEB1C1F0138
7FEB700F496C7E6E7ED803C07F00076D7E391FE003FC3AFFF007FFC0A2221D7F9C25>I<
3AFFFC01FFC0A23A0FE0007E000007147C1538000314306D137000011460A26C6C5BA2EB
FC01017C5BEB7E03013E90C7FCA2EB1F06A2148EEB0F8CA2EB07D8A2EB03F0A36D5AA26D
5AA2495AA2130391C8FC1278EAFC06A25B131CEA7838EA7070EA3FE0EA0F80222B7F9C25
>I<38078008380FE01C381FF838383FFFF038707FE038E01FC03840078016077AAC23>
126 D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fe cmbx10 14.4 11
/Fe 11 115 df<932601FFFCEC03C0047FD9FFC013070307B600F8130F033F03FE131F92
B8EA803F0203EFC0FF020FDAF00113F1023F49C7EA3FFB4A01F00207B5FC49B500C08049
91C9FC4949824901F88249498249498249498290B5488292CAFC4885485B86485B481A7F
A24849183FA3485B1B1FA25AA24A95C7FCA3B5FCAE7EA280A2F30FC07EA36C7FA21B1F6C
6D1980A26C1A3F6C7F1C006C6D606C6E17FEA26D6D4C5A6D6D4C5A6D6D16076D6D4C5A6D
01FE4C5A6D6D4C5A6D02C0EDFF806D6C01F8020390C7FC6E01FFEC1FFE020F02F0EBFFF8
020391B65A020017C0033F93C8FC030715FCDB007F14E0040101FCC9FC525478D263>67
D<BA12C019FEF1FFC01AF81AFE747ED8000701F8C7000F14E0060080071F13FC07077F07
017F7380747F081F7F8886747F747FA2747FA288861D80A2871DC0A31DE0A4871DF0AF1D
E063A41DC0A398B51280A31D0062646264505BA2505B505B505B505B4FB5C7FC4F5B070F
5B077F5B0607B512E0BC128098C8FC1AF81AE04FC9FC19C05C527CD169>I<B912FCF0FF
E019FEF1FFC01AF01AFCD8000701F8C7003F13FF060380060080073F7F737F737F87737F
A2737FA388A899C8FCA263616361634F5B4F5B96B55A060391C9FC063F5B92B812F81AC0
97CAFC19FC19FF9226F8000180DD003F13E0060F7F727F727F86727FA27280A2737FA587
A587A575EB0780F50FC0A28773151FA2736D148075133FB800C06DEC807F739138C1FF00
0701ECFFFE735D083F5C080714E0CE001F138062537CD167>82 D<91383FFFC00107B512
FC011FECFF80017F15E090B77E48D9E0077F48D9800013FE486DEB3FFF82486D81707F82
84A2707F6C5BA26C5BC648C7FC90C8FCA44BB5FC4AB6FC143F49B7FC130F013FEBFE0390
B512E0000314004813FC4813F0485B485B5C4890C7FCA2B5FC5BA35EA27F6C5D5E6E497F
6C6D017E13FE6C6D4848EBFFF86C9026FC0FF814FC6C90B5487E0001EDC03F6C6CEC800F
011F9026FE000313F8010101E090C8FC3E387CB643>97 D<913803FFF0023FEBFF8091B6
12E0010315F8010F81499038C01FFE903A7FFE0007FF4948491380485B48494913C05C5A
485BA2485B7013805A70130048ED01FC91CAFCA3B5FCAD7E80A27EA2EF07E06C7F170F6C
6D15C06C161F6E15806C6D143F6C6DEC7F006C6D14FE903A7FFF8003FC6D9038F01FF801
0F90B55A6D5D01011580D9003F49C7FC020313E033387BB63D>99
D<943801FFC00407B5FCA6EE001F1707B3A3913803FFC0023F13FC49B6FC010715C74915
F7013FD9E03FB5FC49EB0007D9FFFC130148496D7E484980484980484980A25A5C5AA25A
91C8FCA3B5FCAD7EA46C7FA27EA26C6D5CA26C6D5C6C5E6C6D49B5FC6C6D4914F0D97FFE
010FECFFC0903A3FFF807FEF6D90B512CF0107158F6DECFE0FD9007F13F00207018049C7
FC42547BD24C>I<913803FFE0023F13FE91B612C0010381010F15F84901C07F903A7FFE
001FFE49486D7E48496D138048496D13C0484915E048814A15F048815C48EE7FF8A25A91
C8FC18FC173FB5FCA391B7FCA418F891CAFCA57EA3807EA218786C6D15FC17016C7F6CEE
03F86C6D14076E15F06C6DEC1FE06C6C6C143F6D6C6CEBFFC06DD9F0071300010790B55A
010115F86D6C14E0021F1480020001F8C7FC36387CB63F>I<ED0FFF92B512C0020714F0
021F14F8027F14FC9139FFFC1FFE49EBF03F4901C013FF49495A491300495AA2495AA201
7FEC3FFE4AEB1FFCEE0FF8EE07F093C7FCADB712F0A626007FFCC8FCB3B3A5007FB6FCA6
30547CD32A>I<137F3801FFC0487F487F487FA2487FA76C5BA26C5B6C5B6C5B6C6CC7FC
90C8FCABEB1FF8B5FCA612017EB3B3A4B612F0A61C547BD326>105
D<D93FF8EB1FFEB591B512E0030314F8030F804B8092393FE07FFF92267F001F7F000314
FCC6D9F9F86D7FECFBE014FF4B6D7F5D92C7FCA35CA35CB3ABB6D8FC07B612E0A643367B
B54C>110 D<90393FF001FFB5010F13E04B13F84B7F4B7F9238FF1FFFECF1FC00039026
F3F03F1380C6EBF7E015C0ECFF80A215007013005C705AEE03F84A90C8FCA45CB3A9B612
FEA631367CB539>114 D E
%EndDVIPSBitmapFont
end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 600dpi
TeXDict begin
%%PaperSize: A4
%%EndSetup
%%Page: 1 1
1 0 bop -91 -364 a Fe(Dired)47 b(Reference)f(Card)-12
-256 y Fd(\(based)25 b(on)f(Dired)f(in)h(GNU)f(Emacs)g(21.x\))-152
-176 y(Commands)f(mark)n(ed)h(with)h Fc(\(D)n(X\))f Fd(require)g
(dired-x)-450 19 y Fb(En)m(tering)37 b(and)g(Exiting)h(Dired)-450
175 y Fd(run)23 b(dired)1244 b Fa(C-x)36 b(d)-450 254
y Fd(dired)23 b(the)i(directory)f(of)f(the)i(\014le)f(y)n(ou)g(are)g
(editing)150 b Fa(C-x)36 b(C-j)g Fc(\(D)n(X\))-450 334
y Fd(quit)24 b(dired)1226 b Fa(q)-450 527 y Fb(Motion)38
b(Commands)-450 683 y Fd(mo)n(v)n(e)23 b(up)h(to)g(previous)g(line)769
b Fa(p)-450 763 y Fd(mo)n(v)n(e)23 b(do)n(wn)i(to)f(next)h(line)806
b Fa(n)-450 842 y Fd(mo)n(v)n(e)23 b(up)h(to)g(previous)g(directory)g
(line)469 b Fa(<)-450 922 y Fd(mo)n(v)n(e)23 b(do)n(wn)i(to)f(next)h
(directory)f(line)506 b Fa(>)-450 1002 y Fd(mo)n(v)n(e)23
b(to)i(next)f(mark)n(ed)f(\014le)762 b Fa(M-})-450 1082
y Fd(mo)n(v)n(e)23 b(to)i(previous)e(mark)n(ed)g(\014le)640
b Fa(M-{)-450 1161 y Fd(mo)n(v)n(e)23 b(up)h(to)g(previous)g(sub)r
(directory)495 b Fa(M-C-p)-450 1241 y Fd(mo)n(v)n(e)23
b(do)n(wn)i(to)f(next)h(sub)r(directory)532 b Fa(M-C-n)-450
1321 y Fd(mo)n(v)n(e)23 b(to)i(paren)n(t)f(directory)764
b Fa(^)-450 1400 y Fd(mo)n(v)n(e)23 b(to)i(\014rst)e(c)n(hild)h(sub)r
(directory)561 b Fa(M-C-d)-450 1591 y Fb(Mouse)38 b(Commands)-450
1747 y Fd(visit)23 b(\014le)1144 b Fa(Mouse_Button_2)-450
1827 y Fd(p)r(opup)25 b(men)n(u)879 b Fa(Control-Mouse_Button_3)-450
2018 y Fb(Immediate)37 b(Actions)h(on)g(Files)-450 2174
y Fd(visit)23 b(curren)n(t)h(\014le)1040 b Fa(f)-450
2254 y Fd(view)24 b(curren)n(t)g(\014le)1032 b Fa(v)-450
2333 y Fd(visit)23 b(curren)n(t)h(\014le)g(in)f(other)i(windo)n(w)516
b Fa(o)-450 2413 y Fd(visit)23 b(curren)n(t)h(\014le)g(in)f(other)i
(frame)573 b Fa(w)-450 2493 y Fd(displa)n(y)24 b(curren)n(t)g(\014le)
955 b Fa(C-u)36 b(o)-450 2573 y Fd(create)25 b(a)f(new)g(sub)r
(directory)734 b Fa(+)-450 2652 y Fd(compare)23 b(\014le)h(at)g(p)r
(oin)n(t)h(with)e(the)i(one)f(at)g(mark)206 b Fa(=)-450
2843 y Fb(Marking)38 b(and)f(Unmarking)i(Files)-450 2999
y Fd(mark)22 b(a)i(\014le)g(or)f(sub)r(directory)h(for)f(later)h
(commands)81 b Fa(m)-450 3079 y Fd(unmark)23 b(a)h(\014le)f(or)h(all)f
(\014les)g(of)h(a)f(sub)r(directory)248 b Fa(u)-450 3159
y Fd(unmark)23 b(all)g(mark)n(ed)g(\014les)g(in)h(a)f(bu\013er)460
b Fa(M-delete)-450 3238 y Fd(mark)22 b(\014les)i(with)g(a)f(giv)n(en)i
(extension)515 b Fa(*)36 b(.)-450 3318 y Fd(mark)22 b(all)h
(directories)932 b Fa(*)36 b(/)-450 3398 y Fd(mark)22
b(all)h(symlinks)981 b Fa(*)36 b(@)-450 3477 y Fd(mark)22
b(all)h(executables)901 b Fa(*)36 b(*)-450 3557 y Fd(in)n(v)n(ert)24
b(marking)1074 b Fa(*)36 b(t)-450 3637 y Fd(mark)22 b(all)h(\014les)h
(in)f(the)i(curren)n(t)f(sub)r(dir)464 b Fa(*)36 b(s)-450
3717 y Fd(mark)22 b(\014le)i(names)f(matc)n(hing)h(a)g(regular)f
(expression)96 b Fa(*)36 b(\045)-450 3796 y Fd(c)n(hange)25
b(the)g(marks)d(to)i(a)g(di\013eren)n(t)g(c)n(haracter)259
b Fa(*)36 b(c)-450 3876 y Fd(mark)22 b(\014les)i(for)f(whic)n(h)h
(Elisp)e(expression)i(returns)g(t)108 b Fa(*)36 b(\()f
Fc(\(D)n(X\))-450 4071 y Fb(Getting)i(Help)-450 4227
y Fd(dired)23 b(help)1221 b Fa(h)-450 4306 y Fd(dired)23
b(summary)f(\(short)i(help\))g(and)g(error)f(log)253
b Fa(?)1866 -364 y Fb(Commands)38 b(on)h(Files)e(Mark)m(ed)h(or)g(Sp)s
(eci\014ed)1866 -269 y(b)m(y)g(the)f(Pre\014x)1866 -152
y Fd(cop)n(y)25 b(\014le\(s\))1193 b Fa(C)1866 -72 y
Fd(rename)23 b(a)h(\014le)g(or)f(mo)n(v)n(e)g(\014les)h(to)g(another)h
(directory)79 b Fa(R)1866 7 y Fd(c)n(hange)25 b(o)n(wnership)f(of)f
(\014le\(s\))713 b Fa(O)1866 87 y Fd(c)n(hange)25 b(the)g(group)f(of)f
(the)i(\014le\(s\))601 b Fa(G)1866 167 y Fd(c)n(hange)25
b(mo)r(de)e(of)h(\014le\(s\))854 b Fa(M)1866 247 y Fd(prin)n(t)24
b(\014le\(s\))1183 b Fa(P)1866 326 y Fd(con)n(v)n(ert)25
b(\014lename\(s\))f(to)g(lo)n(w)n(er)g(case)524 b Fa(\045)36
b(l)1866 406 y Fd(con)n(v)n(ert)25 b(\014lename\(s\))f(to)g(upp)r(er)g
(case)507 b Fa(\045)36 b(u)1866 486 y Fd(delete)25 b(mark)n(ed)e(\(as)h
(opp)r(osed)h(to)f(\015agged\))i(\014les)217 b Fa(X)1866
565 y Fd(uuenco)r(de)26 b(or)d(uudeco)r(de)j(\014le\(s\))648
b Fa(U)1866 645 y Fd(compress)23 b(or)g(uncompress)g(\014le\(s\))588
b Fa(Z)1866 725 y Fd(run)23 b(info)h(on)g(\014le)1073
b Fa(I)36 b Fc(\(D)n(X\))1866 804 y Fd(mak)n(e)23 b(sym)n(b)r(olic)g
(link\(s\))855 b Fa(S)1866 884 y Fd(mak)n(e)23 b(relativ)n(e)h(sym)n(b)
r(olic)f(links)658 b Fa(Y)1866 964 y Fd(mak)n(e)23 b(hard)h(link\(s\))
983 b Fa(H)1866 1044 y Fd(searc)n(h)24 b(\014les)g(for)f(a)g(regular)h
(expression)452 b Fa(A)1866 1123 y Fd(query)24 b(replace)g(regular)g
(expression)539 b Fa(Q)1866 1203 y Fd(b)n(yte-compile)24
b(\014les)996 b Fa(B)1866 1283 y Fd(load)24 b(\014les)1259
b Fa(L)1866 1362 y Fd(shell)23 b(command)g(on)h(\014le\(s\))777
b Fa(!)1866 1508 y Fb(Flagging)38 b(Files)g(for)g(Deletion)1866
1609 y Fc(Unmark)26 b(commands)e(remo)n(v)n(e)h(delete)j(\015ags)1866
1705 y Fd(\015ag)c(\014le)g(for)f(deletion)933 b Fa(d)1866
1785 y Fd(bac)n(kup)25 b(and)f(remo)n(v)n(e)f(deletion)i(\015ag)533
b Fa(delete)1866 1864 y Fd(\015ag)24 b(all)f(bac)n(kup)i(\014les)f
(\(\014le)g(names)f(ending)h(in)g(~\))185 b Fa(~)1866
1944 y Fd(\015ag)24 b(all)f(auto-sa)n(v)n(e)i(\014les)869
b Fa(#)1866 2024 y Fd(\015ag)24 b(v)l(arious)g(in)n(termediate)g
(\014les)627 b Fa(&)1866 2103 y Fd(\015ag)21 b(n)n(umeric)d(bac)n(kups)
j(\(ending)h(in)d(.~1~,)i(.~2~,)f(etc.\))72 b Fa(.)1866
2183 y Fd(execute)26 b(the)e(deletions)h(requested)g(\(\015agged)g
(\014les\))134 b Fa(x)1866 2263 y Fd(\015ag)24 b(\014les)g(matc)n(hing)
g(a)f(regular)h(expression)333 b Fa(\045)36 b(d)1866
2405 y Fb(Mo)s(difying)i(the)f(Dired)g(Bu\013er)1866
2522 y Fd(insert)23 b(a)h(sub)r(directory)h(in)n(to)f(this)f(bu\013er)
408 b Fa(i)1866 2602 y Fd(remo)n(v)n(e)23 b(mark)n(ed)g(\014les)h(from)
d(the)k(listing)419 b Fa(k)1866 2681 y Fd(remo)n(v)n(e)23
b(a)h(sub)r(dir)f(listing)823 b Fa(C-u)36 b(k)1866 2761
y Fd(re-read)23 b(all)g(directories)h(\(retains)g(all)f(marks\))279
b Fa(g)1866 2841 y Fd(toggle)25 b(sorting)e(of)h(curren)n(t)g(sub)r
(dir)f(b)n(y)h(name/date)113 b Fa(s)1866 2920 y Fd(edit)24
b(ls)f(switc)n(hes)1065 b Fa(C-u)36 b(s)1866 3000 y Fd(reco)n(v)n(er)24
b(marks,)e(hidden)i(lines,)f(and)h(suc)n(h)375 b Fa(C-_)1866
3080 y Fd(hide)24 b(all)f(sub)r(directories)853 b Fa(M-$)1866
3160 y Fd(hide)24 b(or)f(unhide)i(sub)r(directory)675
b Fa($)1866 3302 y Fb(Regular)37 b(Expression)i(Commands)1866
3419 y Fd(mark)22 b(\014lenames)i(matc)n(hing)f(a)h(regular)f
(expression)120 b Fa(\045)36 b(m)1866 3498 y Fd(cop)n(y)25
b(mark)n(ed)e(\014les)g(b)n(y)h(regexp)674 b Fa(\045)36
b(C)1866 3578 y Fd(rename)23 b(mark)n(ed)g(\014les)h(b)n(y)g(regexp)591
b Fa(\045)36 b(R)1866 3658 y Fd(hardlink)1273 b Fa(\045)36
b(H)1866 3737 y Fd(symlink)1289 b Fa(\045)36 b(S)1866
3817 y Fd(symlink,)22 b(with)h(relativ)n(e)h(paths)668
b Fa(\045)36 b(Y)1866 3897 y Fd(mark)22 b(for)h(deletion)998
b Fa(\045)36 b(d)1866 4030 y Fb(Dired)h(and)g(Find)1866
4147 y Fd(dired)23 b(\014le\(s\))i(whose)f(name)f(matc)n(hes)h(a)g
(pattern)39 b Fa(M-x)d(find-name-dired)1866 4227 y Fd(dired)23
b(\014le\(s\))i(that)g(con)n(tain)g(pattern)365 b Fa(M-x)36
b(find-grep-dired)1866 4306 y Fd(dired)23 b(\014le\(s\))i(based)f(on)g
Fa(find)h Fd(output)347 b Fa(M-x)36 b(find-dired)1590
5603 y Fd(1)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF

View file

@ -1,396 +0,0 @@
% Reference Card for Dired
% Copyright (C) 2000. 2001 Free Software Foundation, Inc.
% This file is part of GNU Emacs.
% GNU Emacs is free software; you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation; either version 2, or (at your option)
% any later version.
% GNU Emacs is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
% You should have received a copy of the GNU General Public License
% along with GNU Emacs; see the file COPYING. If not, write to
% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
% Boston, MA 02111-1307, USA.
% This file can be printed with 1, 2, or 3 columns per page (see below).
% Specify how many you want here. Nothing else needs to be changed.
%**start of header
\newcount\columnsperpage
\columnsperpage=2
% This file is intended to be processed by plain TeX (TeX82).
% The reference card looks OK with 2 columns per page, portrait mode.
% I haven't tried it with 3 columns per page.
% This is a bit of a dirty hack on the GNU Emacs reference card
% to produce a Dired reference card instead.
% I (Evgeny Roubinchtein, eroubinc@u.washington.edu) put this together
% because I wanted a Dired reference card,
% but couldn't find anything on the 'net.
% Based mostly off Dired's describe-mode.
\def\versionnumber{0.1}
\def\year{2000}
\def\version{May \year\ v\versionnumber}
\def\shortcopyrightnotice{\vskip 1ex plus 2 fill
\centerline{\small \copyright\ \year\ Free Software Foundation, Inc.
Permissions on back. v\versionnumber}}
\def\copyrightnotice{
\vskip 1ex plus 2 fill\begingroup\small
\centerline{Copyright \copyright\ \year\ Free Software Foundation, Inc.}
\centerline{designed by Stephen Gildea, \version}
\centerline{for GNU Emacs version 19 on Unix systems}
\centerline{Updated for Dired in May 2000 by Evgeny Roubinchtein}
Permission is granted to make and distribute copies of
this card provided the copyright notice and this permission notice
are preserved on all copies.
For copies of the GNU Emacs manual, write to the Free Software
Foundation, Inc., 675 Massachusetts Ave, Cambridge MA 02139.
\endgroup}
% make \bye not \outer so that the \def\bye in the \else clause below
% can be scanned without complaint.
\def\bye{\par\vfill\supereject\end}
\newdimen\intercolumnskip %horizontal space between columns
\newbox\columna %boxes to hold columns already built
\newbox\columnb
\def\ncolumns{\the\columnsperpage}
\message{[\ncolumns\space
column\if 1\ncolumns\else s\fi\space per page]}
\def\scaledmag#1{ scaled \magstep #1}
% This multi-way format was designed by Stephen Gildea October 1986.
% Note that the 1-column format is fontfamily-independent.
\if 1\ncolumns %one-column format uses normal size
\hsize 4in
\vsize 10in
\voffset -.7in
\font\titlefont=\fontname\tenbf \scaledmag3
\font\headingfont=\fontname\tenbf \scaledmag2
\font\smallfont=\fontname\sevenrm
\font\smallsy=\fontname\sevensy
\footline{\hss\folio}
\def\makefootline{\baselineskip10pt\hsize6.5in\line{\the\footline}}
\else %2 or 3 columns uses prereduced size
\hsize 3.4in
\vsize 7.95in
\hoffset -.75in
\voffset -.745in
\font\titlefont=cmbx10 \scaledmag2
\font\headingfont=cmbx10 \scaledmag1
\font\smallfont=cmr6
\font\smallsy=cmsy6
\font\eightrm=cmr8
\font\eightbf=cmbx8
\font\eightit=cmti8
\font\eighttt=cmtt8
\font\eightmi=cmmi8
\font\eightsy=cmsy8
\textfont0=\eightrm
\textfont1=\eightmi
\textfont2=\eightsy
\def\rm{\eightrm}
\def\bf{\eightbf}
\def\it{\eightit}
\def\tt{\eighttt}
\normalbaselineskip=.8\normalbaselineskip
\normallineskip=.8\normallineskip
\normallineskiplimit=.8\normallineskiplimit
\normalbaselines\rm %make definitions take effect
\if 2\ncolumns
\let\maxcolumn=b
\footline{\hss\rm\folio\hss}
\def\makefootline{\vskip 2in \hsize=6.86in\line{\the\footline}}
\else \if 3\ncolumns
\let\maxcolumn=c
\nopagenumbers
\else
\errhelp{You must set \columnsperpage equal to 1, 2, or 3.}
\errmessage{Illegal number of columns per page}
\fi\fi
\intercolumnskip=.46in
\def\abc{a}
\output={% %see The TeXbook page 257
% This next line is useful when designing the layout.
%\immediate\write16{Column \folio\abc\space starts with \firstmark}
\if \maxcolumn\abc \multicolumnformat \global\def\abc{a}
\else\if a\abc
\global\setbox\columna\columnbox \global\def\abc{b}
%% in case we never use \columnb (two-column mode)
\global\setbox\columnb\hbox to -\intercolumnskip{}
\else
\global\setbox\columnb\columnbox \global\def\abc{c}\fi\fi}
\def\multicolumnformat{\shipout\vbox{\makeheadline
\hbox{\box\columna\hskip\intercolumnskip
\box\columnb\hskip\intercolumnskip\columnbox}
\makefootline}\advancepageno}
\def\columnbox{\leftline{\pagebody}}
\def\bye{\par\vfill\supereject
\if a\abc \else\null\vfill\eject\fi
\if a\abc \else\null\vfill\eject\fi
\end}
\fi
% we won't be using math mode much, so redefine some of the characters
% we might want to talk about
\catcode`\^=12
\catcode`\_=12
\chardef\\=`\\
\chardef\{=`\{
\chardef\}=`\}
\hyphenation{mini-buf-fer}
\hyphenation{de-le-tion}
\parindent 0pt
\parskip 1ex plus .5ex minus .5ex
\def\small{\smallfont\textfont2=\smallsy\baselineskip=.8\baselineskip}
% newcolumn - force a new column. Use sparingly, probably only for
% the first column of a page, which should have a title anyway.
\outer\def\newcolumn{\vfill\eject}
% title - page title. Argument is title text.
\outer\def\title#1{{\titlefont\centerline{#1}}\vskip 1ex plus .5ex}
% section - new major section. Argument is section name.
\outer\def\section#1{\par\filbreak
\vskip 3ex plus 2ex minus 2ex {\headingfont #1}\mark{#1}%
\vskip 2ex plus 1ex minus 1.5ex}
\newdimen\keyindent
% beginindentedkeys...endindentedkeys - key definitions will be
% indented, but running text, typically used as headings to group
% definitions, will not.
\def\beginindentedkeys{\keyindent=1em}
\def\endindentedkeys{\keyindent=0em}
\endindentedkeys
% paralign - begin paragraph containing an alignment.
% If an \halign is entered while in vertical mode, a parskip is never
% inserted. Using \paralign instead of \halign solves this problem.
\def\paralign{\vskip\parskip\halign}
% \<...> - surrounds a variable name in a code example
\def\<#1>{{\it #1\/}}
% kbd - argument is characters typed literally. Like the Texinfo command.
\def\kbd#1{{\tt#1}\null} %\null so not an abbrev even if period follows
% beginexample...endexample - surrounds literal text, such a code example.
% typeset in a typewriter font with line breaks preserved
\def\beginexample{\par\leavevmode\begingroup
\obeylines\obeyspaces\parskip0pt\tt}
{\obeyspaces\global\let =\ }
\def\endexample{\endgroup}
% key - definition of a key.
% \key{description of key}{key-name}
% prints the description left-justified, and the key-name in a \kbd
% form near the right margin.
\def\key#1#2{\leavevmode\hbox to \hsize{\vtop
{\hsize=.75\hsize\rightskip=1em
\hskip\keyindent\relax#1}\kbd{#2}\hfil}}
\newbox\metaxbox
\setbox\metaxbox\hbox{\kbd{M-x }}
\newdimen\metaxwidth
\metaxwidth=\wd\metaxbox
% metax - definition of a M-x command.
% \metax{description of command}{M-x command-name}
% Tries to justify the beginning of the command name at the same place
% as \key starts the key name. (The "M-x " sticks out to the left.)
\def\metax#1#2{\leavevmode\hbox to \hsize{\hbox to .75\hsize
{\hskip\keyindent\relax#1\hfil}%
\hskip -\metaxwidth minus 1fil
\kbd{#2}\hfil}}
% threecol - like "key" but with two key names.
% for example, one for doing the action backward, and one for forward.
\def\threecol#1#2#3{\hskip\keyindent\relax#1\hfil&\kbd{#2}\hfil\quad
&\kbd{#3}\hfil\quad\cr}
% I cannot figure out how to make all dired-x
% commands fit on a page in two-column format
\def\dx{{\bf (DX)}}
%**end of header
\title{Dired Reference Card}
\centerline{(based on Dired in GNU Emacs 21.x)}
\centerline{Commands marked with \dx{} require dired-x}
% trim this down to fit everything on one page
% \section{General}
% In dired, you can edit a list of the files in a directory (and optionally
% its subdirectories in the `ls -lR' format).
% Editing a directory means that you can visit, rename, copy, compress,
% load, byte-compile files. You can change files' attributes, run shell
% commands on files, or insert subdirectories into the edit buffer. You can
% "flag" files for deletion or "mark" files for later commands, either one
% file at a time or by all files matching certain criteria (e.g., files that
% match a certain regexp).
% You move throughout the buffer using the usual cursor motion commands.
% Letters no longer insert themselves, but execute commands instead. The
% digits (0-9) are prefix arguments.
% Most commands operate either on all marked files or on the current file if
% no files are marked. Use a numeric prefix argument to operate on the next
% ARG files (or previous ARG if ARG $<$ 0). Use the prefix argument `1' to
% operate on the current file only. Prefix arguments override marks. Commands
% which run a sub-process on a group of files will display a list of files
% for which the sub-process failed. Typing y will try to tell
% you what went wrong.
% When editing several directories in one buffer, each directory acts as a
% page, so C-x [ and C-x ] can be used to move between directories.
\section{Entering and Exiting Dired}
\key{run dired}{C-x d}
\key{dired the directory of the file you are editing}{C-x C-j \dx}
\key{quit dired}{q}
\section{Motion Commands}
\key{move up to previous line}{p}
\key{move down to next line}{n}
\key{move up to previous directory line}{<}
\key{move down to next directory line}{>}
\key{move to next marked file}{M-\}}
\key{move to previous marked file}{M-\{}
\key{move up to previous subdirectory}{M-C-p}
\key{move down to next subdirectory}{M-C-n}
\key{move to parent directory}{^}
\key{move to first child subdirectory}{M-C-d}
\section{Mouse Commands}
\metax{visit file}{Mouse_Button_2}
\metax{popup menu}{Control-Mouse_Button_3}
\section{Immediate Actions on Files}
\key{visit current file}{f}
\key{view current file}{v}
\key{visit current file in other window}{o}
\key{visit current file in other frame}{w}
\key{display current file}{C-u o}
\key{create a new subdirectory}{+}
\key{compare file at point with the one at mark}{=}
\section{Marking and Unmarking Files}
\key{mark a file or subdirectory for later commands}{m}
\key{unmark a file or all files of a subdirectory}{u}
\key{unmark all marked files in a buffer}{M-delete}
\key{mark files with a given extension}{* .}
\key{mark all directories}{* /}
\key{mark all symlinks}{* @}
\key{mark all executables}{* *}
\key{invert marking}{* t}
\key{mark all files in the current subdir}{* s}
\key{mark file names matching a regular expression}{* \%}
\key{change the marks to a different character}{* c}
\key{mark files for which Elisp expression returns t}{* ( \dx}
\section{Getting Help}
\key{dired help}{h}
\key{dired summary (short help) and error log}{?}
\section{Commands on Files Marked or Specified by the Prefix}
\key{copy file(s)}{C}
\key{rename a file or move files to another directory}{R}
\key{change ownership of file(s)}{O}
\key{change the group of the file(s)}{G}
\key{change mode of file(s)}{M}
\key{print file(s)}{P}
\key{convert filename(s) to lower case}{\% l}
\key{convert filename(s) to upper case}{\% u}
\key{delete marked (as opposed to flagged) files}{X}
\key{uuencode or uudecode file(s)}{U}
\key{compress or uncompress file(s)}{Z}
\key{run info on file}{I \dx}
\key{make symbolic link(s)}{S}
\key{make relative symbolic links}{Y}
\key{make hard link(s)}{H}
\key{search files for a regular expression}{A}
\key{query replace regular expression}{Q}
\key{byte-compile files}{B}
\key{load files}{L}
\key{shell command on file(s)}{!}
\section{Flagging Files for Deletion}
\leftline{\bf Unmark commands remove delete flags}
\key{flag file for deletion}{d}
\key{backup and remove deletion flag}{delete}
\key{flag all backup files (file names ending in \~{})}{\~{}}
\key{flag all auto-save files}{\#}
\key{flag various intermediate files}{\&}
\key{flag numeric backups (ending in .\~{}1\~{}, .\~{}2\~{}, etc.)}{.}
\key{execute the deletions requested (flagged files)}{x}
\key{flag files matching a regular expression}{\% d}
\section{Modifying the Dired Buffer}
\key{insert a subdirectory into this buffer}{i}
\key{remove marked files from the listing}{k}
\key{remove a subdir listing}{C-u k}
\key{re-read all directories (retains all marks)}{g}
\key{toggle sorting of current subdir by name/date}{s}
\key{edit ls switches}{C-u s}
\key{recover marks, hidden lines, and such}{C-_}
\key{hide all subdirectories}{M-\$}
\key{hide or unhide subdirectory}{\$}
\section{Regular Expression Commands}
\key{mark filenames matching a regular expression}{\% m}
\key{copy marked files by regexp}{\% C}
\key{rename marked files by regexp}{\% R}
\key{hardlink}{\% H}
\key{symlink}{\% S}
\key{symlink, with relative paths}{\% Y}
\key{mark for deletion}{\% d}
\section{Dired and Find}
\metax{dired file(s) whose name matches a pattern}{M-x find-name-dired}
\metax{dired file(s) that contain pattern}{M-x find-grep-dired}
\metax{dired file(s) based on \kbd{find} output}{M-x find-dired}
%\copyrightnotice
\bye

View file

@ -1,207 +0,0 @@
Path: mit-amt!mit-eddie!think!harvard!seismo!gatech!akgua!whuxlm!whuxl!houxm!ihnp4!stolaf!umn-cs!herndon
From: herndon@umn-cs.UUCP
Newsgroups: net.sources
Subject: GNU Echo, Release 1
Message-ID: <1600001@umn-cs.UUCP>
Date: 28 Oct 85 18:23:00 GMT
/* Written 12:22 pm Oct 28, 1985 by umn-cs!herndon in umn-cs:net.jokes */
/* ---------- "GNU Echo, Release 1" ---------- */
GNUecho(1) UNIX Programmer's Manual GNUecho(1)
NAME
echo - echo arguments
SYNOPSIS
echo [ options ] ...
DESCRIPTION
_^HE_^Hc_^Hh_^Ho writes its arguments separated by blanks and terminated
by a newline on the standard output. Options to filter and
redirect the output are as follows:
-2 generate rhyming couplets from keywords
-3 generate Haiku verse from keywords
-5 generate limerick from keywords
-a convert ASCII to ASCII
-A disambiguate sentence structure
-b generate bureaucratese equivalent (see -x)
-B issue equivalent C code with bugs fixed
-c simplify/calculate arithmetic expression(s)
-C remove copyright notice(s)
-d define new echo switch map
-D delete all ownership information from system files
-e evaluate lisp expression(s)
-E convert ASCII to Navajo
-f read input from file
-F transliterate to french
-g generate pseudo-revolutionary marxist catch-phrases
-G prepend GNU manifesto
-h halt system (reboot suppressed on Suns, Apollos, and
VAXen, not supported on NOS-2)
-i emulate IBM OS/VU (recursive universes not supported)
-I emulate IBM VTOS 3.7.6 (chronosynclastic infundibulae
supported with restrictions documented in IBM VTOS
Printed 10/28/85 18 January 1983 1
GNUecho(1) UNIX Programmer's Manual GNUecho(1)
Reference Manual rev 3.2.6)
-J generate junk mail
-j justify text (see -b option)
-k output "echo" software tools
-K delete privileged accounts
-l generate legalese equivalent
-L load echo modules
-M generate mail
-N send output to all reachable networks (usable with -J,
-K, -h options)
-n do not add newline to the output
-o generate obscene text
-O clean up dirty language
-p decrypt and print /etc/passwd
-P port echo to all reachable networks
-P1 oolcay itay
-q query standard input for arguments
-r read alternate ".echo" file on start up
-R change root password to "RMS"
-s suspend operating system during output (Sun and VAX BSD
4.2 only)
-S translate to swahili
-T emulate TCP/IP handler
-t issue troff output
-u issue unix philosophy essay
-v generate reverberating echo
-V print debugging information
Printed 10/28/85 18 January 1983 2
GNUecho(1) UNIX Programmer's Manual GNUecho(1)
-x decrypt DES format messages (NSA secret algorithm CX
3.8, not distributed outside continental US)
_^HE_^Hc_^Hh_^Ho is useful for producing diagnostics in shell programs
and for writing constant data on pipes. To send diagnostics
to the standard error file, do `echo ... 1>&2'.
AUTHOR
Richard M. Stallman
Printed 10/28/85 18 January 1983 3

View file

@ -1,986 +0,0 @@
File: edt-user.doc --- EDT Emulation User Instructions
For GNU Emacs 19
Copyright (C) 1986, 1992, 1994, 1995, 1999, 2000 Free Software Foundation, Inc.
Author: Kevin Gallagher <kevingal@onramp.net>
Maintainer: Kevin Gallagher <kevingal@onramp.net>
Keywords: emulations
This file is part of GNU Emacs.
GNU Emacs is free software; you can redistribute it and/or modify it under the
terms of the GNU General Public License as published by the Free Software
Foundation; either version 2, or (at your option) any later version.
GNU Emacs is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
GNU Emacs; see the file COPYING. If not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
============================================================================
I. OVERVIEW:
This is Version 4.0 of the EDT Emulation for Emacs 19 and above.
It comes with special functions which replicate nearly all of EDT's
keypad mode behavior. It sets up default keypad and function key
bindings which closely match those found in EDT. Support is
provided so that users may reconfigure most keypad and function key
bindings to their own liking.
NOTE: Version 4.0 contains several enhancements. See the
Enhancements section below for the details.
Quick Start:
To start the EDT Emulation, first start Emacs and then enter
M-x edt-emulation-on
to begin the emulation. After initialization is complete, the
following message will appear below the status line informing you
that the emulation has been enabled: "Default EDT keymap active".
You can have the EDT Emulation start up automatically, each time
you initiate a GNU Emacs session, by adding the following line to
your .emacs file:
(add-hook term-setup-hook 'edt-emulation-on)
IMPORTANT: Be sure to read the rest of this file. It contains very
useful information on how the EDT Emulation behaves and how
to customize it to your liking.
The EDT emulation consists of the following files:
edt-user.doc - User Instructions and Sample Customization File
edt.el - EDT Emulation Functions and Default Configuration
edt-lk201.el - Built-in support for DEC LK-201 Keyboards
edt-vt100.el - Built-in support for DEC VT-100 (and above) terminals
edt-pc.el - Built-in support for PC 101 Keyboards under MS-DOS
edt-mapper.el - Create an EDT LK-201 Map File for Keyboards Without
Built-in Support
Enhancements:
Version 4.0 contains the following enhancements:
1. Scroll margins at the top and bottom of the window are now
supported. (The design was copied from tpu-extras.el.) By
default, this feature is enabled with the top margin set to
10% of the window and the bottom margin set to 15% of the
window. To change these settings, you can invoke the function
edt-set-scroll-margins in your .emacs file. For example, the
following line
(edt-set-scroll-margins "20%" "25%")
sets the top margin to 20% of the window and the bottom margin
to 25% of the window. To disable this feature, set each
margin to 0%. You can also invoke edt-set-scroll-margins
interactively while EDT Emulation is active to change the
settings for that session.
NOTE: Another way to set the scroll margins is to use the
Emacs customization feature (not available in Emacs 19) to set
the following two variables directly:
edt-top-scroll-margin and edt-bottom-scroll-margin
Enter the Emacs `customize' command. First select the Editing
group and then select the Emulations group. Finally, select
the Edt group and follow the directions.
2. The SUBS command is now supported and bound to GOLD-Enter by
default. (This design was copied from tpu-edt.el.) Note, in
earlier versions of EDT Emulation, GOLD-Enter was assigned to
the Emacs function `query-replace'. The binding of
`query-replace' has been moved to GOLD-/. If you prefer to
restore `query-replace' to GOLD-Enter, then use an EDT user
customization file, edt-user.el, to do this. See edt-user.doc
for details.
3. EDT Emulation now also works in XEmacs, including the
highlighting of selected text.
4. If you access a workstation using an X Server, observe that
the initialization file generated by edt-mapper.el will now
contain the name of the X Server vendor. This is a
convenience for those who have access to their Unix account
from more than one type of X Server. Since different X
Servers typically require different EDT emulation
initialization files, edt-mapper.el will now generate these
different initialization files and save them with different
names. Then, the correct initialization file for the
particular X server in use is loaded correctly automatically.
5. Also, edt-mapper.el is now capable of binding an ASCII key
sequence, providing the ASCII key sequence prefix is already
known by Emacs to be a prefix. As a result of providing this
support, some terminal/keyboard/window system configurations,
which don't have a complete set of sensible function key
bindings built into Emacs in `function-key-map', can still be
configured for use with EDT Emulation. (Note: In a few rare
circumstances this does not work properly. In particular, it
does not work if a subset of the leading ASCII characters in a
key sequence are recognized by Emacs as having an existing
binding. For example, if the keypad 7 (KP-7) key generates
the sequence \"<ESC>Ow\" and \"<ESC>O\" is already bound to a
function, pressing KP-7 when told to do so by edt-mapper.el
will result in edt-mapper.el incorrectly mapping \"<ESC>O\" to
KP-7 and \"w\" to KP-8. If something like this happens to
you, it is probably a bug in the support for your keyboard
within Emacs OR a bug in the Unix termcap/terminfo support for
your terminal OR a bug in the terminal emulation software you
are using.)
6. The edt-quit function (bound to GOLD-q by default) has been
modified to warn the user when file-related buffer
modifications exist. It now cautions the user that those
modifications will be lost if the user quits without saving
those buffers.
Goals:
1. Emulate EDT Keypad Mode commands closely so that current EDT users
will find that it easy and comfortable to use GNU Emacs with a
small learning curve;
2. Make it easy for a user to customize EDT emulation key bindings
without knowing much about Emacs Lisp;
3. Make it easy to switch between the original EDT default bindings
and the user's customized EDT bindings, without having to exit
Emacs.
4. Provide support for some TPU/EVE functions not supported in EDT.
5. Provide an easy way to restore ALL original Emacs key bindings,
just as they existed before the EDT emulation was first invoked.
6. Support GNU Emacs 19 and higher. (GNU Emacs 18 and below is no
longer supported.) XEmacs 19, and above, is also supported.
7. Supports highlighting of marked text within the EDT emulation on
all platforms on which Emacs supports highlighting of marked text.
8. Handle terminal configuration interactively for most terminal
configurations, when the emulation is invoked for the first time.
9. Support a PC AT keyboard under MS-DOS.
II. TERMINALS/KEYBOARDS SUPPORTED:
Keyboards used under a Window System are supported via the edt-mapper function.
The first time you invoke the emulation under a window system, the edt-mapper
function is run automatically and the user is prompted to identify which keys
the emulation is to use for the standard keypad and function keys EDT expects
(e.g., PF1, PF2, KP0, KP1, F1, F2, etc.). This configuration is saved to disk
read each time the emulation is invoked.
In character oriented connections not running a window manager, built-in
support for the following terminals/keyboards is provided:
(1) DEC VT-100 series and higher. This includes well behaved VT clones and
emulators. If you are using a VT series terminal, be sure that the term
environment variable is set properly before invoking emacs.
(2) PC AT keyboard under MS-DOS.
Be sure to read the SPECIAL NOTES FOR SOME PLATFORMS sections to see if those
notes apply to you.
III. STARTING THE EDT EMULATION:
Start up GNU Emacs and enter "M-x edt-emulation-on" to begin the emulation.
After initialization is complete, the following message will appear below the
status line informing you that the emulation has been enabled:
Default EDT keymap active
You can have the EDT Emulation start up automatically, each time you initiate
a GNU Emacs session, by adding the following line to your .emacs file:
(add-hook term-setup-hook 'edt-emulation-on)
A reference sheet is included (later on) listing the default EDT Emulation key
bindings. This sheet is also accessible on line from within Emacs by pressing
PF2, GOLD H, or HELP (when in the EDT Default Mode).
It is easy to customize key bindings in the EDT Emulation. (See CUSTOMIZING
section, below.) Customizations are placed in a file called edt-user.el. (A
sample edt-user.el file can be found in the CUSTOMIZING section.) If
edt-user.el is found in your GNU Emacs load path during EDT Emulation
initialization, then the following message will appear below the status line
indicating that the emulation has been enabled, enhanced by your own
customizations:
User EDT custom keymap active
Once enabled, it is easy to switch back and forth between your customized EDT
Emulation key bindings and the default EDT Emulation key bindings. (See the
sample edt-user.el file below. Look at the binding to GOLD Z.) It is also
easy to turn off the emulation (via the command edt-emulation-off). Doing so
completely restores the original key bindings in effect just prior to invoking
the emulation.
Emacs binds keys to ASCII control characters and so does the real EDT. Where
EDT key bindings and GNU Emacs key bindings conflict, the default GNU Emacs key
bindings are retained by the EDT emulation by default. If you are a diehard
EDT user you may not like this. The CUSTOMIZING section explains how to change
this so that the EDT bindings to ASCII control characters override the default
Emacs bindings.
IV. SPECIAL NOTES FOR SOME PLATFORMS:
Sun Workstations running X:
Some earlier Sun keyboards do not have arrow keys separate from the keypad
keys. It is difficult to emulate the full EDT keypad and still retain use
of the arrow keys on such keyboards.
The Sun Type 5 and other more recent Sun keyboards, however, do have
separate arrow keys. This makes them candidates for setting up a
reasonable EDT keypad emulation.
Depending upon the configuration of the version of X installed on your
system, you may find the default X keynames for the keypad keys don't
permit Emacs to interpret some or all the keypad keys as something other
than arrow keys, numeric keys, Home, PgUP, etc. Both Sun and HP have been
particularly guilty of making bizarre keysym assignments to the keypad
keys.
In most cases, the X Windows command, xmodmap, can be used to correct the
problem. Here's a sample .xmodmaprc file which corrects this problem on
one Sun workstation configuration using an older SunOS release configured
with a Sun Type 5 keyboard:
! File: .xmodmaprc
!
! Set up Sun Type 5 keypad for use with the GNU Emacs EDT Emulation
!
keycode 53 = KP_Divide
keycode 54 = KP_Multiply
keycode 57 = KP_Decimal
keycode 75 = KP_7
keycode 76 = KP_8
keycode 77 = KP_9
keycode 78 = KP_Subtract
keycode 97 = KP_Enter
keycode 98 = KP_4
keycode 99 = KP_5
keycode 100 = KP_6
keycode 101 = KP_0
keycode 105 = F24
keycode 119 = KP_1
keycode 120 = KP_2
keycode 121 = KP_3
keycode 132 = KP_Add
If edt-mapper.el does not recognize your keypad keys as unique keys, use
the command
xmodmap -pke
to get a listing of the actual key codes and the keysyms mapped to them
and then generate you own custom .xmodmaprc similar to the one above.
Next, feed .xmodmaprc to the xmodmap command and all the Sun Type 5 keypad
keys will now be configurable for the emulation of an LK-201 keypad (less
the comma key). In this example, the line
keycode 105 = F24
changes the X Windows name of the keypad NumLock key to be known
internally as the F24 key. Doing so permits it to be configured to behave
as the PF1 (Gold) key.
The side effect of this change is that you will no longer have a NumLock
key. If you are using other software under X which requires a NumLock
key, then examine your keyboard and look for one you don't use and
redefine it to be the NumLock key. Basically, you need to clear the
NumLock key from being assigned as a modifier, assign it to the key of
your choice, and then add it back as a modifier. (See the "General Notes
on Using NumLock for the PF1 Key on a Unix System" section below for
further help on how to do this.)
PC users running MS-DOS:
By default, F1 is configured to emulate the PF1 (GOLD) key. But NumLock
can be used instead if you load a freeware TSR distributed with MS-Kermit,
call gold.com. This was once distributed in a file called gold22.zip and
came with the source code as well as a loadable binary image. (See
edt-pc.el in the Emacs lisp/emulation directory for more information.)
PC users running GNU/Linux:
The default X server configuration varies from distribution to
distribution and release to release of GNU/Linux. If your system fails to
recognize the keypad keys as distinct keys, change the NumLock state,
turning it on or off, as the case may be, then try again. If this doesn't
solve your problem, you may have to modify the X keysym mappings with
xmodmap.
On one distribution on an Intel PC, the following .xmodmaprc set things up
nicely.
! File: .xmodmaprc
!
! Set up PC keypad under GNU/Linux for the GNU Emacs EDT Emulation
!
clear mod2
keycode 77 = F12
keycode 96 = Num_Lock Pointer_EnableKeys
add mod2 = Num_Lock
In this example, after feeding the file to the xmodmap command, the PC
NumLock keypad key will be configurable for the emulation of the PF1 key.
The PC keypad can now emulate an LK-201 keypad (less the comma key), the
standard keyboard supplied with DEC terminals VT-200 and above. This
.xmodmaprc file switches the role of the F12 and NumLock keys. It has
been tested on RedHat GNU/Linux 5.2. Other versions of GNU/Linux may
require different keycodes. (See the "General Notes on Using NumLock for
the PF1 Key on a Unix System" section below for further help on how to do
this.)
NOTE: Remember, it may be necessary to have NumLock in one position (ON)
or the other (OFF) for the PC keypad to emulate the LK-201 keypad
properly.
General Notes on Using NumLock for the PF1 Key on a Unix System:
Making the physical NumLock key available for use in the EDT
Emulation requires some modification to the default X Window
settings. Since the keycode assignments vary from system to
system, some investigation is needed to see how to do this on
a particular system.
You will need to look at the output generated by xmodmap invoked with the
"-pm" switch. examined. For example, on RedHat GNU/Linux 5.2 on a PC, we
get the following output when running xmodmap.
"xmodmap -pm" yields:
xmodmap: up to 2 keys per modifier, (keycodes in parentheses):
shift Shift_L (0x32), Shift_R (0x3e)
lock Caps_Lock (0x42)
control Control_L (0x25), Control_R (0x6d)
mod1 Alt_L (0x40), Alt_R (0x71)
mod2 Num_Lock (0x4d)
mod3
mod4
mod5 Scroll_Lock (0x4e)
Note that Num_Lock is assigned to the modifier mod2. This is
what hides Num_Lock from being seen by Emacs.
Now, "xmodmap -pke" yields:
.
.
.
keycode 77 = Num_Lock Pointer_EnableKeys
.
.
.
keycode 96 = F12
.
.
.
So, in RedHat GNU/Linux 5.2 on a PC, Num_Lock generates keycode
77. The following steps are taken:
1. clear the assignment of Num_Lock to mod2;
2. swap the keycodes assigned to F12 and Num_Lock;
3. assign Num_Lock back to mod2.
The .xmodmaprc file looks like this:
! File: .xmodmaprc
!
! Set up PC keypad under GNU/Linux for the GNU Emacs EDT Emulation
!
clear mod2
keycode 77 = F12
keycode 96 = Num_Lock Pointer_EnableKeys
add mod2 = Num_Lock
So, after executing "xmodmap .xmodmaprc", a press of the physical
F12 key looks like a Num_Lock keypress to X. Also, a press of the
physical NumLock key looks like a press of the F12 key to X.
Now, edt-mapper.el will see "f12" when the physical NumLock key
is pressed, allowing the NumLock key to be used as the EDT PF1
(Gold) key.
V. HOW DOES THIS EDT EMULATION DIFFER FROM REAL EDT?:
In general, you will find that this emulation of EDT replicates most, but not
all, of EDT's most used Keypad Mode editing functions and behavior. It is not
perfect, but most EDT users who have tried the emulation agree that it is
quite good enough to make it easy for die-hard EDT users to move over to using
GNU Emacs.
Here's a list of the most important differences between EDT and this GNU Emacs
EDT Emulation. The list is short but you must be aware of these differences
if you are to use the EDT Emulation effectively.
1. Entering repeat counts works a little differently than in EDT.
EDT allows users to enter a repeat count before entering a command that
accepts repeat counts. For example, when using the real EDT, pressing
these three keys in sequence, GOLD 5 KP1, will move the cursor in the
current direction 5 words. This does NOT work in Emacs!
Emacs provides two ways to enter repeat counts and neither involves using
the GOLD key. First, repeat counts can be entered in Emacs by using the
ESC key. For example, pressing these keys in sequence, ESC 1 0 KP1, will
move the cursor in the current direction 10 words. Second, Emacs provides
another command called universal-argument that can be used to do the same
thing. Normally, in Emacs has this bound to C-u.
2. EDT's line mode commands and nokeypad mode commands are NOT supported
(with one important exception; see item 8 in the Highlights section
below). Although, at first, this may seem like a big omission, the set of
built-in Emacs commands provides a much richer set of capabilities which
more than make up for this omission.
To enter Emacs commands not bound to keys, you can press GOLD KP7 or the DO
key. Emacs will display its own command prompt "M-x". This stands for the
keypress Meta-x, where Meta is a special shift key. The Alt key is often
mapped to behave as a Meta key. So, you can also invoke this prompt by
pressing Meta-x. Typing the sequence "ESC x" will also invoke the prompt.
3. Selected text is highlighted ONLY on systems where Emacs supports the
highlighting of text.
4. Just like in TPU/EVE, the ENTER key is NOT used to terminate input when the
editor prompts you for input. The RETURN key is used, instead. (KP4 and
KP5 (the direction keys) do terminate input for the FIND command, just like
in EDT, however.)
VI. SOME HIGHLIGHTS IN THIS EDT EMULATION, AND SOME COMPARISONS TO THE
ORIGINAL GNU EMACS EDT EMULATION:
1. The EDT define key command is supported (edt-define-key) and is bound to
C-k in the default EDT mode when EDT control sequence bindings are enabled
or one of the sample edt-user.el customization files is used. The TPU/EVE
learn command is supported but not bound to a key in the default EDT mode
but is bound in the sample edt-user.el file.
Unlike the TPU/EVE learn command, which uses one key to begin the learn
sequence, C-l, and another command to remember the sequence, C-r, this
version of the learn command (edt-learn) serves as a toggle to both begin
and to remember the learn sequence.
Many users who change the meaning of a key with the define key and the
learn commands, would like to be able to restore the original key binding
without having to quit and restart emacs. So a restore key command is
provided to do just that. When invoked, it prompts you to press the key
to which you wish the last replaced key definition restored. It is bound
to GOLD C-k in the default EDT mode when EDT control sequence bindings are
enabled or one of the sample edt-user.el customization files is used.
2. Direction support is fully supported.
3. All original Emacs bindings are fully restored when EDT emulation is turned
off. So, if a fellow worker comes over to your terminal to help you with a
software problem, for example, and is completely confused by your EDT
emulation bindings, just enter the command, edt-emulation-off, at the M-x
prompt and the original Emacs bindings will be restored. To resume the EDT
emulation, just enter edt-emulation-on.
4. User custom EDT bindings are kept separate from the default EDT bindings.
One can toggle back and forth between the custom EDT bindings and default
EDT bindings.
5. The Emacs functions in edt.el attempt to emulate, where practical, the
exact behavior of the corresponding EDT keypad mode commands. In a few
cases, the emulation is not exact, but we hope you will agree it is close
enough. In a very few cases, we chose to use the Emacs way of handling
things. As mentioned earlier, we do not emulate the EDT SUBS command.
Instead, we chose to use the Emacs query-replace function, which we find
to be easier to use.
6. Emacs uses the regexp assigned to page-delimiter to determine what marks a
page break. This is normally "^\f", which causes the edt-page command to
ignore form feeds not located at the beginning of a line. To emulate the
EDT PAGE command exactly, page-delimiter is set to "\f" when EDT emulation
is turned on, and restored to "^\f" when EDT emulation is turned off.
But, since some users prefer the Emacs definition of a page break, or may
wish to preserve a customized definition of page break, one can override
the EDT definition by placing
(setq edt-keep-current-page-delimiter t)
in your .emacs file. Or, you can used the Emacs customize command
to change its setting.
7. The EDT definition of a section of a terminal window is hardwired to be 16
lines of its one-and-only 24-line window (the EDT SECT command bound to
KP8). That's two-thirds of the window at a time. Since Emacs, like
TPU/EVE, can handle multiple windows of sizes of other than 24 lines, the
definition of section used here has been modified to two-thirds of the
current window. (There is also an edt-scroll-window function which you
may prefer over the SECT emulation.)
8. Cursor movement and deletion involving word entities is identical to EDT.
This, above all else, gives the die-hard EDT user a sense of being at
home. Also, an emulation of EDT's SET ENTITY WORD command is provided,
for those users who like to customize movement by a word at a time to
their own liking.
9. EDT's FIND and FNDNXT are supported.
10. EDT's APPEND, REPLACE, and SUBS commands are supported.
11. CHNGCASE is supported. It works on individual characters or selected
text, if SELECT is active. In addition, two new commands are provided:
edt-lowercase and edt-uppercase. They work on individual WORDS or
selected text, if SELECT is active.
12. Form feed and tab insert commands are supported.
13. A new command, edt-duplicate-word, is provided. If you experiment with
it, you might find it to be surprisingly useful and may wonder how you
ever got along without it! It is assigned to C-j in the sample
edt-user.el customization files.
14. TPU/EVE's Rectangular Cut and Paste functions (originally from the EVE-Plus
package) are supported. But unlike the TPU/EVE versions, these here
support both insert and overwrite modes. The seven rectangular functions
are bound to F7, F8, GOLD-F8, F9, GOLD-F9, F10, and GOLD-F10 in the
default EDT mode.
15. The original EDT emulation package set up many default regular and GOLD
bindings. We tried to preserve most (but not all!) of these, so users of
the original emulation package will feel more at home.
Nevertheless, there are still many GOLD key sequences which are not bound
to any functions. These are prime candidates to use for your own
customizations.
Also, there are several commands in edt.el not bound to any key. So, you
will find it worthwhile to look through edt.el for functions you may wish
to add to your personal customized bindings.
16. The VT200/VT300 series terminals steal the function keys F1 to F5 for
their own use. These do not generate signals which are sent to the host.
So, edt.el does not assign any default bindings to F1 through F5.
In addition, our VT220 terminals generate an interrupt when the F6 key is
pressed (^C or ^Y, can't remember which) and not the character sequence
documented in the manual. So, binding emacs commands to F6 will not work
if your terminal behaves the same way.
17. The VT220 terminal has no ESC, BS, nor LF keys, as does a VT100. So the
default EDT bindings adopt the standard DEC convention of having the F11,
F12, and F13 keys, on a VT200 series (and above) terminal, assigned to the
same EDT functions that are bound to ESC, BS, and LF on a VT100 terminal.
18. Each user, through the use of a private edt-user.el file, can customize,
very easily, personal EDT emulation bindings.
19. The EDT SELECT and RESET functions are supported. However, unlike EDT,
pressing RESET to cancel text selection does NOT reset the existing
setting of the current direction.
We also provide a TPU/EVE like version of the single SELECT/RESET
function, called edt-toggle-select, which makes the EDT SELECT function
into a toggle on/off switch. That is, if selection is ON, pressing SELECT
again turns selection off (cancels selection). This function is used in
the sample edt-user.el customization files.
20. EDT scroll margins are supported, but are disabled by default. (See
CUSTOMIZING section below for instructions on how to enable them.)
VII. CUSTOMIZING:
Most EDT users, at one time or another, make some custom key bindings, or
use someone else's custom key bindings, which they come to depend upon just as
if they were built-in bindings. This EDT Emulation for GNU Emacs is designed
to make it easy to customize bindings.
If you wish to customize the EDT Emulation to use some of your own key
bindings, you need to make a private version of edt-user.el in your own
private lisp directory. There are two sample files edt-user.el1 and
edt-user.el2 for you to use as templates and for ideas. Look at
edt-user.el1 first. Unless you will be using two or more very different
types of terminals on the same system, you need not look at edt-user.el2.
First, you need to have your own private lisp directory, say ~/lisp, and
you should add it to the GNU Emacs load path.
NOTE: A few sites have different load-path requirements, so the above
directions may need some modification if your site has such special
needs.
Creating your own edt-user.el file:
A sample edt-user.el file is attached to the end of this user documentation.
You should use it as a guide to learn how you can customize EDT emulation
bindings to your own liking. Names used to identify the set of LK-201
keypad and function keys are:
Keypad Keys:
PF1 PF2 PF3 PF4
KP7 KP8 KP9 KP-
KP4 KP5 KP6 KP,
KP1 KP2 KP3
KP0 KPP KPE
Arrow Keys:
LEFT RIGHT DOWN UP
Function Keys:
F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14
HELP DO F17 F18 F19 F20
FIND INSERT REMOVE
SELECT PREVIOUS NEXT
Note:
Many VT-200 terminals, and above, steal function keys F1 thru
F5 for terminal setup control and don't send anything to the
host if pressed. So customizing bindings to these keys may
not work for you.
There are three basic functions that do the EDT emulation custom bindings:
edt-bind-key, edt-bind-gold-key, and edt-bind-function-key.
The first two are for binding functions to keys which are standard across most
keyboards. This makes them keyboard independent, making it possible to define
these key bindings for all terminals in the file edt.el.
The first, edt-bind-key, is used typically to bind emacs commands to
control keys, although some people use it to bind commands to other keys, as
well. (For example, some people use it to bind the VT200 seldom used
back-tick key (`) to the function "ESC-prefix" so it will behave like an ESC
key.) The second function, edt-bind-gold-key, is used to bind emacs commands
to gold key sequences involving alpha-numeric keys, special character keys,
and control keys.
The third function, edt-bind-function-key, is terminal dependent and is defined
in a terminal specific file (see edt-vt100.el for example). It is used to bind
emacs commands to LK-201 function keys, to keypad keys, and to gold sequences
of those keys.
SPECIFYING WORD ENTITIES:
The variable edt-word-entities is used to emulate EDT's SET ENTITY WORD
command. It contains a list of characters to be treated as words in
themselves. If the user does not define edt-word-entities in his/her .emacs
file, then it is set up with the EDT default containing only TAB.
The characters are stored in the list by their numerical values, not as
strings. Emacs supports several ways to specify the numerical value of a
character. One method is to use the question mark: ?A means the numerical
value for A, ?/ means the numerical value for /, and so on. Several
unprintable characters have special representations:
?\b specifies BS, C-h
?\t specifies TAB, C-i
?\n specifies LFD, C-j
?\v specifies VTAB, C-k
?\f specifies FF, C-l
?\r specifies CR, C-m
?\e specifies ESC, C-[
?\\ specifies \
Here are some examples:
(setq edt-word-entities '(?\t ?- ?/)) ;; Specifies TAB, - , and /
(setq edt-word-entities '(?\t) ;; Specifies TAB, the default
You can also specify characters by their decimal ascii values:
(setq edt-word-entities '(9 45 47)) ;; Specifies TAB, - , and /
ENABLING EDT CONTROL KEY SEQUENCE BINDINGS:
Where EDT key bindings and GNU Emacs key bindings conflict, the default GNU
Emacs key bindings are retained by default. Some diehard EDT users may not
like this. So, if the variable edt-use-EDT-control-key-bindings is set to
true in a user's .emacs file, then the default EDT Emulation mode will enable
most of the original EDT control key sequence bindings. If you wish to do
this, add the following line to your .emacs file:
(setq edt-use-EDT-control-key-bindings t)
SETTING SCROLL MARGINS:
Scroll margins at the top and bottom of the window are now supported. (The
design was copied from tpu-extras.el.) By default, this feature is enabled
with the top margin set to 10% of the window and the bottom margin set to 15%
of the window. To change these settings, you can invoke the function
edt-set-scroll-margins in your .emacs file. For example, the following line
(edt-set-scroll-margins "20%" "25%")
sets the top margin to 20% of the window and the bottom margin to 25% of the
window. To disable this feature, set each margin to 0%. You can also invoke
edt-set-scroll-margins interactively while EDT Emulation is active to change
the settings for that session.
NOTE: Another way to set the scroll margins is to use the Emacs customization
feature (not available in Emacs 19) to set the following two variables
directly:
edt-top-scroll-margin and edt-bottom-scroll-margin
Enter the Emacs `customize' command. First select the Editing group and then
select the Emulations group. Finally, select the Edt group and follow the
directions.
DEFAULT EDT Keypad
F7: Copy Rectangle +----------+----------+----------+----------+
F8: Cut Rect Overstrike |Prev Line |Next Line |Bkwd Char |Frwd Char |
G-F8: Paste Rect Overstrike | (UP) | (DOWN) | (LEFT) | (RIGHT) |
F9: Cut Rect Insert |Window Top|Window Bot|Bkwd Sent |Frwd Sent |
G-F9: Paste Rect Insert +----------+----------+----------+----------+
F10: Cut Rectangle
G-F10: Paste Rectangle
F11: ESC
F12: Beginning of Line +----------+----------+----------+----------+
G-F12: Delete Other Windows | GOLD | HELP | FNDNXT | DEL L |
F13: Delete to Begin of Word | (PF1) | (PF2) | (PF3) | (PF4) |
HELP: Keypad Help |Mark Wisel|Desc Funct| FIND | UND L |
G-HELP: Emacs Help +----------+----------+----------+----------+
DO: Execute extended command | PAGE | SECT | APPEND | DEL W |
C-g: Keyboard Quit | (7) | (8) | (9) | (-) |
G-C-g: Keyboard Quit |Ex Ext Cmd|Fill Regio| REPLACE | UND W |
C-h: Beginning of Line +----------+----------+----------+----------+
G-C-h: Emacs Help | ADVANCE | BACKUP | CUT | DEL C |
C-i: Tab Insert | (4) | (5) | (6) | (,) |
C-j: Delete to Begin of Word | BOTTOM | TOP | Yank | UND C |
C-k: Define Key +----------+----------+----------+----------+
G-C-k: Restore Key | WORD | EOL | CHAR | Next |
C-l: Form Feed Insert | (1) | (2) | (3) | Window |
C-n: Set Screen Width 80 | CHNGCASE | DEL EOL |Quoted Ins| !
C-r: Isearch Backward +---------------------+----------+ (ENTER) |
C-s: Isearch Forward | LINE | SELECT | !
C-t: Display the Time | (0) | (.) | Query |
C-u: Delete to Begin of Line | Open Line | RESET | Replace |
C-v: Redraw Display +---------------------+----------+----------+
C-w: Set Screen Width 132
C-z: Suspend Emacs +----------+----------+----------+
G-C-\: Split Window | FNDNXT | Yank | CUT |
| (FIND) | (INSERT) | (REMOVE) |
G-b: Buffer Menu | FIND | | COPY |
G-c: Compile +----------+----------+----------+
G-d: Delete Window |SELECT/RES|SECT BACKW|SECT FORWA|
G-e: Exit | (SELECT) |(PREVIOUS)| (NEXT) |
G-f: Find File | | | |
G-g: Find File Other Window +----------+----------+----------+
G-h: Keypad Help
G-i: Insert File
G-k: Toggle Capitalization Word
G-l: Lowercase Word or Region
G-m: Save Some Buffers
G-n: Next Error
G-o: Switch to Next Window
G-q: Quit
G-r: Revert File
G-s: Save Buffer
G-u: Uppercase Word or Region
G-v: Find File Other Window
G-w: Write file
G-y: EDT Emulation OFF
G-z: Switch to User EDT Key Bindings
G-1: Delete Other Windows
G-2: Split Window
G-%: Go to Percentage
G- : Undo (GOLD Spacebar)
G-=: Go to Line
G-`: What line
G-/: Query-Replace
;;; File: edt-user.el --- Sample User Customizations for the Enhanced
;;; EDT Keypad Mode Emulation
;;;
;;; For GNU Emacs 19 and Above
;;;
;; Copyright (C) 1986, 1992, 1993, 2000 Free Software Foundation, Inc.
;; Author: Kevin Gallagher <kgallagh@spd.dsccc.com>
;; Maintainer: Kevin Gallagher <kgallagh@spd.dsccc.com>
;; Keywords: emulations
;; GNU Emacs is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 2, or (at your option)
;; any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to the
;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
;; Boston, MA 02111-1307, USA.
;;; Commentary:
;; This file contains GNU Emacs User Custom EDT bindings and functions.
;;; Usage:
;; See edt-user.doc in the emacs etc directory.
;; ====================================================================
;;;;
;;;; Setup user custom EDT key bindings.
;;;;
(defun edt-setup-user-bindings ()
"Assigns user custom EDT Emulation keyboard bindings."
;; PF1 (GOLD), PF2, PF3, PF4
;;
;; This file MUST contain a binding of PF1 to edt-user-gold-map. So
;; DON'T CHANGE OR DELETE THE REGULAR KEY BINDING OF PF1 BELOW!
;; (However, you may change the GOLD-PF1 binding, if you wish.)
(edt-bind-function-key "PF1" 'edt-user-gold-map 'edt-mark-section-wisely)
(edt-bind-function-key "PF2" 'query-replace 'other-window)
(edt-bind-function-key "PF4" 'edt-delete-entire-line 'edt-undelete-line)
;; EDT Keypad Keys
(edt-bind-function-key "KP1" 'edt-word-forward 'edt-change-case)
(edt-bind-function-key "KP3" 'edt-word-backward 'edt-copy)
(edt-bind-function-key "KP6" 'edt-cut-or-copy 'yank)
(edt-bind-function-key "KP8" 'edt-scroll-window 'fill-paragraph)
(edt-bind-function-key "KP9" 'open-line 'edt-eliminate-all-tabs)
(edt-bind-function-key "KPP"
'edt-toggle-select 'edt-line-to-middle-of-window)
(edt-bind-function-key "KPE" 'edt-change-direction 'overwrite-mode)
;; GOLD bindings for regular keys.
(edt-bind-gold-key "a" 'edt-append)
(edt-bind-gold-key "A" 'edt-append)
(edt-bind-gold-key "h" 'edt-electric-user-keypad-help)
(edt-bind-gold-key "H" 'edt-electric-user-keypad-help)
;; Control bindings for regular keys.
;;; Leave binding of C-c as original prefix key.
(edt-bind-key "\C-j" 'edt-duplicate-word)
(edt-bind-key "\C-k" 'edt-define-key)
(edt-bind-gold-key "\C-k" 'edt-restore-key)
(edt-bind-key "\C-l" 'edt-learn)
;;; Leave binding of C-m to newline.
(edt-bind-key "\C-n" 'edt-set-screen-width-80)
(edt-bind-key "\C-o" 'open-line)
(edt-bind-key "\C-p" 'fill-paragraph)
;;; Leave binding of C-r to isearch-backward.
;;; Leave binding of C-s to isearch-forward.
(edt-bind-key "\C-t" 'edt-display-the-time)
(edt-bind-key "\C-v" 'redraw-display)
(edt-bind-key "\C-w" 'edt-set-screen-width-132)
;;; Leave binding of C-x as original prefix key.
)
;;;
;;; LK-201 KEYBOARD USER EDT KEYPAD HELP
;;;
(defun edt-user-keypad-help ()
"
USER EDT Keypad Active
+----------+----------+----------+----------+
F7: Copy Rectangle |Prev Line |Next Line |Bkwd Char |Frwd Char |
F8: Cut Rect Overstrike | (UP) | (DOWN) | (LEFT) | (RIGHT) |
G-F8: Paste Rect Overstrike |Window Top|Window Bot|Bkwd Sent |Frwd Sent |
F9: Cut Rect Insert +----------+----------+----------+----------+
G-F9: Paste Rect Insert
F10: Cut Rectangle
G-F10: Paste Rectangle
F11: ESC +----------+----------+----------+----------+
F12: Beginning of Line | GOLD |Query Repl| FNDNXT |Del Ent L |
G-F12: Delete Other Windows | (PF1) | (PF2) | (PF3) | (PF4) |
F13: Delete to Begin of Word |Mark Wisel|Other Wind| FIND | UND L |
HELP: Keypad Help +----------+----------+----------+----------+
G-HELP: Emacs Help | PAGE |Scroll Win|Open Line | DEL W |
DO: Execute extended command | (7) | (8) | (9) | (-) |
C-a: Beginning of Line |Ex Ext Cmd|Fill Parag|Elim Tabs | UND W |
C-b: Switch to Buffer +----------+----------+----------+----------+
C-d: Delete Character | ADVANCE | BACKUP | CUT/COPY | DEL C |
C-e: End of Line | (4) | (5) | (6) | (,) |
C-f: Forward Character | BOTTOM | TOP | Yank | UND C |
C-g: Keyboard Quit +----------+----------+----------+----------+
G-C-g: Keyboard Quit | Fwd Word | EOL | Bwd Word | Change |
C-h: Electric Emacs Help | (1) | (2) | (3) | Direction|
G-C-h: Emacs Help | CHNGCASE | DEL EOL | COPY | |
C-i: Indent for Tab +---------------------+----------+ (ENTER) |
C-j: Duplicate Word | LINE |SELECT/RES| |
C-k: Define Key | (0) | (.) | Toggle |
G-C-k: Restore Key | Open Line |Center Lin|Insrt/Over|
C-l: Learn +---------------------+----------+----------+
C-n: Set Screen Width 80
C-o: Open Line +----------+----------+----------+
C-p: Fill Paragraph | FNDNXT | Yank | CUT |
C-q: Quoted Insert | (FIND)) | (INSERT) | (REMOVE) |
C-r: Isearch Backward | FIND | | COPY |
C-s: Isearch Forward +----------+----------+----------+
C-t: Display the Time |SELECT/RES|SECT BACKW|SECT FORWA|
C-u: Universal Argument | (SELECT) |(PREVIOUS)| (NEXT) |
C-v: Redraw Display | | | |
C-w: Set Screen Width 132 +----------+----------+----------+
C-z: Suspend Emacs
G-C-\\: Split Window
G-a: Append to Kill Buffer
G-b: Buffer Menu
G-c: Compile
G-d: Delete Window
G-e: Exit
G-f: Find File
G-g: Find File Other Window
G-h: Keypad Help
G-i: Insert File
G-k: Toggle Capitalization Word
G-l: Lowercase Word or Region
G-m: Save Some Buffers
G-n: Next Error
G-o: Switch Windows
G-q: Quit
G-r: Revert File
G-s: Save Buffer
G-u: Uppercase Word or Region
G-v: Find File Other Window
G-w: Write file
G-y: EDT Emulation OFF
G-z: Switch to Default EDT Key Bindings
G-2: Split Window
G-%: Go to Percentage
G- : Undo (GOLD Spacebar)
G-=: Go to Line
G-`: What line
G-/: Query-Replace"
(interactive)
(describe-function 'edt-user-keypad-help))

View file

@ -1,552 +0,0 @@
.\" Copyright (C) 1995, 1999, 2000, 2001 Free Software Foundation, Inc.
.\"
.\" This file is part of GNU Emacs.
.\"
.\" GNU Emacs is free software; you can redistribute it and/or modify
.\" it under the terms of the GNU General Public License as published by
.\" the Free Software Foundation; either version 2, or (at your option)
.\" any later version.
.\"
.\" GNU Emacs is distributed in the hope that it will be useful,
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
.\" GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public License
.\" along with GNU Emacs; see the file COPYING. If not, write to the
.\" Free Software Foundation, Inc., 59 Temple Place - Suite 330,
.\" Boston, MA 02111-1307, USA.
.\"
'\" t
.TH EMACS 1 "2001 November 23"
.UC 4
.SH NAME
emacs \- GNU project Emacs
.SH SYNOPSIS
.B emacs
[
.I command-line switches
] [
.I files ...
]
.br
.SH DESCRIPTION
.I GNU Emacs
is a version of
.I Emacs,
written by the author of the original (PDP-10)
.I Emacs,
Richard Stallman.
.br
The primary documentation of GNU Emacs is in the GNU Emacs Manual,
which you can read on line using Info, a subsystem of Emacs. Please
look there for complete and up-to-date documentation. This man page
is updated only when someone volunteers to do so; the Emacs
maintainers' priority goal is to minimize the amount of time this man
page takes away from other more useful projects.
.br
The user functionality of GNU Emacs encompasses
everything other
.I Emacs
editors do, and it is easily extensible since its
editing commands are written in Lisp.
.PP
.I Emacs
has an extensive interactive help facility,
but the facility assumes that you know how to manipulate
.I Emacs
windows and buffers.
CTRL-h or F1 enters the Help facility. Help Tutorial (CTRL-h t)
requests an interactive tutorial which can teach beginners the fundamentals
of
.I Emacs
in a few minutes.
Help Apropos (CTRL-h a) helps you
find a command given its functionality, Help Character (CTRL-h c)
describes a given character's effect, and Help Function (CTRL-h f)
describes a given Lisp function specified by name.
.PP
.I Emacs's
Undo can undo several steps of modification to your buffers, so it is
easy to recover from editing mistakes.
.PP
.I GNU Emacs's
many special packages handle mail reading (RMail) and sending (Mail),
outline editing (Outline), compiling (Compile), running subshells
within
.I Emacs
windows (Shell), running a Lisp read-eval-print loop
(Lisp-Interaction-Mode), and automated psychotherapy (Doctor).
.PP
There is an extensive reference manual, but
users of other Emacses
should have little trouble adapting even
without a copy. Users new to
.I Emacs
will be able
to use basic features fairly rapidly by studying the tutorial and
using the self-documentation features.
.PP
.SM Emacs Options
.PP
The following options are of general interest:
.TP 8
.I file
Edit
.I file.
.TP
.BI \+ number
Go to the line specified by
.I number
(do not insert a space between the "+" sign and
the number).
.TP
.BI \+ line:column
Go to the specified
.I line
and
.I column
.TP
.B \-q
Do not load an init file.
.TP
.B \-no-site-file
Do not load the site-wide startup file.
.TP
.BI \-debug-init
Enable
.I Emacs
Lisp debugger during the processing of the user init file
.BI ~/.emacs.
This is useful for debugging problems in the init file.
.TP
.BI \-u " user"
Load
.I user's
init file.
.TP
.BI \-t " file"
Use specified
.I file
as the terminal instead of using stdin/stdout.
This must be the first argument specified in the command line.
.TP
.B \-version
Display
.I Emacs
version information and exit.
.PP
The following options are lisp-oriented
(these options are processed in the order encountered):
.TP 8
.BI \-f " function"
Execute the lisp function
.I function.
.TP
.BI \-l " file"
Load the lisp code in the file
.I file.
.TP
.BI \-eval " expr"
Evaluate the Lisp expression
.I expr.
.PP
The following options are useful when running
.I Emacs
as a batch editor:
.TP 8
.BI \-batch
Edit in batch mode. The editor will send messages to stderr. This
option must be the first in the argument list. You must use -l and -f
options to specify files to execute and functions to call.
.TP
.B \-kill
Exit
.I Emacs
while in batch mode.
.TP
.BI \-L " directory"
Add
.I directory
to the list of directories
.I Emacs
searches for Lisp files.
.\" START DELETING HERE IF YOU'RE NOT USING X
.PP
.SM Using Emacs with X
.PP
.I Emacs
has been tailored to work well with the X window system.
If you run
.I Emacs
from under X windows, it will create its own X window to
display in. You will probably want to start the editor
as a background process
so that you can continue using your original window.
.PP
.I Emacs
can be started with the following X switches:
.TP 8
.BI \-name " name"
Specifies the name which should be assigned to the initial
.I Emacs
window. This controls looking up X resources as well as the window title.
.TP 8
.BI \-title " name"
Specifies the title for the initial X window.
.TP 8
.B \-r
Display the
.I Emacs
window in reverse video.
.TP
.B \-i
Use the "kitchen sink" bitmap icon when iconifying the
.I Emacs
window.
.TP
.BI \-font " font, " \-fn " font"
Set the
.I Emacs
window's font to that specified by
.I font.
You will find the various
.I X
fonts in the
.I /usr/lib/X11/fonts
directory.
Note that
.I Emacs
will only accept fixed width fonts.
Under the X11 Release 4 font-naming conventions, any font with the
value "m" or "c" in the eleventh field of the font name is a fixed
width font. Furthermore, fonts whose name are of the form
.IR width x height
are generally fixed width, as is the font
.IR fixed .
See
.IR xlsfonts (1)
for more information.
When you specify a font, be sure to put a space between the
switch and the font name.
.TP
.BI \-bw " pixels"
Set the
.I Emacs
window's border width to the number of pixels specified by
.I pixels.
Defaults to one pixel on each side of the window.
.TP
.BI \-ib " pixels"
Set the window's internal border width to the number of pixels specified
by
.I pixels.
Defaults to one pixel of padding on each side of the window.
.PP
.TP 8
.BI \-\-geometry " geometry"
Set the
.I Emacs
window's width, height, and position as specified. The geometry
specification is in the standard X format; see
.IR X (1)
for more information.
The width and height are specified in characters; the default is 80 by
24. See the Emacs manual, section "Options for Window Size and Position",
for information on how window sizes interact
with selecting or deselecting the tool bar and menu bar.
.PP
.TP 8
.BI \-fg " color"
On color displays, sets the color of the text.
See the file
.I /usr/lib/X11/rgb.txt
for a list of valid
color names.
.TP
.BI \-bg " color"
On color displays,
sets the color of the window's background.
.TP
.BI \-bd " color"
On color displays,
sets the color of the window's border.
.TP
.BI \-cr " color"
On color displays,
sets the color of the window's text cursor.
.TP
.BI \-ms " color"
On color displays,
sets the color of the window's mouse cursor.
.TP
.BI \-d " displayname, " \-display " displayname"
Create the
.I Emacs
window on the display specified by
.IR displayname .
Must be the first option specified in the command line.
.TP
.B \-nw
Tells
.I Emacs
not to use its special interface to X. If you use this
switch when invoking
.I Emacs
from an
.IR xterm (1)
window, display is done in that window.
This must be the first option specified in the command line.
.PP
You can set
.I X
default values for your
.I Emacs
windows in your
.I \.Xresources
file (see
.IR xrdb (1)).
Use the following format:
.IP
emacs.keyword:value
.PP
where
.I value
specifies the default value of
.I keyword.
.I Emacs
lets you set default values for the following keywords:
.TP 8
.B font (\fPclass\fB Font)
Sets the window's text font.
.TP
.B reverseVideo (\fPclass\fB ReverseVideo)
If
.I reverseVideo's
value is set to
.I on,
the window will be displayed in reverse video.
.TP
.B bitmapIcon (\fPclass\fB BitmapIcon)
If
.I bitmapIcon's
value is set to
.I on,
the window will iconify into the "kitchen sink."
.TP
.B borderWidth (\fPclass\fB BorderWidth)
Sets the window's border width in pixels.
.TP
.B internalBorder (\fPclass\fB BorderWidth)
Sets the window's internal border width in pixels.
.TP
.B foreground (\fPclass\fB Foreground)
For color displays,
sets the window's text color.
.TP
.B background (\fPclass\fB Background)
For color displays,
sets the window's background color.
.TP
.B borderColor (\fPclass\fB BorderColor)
For color displays,
sets the color of the window's border.
.TP
.B cursorColor (\fPclass\fB Foreground)
For color displays,
sets the color of the window's text cursor.
.TP
.B pointerColor (\fPclass\fB Foreground)
For color displays,
sets the color of the window's mouse cursor.
.TP
.B geometry (\fPclass\fB Geometry)
Sets the geometry of the
.I Emacs
window (as described above).
.TP
.B title (\fPclass\fB Title)
Sets the title of the
.I Emacs
window.
.TP
.B iconName (\fPclass\fB Title)
Sets the icon name for the
.I Emacs
window icon.
.PP
If you try to set color values while using a black and white display,
the window's characteristics will default as follows:
the foreground color will be set to black,
the background color will be set to white,
the border color will be set to grey,
and the text and mouse cursors will be set to black.
.PP
.SM Using the Mouse
.PP
The following lists the mouse button bindings for the
.I Emacs
window under X11.
.TS
l l.
MOUSE BUTTON FUNCTION
left Set point.
middle Paste text.
right Cut text into X cut buffer.
SHIFT-middle Cut text into X cut buffer.
SHIFT-right Paste text.
CTRL-middle Cut text into X cut buffer and kill it.
CTRL-right T{
Select this window, then split it into
two windows. Same as typing CTRL-x 2.
T}
.\" START DELETING HERE IF YOU'RE NOT USING X MENUS
CTRL-SHIFT-left T{
X buffer menu--hold the buttons and keys
down, wait for menu to appear, select
buffer, and release. Move mouse out of
menu and release to cancel.
T}
CTRL-SHIFT-middle X help menu--pop up index card menu for Emacs help.
.\" STOP DELETING HERE IF YOU'RE NOT USING X MENUS
CTRL-SHIFT-right T{
Select window with mouse, and delete all
other windows. Same as typing CTRL-x 1.
T}
.\" STOP DELETING HERE IF YOU'RE NOT USING X
.TE
.PP
.SH MANUALS
You can order printed copies of the GNU Emacs Manual from the Free
Software Foundation, which develops GNU software. See the file ORDERS
for ordering information.
.br
Your local Emacs maintainer might also have copies available. As
with all software and publications from FSF, everyone is permitted to
make and distribute copies of the Emacs manual. The TeX source to the
manual is also included in the Emacs source distribution.
.PP
.SH FILES
/usr/local/info - files for the Info documentation browser
(a subsystem of Emacs) to refer to. Currently not much of Unix
is documented here, but the complete text of the Emacs reference
manual is included in a convenient tree structured form.
/usr/local/share/emacs/$VERSION/src - C source files and object files
/usr/local/share/emacs/$VERSION/lisp - Lisp source files and compiled files
that define most editing commands. Some are preloaded;
others are autoloaded from this directory when used.
/usr/local/share/emacs/$VERSION/etc - various programs that are used with
GNU Emacs, and some files of information.
/usr/local/share/emacs/$VERSION/etc/DOC.* - contains the documentation
strings for the Lisp primitives and preloaded Lisp functions
of GNU Emacs. They are stored here to reduce the size of
Emacs proper.
/usr/local/share/emacs/$VERSION/etc/OTHER.EMACSES discusses GNU Emacs
vs. other versions of Emacs.
.br
/usr/local/share/emacs/$VERSION/etc/SERVICE lists people offering
various services to assist users of GNU Emacs, including education,
troubleshooting, porting and customization.
.br
These files also have information useful to anyone wishing to write
programs in the Emacs Lisp extension language, which has not yet been fully
documented.
/usr/local/com/emacs/lock - holds lock files that are made for all
files being modified in Emacs, to prevent simultaneous modification
of one file by two users.
.\" START DELETING HERE IF YOU'RE NOT USING X
/usr/lib/X11/rgb.txt - list of valid X color names.
.\" STOP DELETING HERE IF YOU'RE NOT USING X
.PP
.SH BUGS
There is a mailing list, bug-gnu-emacs@prep.ai.mit.edu on the internet
(ucbvax!prep.ai.mit.edu!bug-gnu-emacs on UUCPnet), for reporting Emacs
bugs and fixes. But before reporting something as a bug, please try
to be sure that it really is a bug, not a misunderstanding or a
deliberate feature. We ask you to read the section ``Reporting Emacs
Bugs'' near the end of the reference manual (or Info system) for hints
on how and when to report bugs. Also, include the version number of
the Emacs you are running in \fIevery\fR bug report that you send in.
Do not expect a personal answer to a bug report. The purpose of reporting
bugs is to get them fixed for everyone in the next release, if possible.
For personal assistance, look in the SERVICE file (see above) for
a list of people who offer it.
Please do not send anything but bug reports to this mailing list.
Send requests to be added to mailing lists to the special list
info-gnu-emacs-request@prep.ai.mit.edu (or the corresponding UUCP
address). For more information about Emacs mailing lists, see the
file /usr/local/emacs/etc/MAILINGLISTS. Bugs tend actually to be
fixed if they can be isolated, so it is in your interest to report
them in such a way that they can be easily reproduced.
.PP
Bugs that I know about are: shell will not work with programs
running in Raw mode on some Unix versions.
.SH UNRESTRICTIONS
.PP
.I Emacs
is free; anyone may redistribute copies of
.I Emacs
to
anyone under the terms stated in the
.I Emacs
General Public License,
a copy of which accompanies each copy of
.I Emacs
and which also
appears in the reference manual.
.PP
Copies of
.I Emacs
may sometimes be received packaged with distributions of Unix systems,
but it is never included in the scope of any license covering those
systems. Such inclusion violates the terms on which distribution
is permitted. In fact, the primary purpose of the General Public
License is to prohibit anyone from attaching any other restrictions
to redistribution of
.I Emacs.
.PP
Richard Stallman encourages you to improve and extend
.I Emacs,
and urges that
you contribute your extensions to the GNU library. Eventually GNU
(Gnu's Not Unix) will be a complete replacement for Berkeley
Unix.
Everyone will be free to use, copy, study and change the GNU system.
.SH SEE ALSO
X(1), xlsfonts(1), xterm(1), xrdb(1)
.SH AUTHORS
.PP
.I Emacs
was written by Richard Stallman and the Free Software Foundation.
Joachim Martillo and Robert Krawitz added the X features.
.SH COPYING
Copyright
.if t \(co
.if n (c)
1995, 1999, 2000, 2001 Free Software Foundation, Inc.
.PP
Permission is granted to make and distribute verbatim copies of this
document provided the copyright notice and this permission notice are
preserved on all copies.
.PP
Permission is granted to copy and distribute modified versions of
this document under the conditions for verbatim copying, provided that
the entire resulting derived work is distributed under the terms of
a permission notice identical to this one.
.PP
Permission is granted to copy and distribute translations of this
document into another language, under the above conditions for
modified versions, except that this permission notice may be stated
in a translation approved by the Free Software Foundation.

View file

@ -1,45 +0,0 @@
# This defines a bash command named `edit' which contacts/resumes an
# existing emacs or starts a new one if none exists.
#
# One way or another, any arguments are passed to emacs to specify files
# (provided you have loaded `resume.el').
#
# This function assumes the emacs program is named `emacs' and is somewhere
# in your load path. If either of these is not true, the most portable
# (and convenient) thing to do is to make an alias called emacs which
# refers to the real program, e.g.
#
# alias emacs=/usr/local/bin/gemacs
#
# Written by Noah Friedman.
function edit ()
{
local windowsys="${WINDOW_PARENT+sun}"
windowsys="${windowsys:-${DISPLAY+x}}"
if [ -n "${windowsys:+set}" ]; then
# Do not just test if these files are sockets. On some systems
# ordinary files or fifos are used instead. Just see if they exist.
if [ -e "${HOME}/.emacs_server" -o -e "/tmp/esrv${UID}-"* ]; then
emacsclient "$@"
return $?
else
echo "edit: starting emacs in background..." 1>&2
fi
case "${windowsys}" in
x ) (emacs "$@" &) ;;
sun ) (emacstool "$@" &) ;;
esac
else
if jobs %emacs 2> /dev/null ; then
echo "$(pwd)" "$@" >| ${HOME}/.emacs_args && fg %emacs
else
emacs "$@"
fi
fi
}

View file

@ -1,25 +0,0 @@
# This defines a csh command named `edit' which resumes an
# existing Emacs or starts a new one if none exists.
# One way or another, any arguments are passed to Emacs to specify files
# (provided you have loaded `resume.el').
# - Michael DeCorte
# These are the possible values of $whichjob
# 1 = new ordinary emacs (the -nw is so that it doesn't try to do X)
# 2 = resume emacs
# 3 = new emacs under X (-i is so that you get a reasonable icon)
# 4 = resume emacs under X
# 5 = new emacs under suntools
# 6 = resume emacs under suntools
# 7 = new emacs under X and suntools - doesn't make any sense, so use X
# 8 = resume emacs under X and suntools - doesn't make any sense, so use X
set EMACS_PATTERN="^\[[0-9]\] . Stopped ............ $EMACS"
alias edit 'set emacs_command=("emacs -nw \!*" "fg %emacs" "emacs -i \!* &"\
"emacsclient \!* &" "emacstool \!* &" "emacsclient \!* &" "emacs -i \!* &"\
"emacsclient \!* &") ; \
jobs >! $HOME/.jobs; grep "$EMACS_PATTERN" < $HOME/.jobs >& /dev/null; \
@ isjob = ! $status; \
@ whichjob = 1 + $isjob + $?DISPLAY * 2 + $?WINDOW_PARENT * 4; \
test -S ~/.emacs_server && emacsclient \!* \
|| echo `pwd` \!* >! ~/.emacs_args && eval $emacs_command[$whichjob]'

View file

@ -1,34 +0,0 @@
/* Format_version=1, Width=64, Height=64, Depth=1, Valid_bits_per_item=16
*/
0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x8000,0x0000,0x0000,0x0001,
0x8000,0x0000,0x007E,0x1C01,0x8000,0x0000,0x0006,0x1C01,
0x8000,0x0000,0x007F,0xFC01,0x8000,0x0000,0x0080,0x1C01,
0x8000,0x0000,0x013F,0xFC01,0x8000,0x0000,0x0140,0x1C01,
0x8000,0x0000,0x03E0,0x1C01,0x8000,0x0000,0x0000,0x1C01,
0x8000,0x0000,0x0000,0x1C01,0x8000,0x0000,0x0000,0x1C01,
0x8000,0x0000,0x0000,0x1C01,0x8000,0x0000,0x0210,0x1C01,
0x8000,0x0000,0x0330,0x1C01,0x8000,0x0000,0x00C0,0x1C01,
0x8003,0xFFFF,0xFFFF,0xFE01,0x8005,0xFFFF,0xFFFF,0xFE01,
0x8004,0xFFFF,0xFFFF,0xFC01,0x8004,0x787F,0xFFFF,0xF801,
0x8004,0x77FF,0xFFFF,0xF801,0x8000,0x77E3,0x6FFF,0xF801,
0x8000,0x762D,0x6FFF,0xF801,0x8004,0x77AD,0x6FFF,0xF801,
0x800C,0x77AD,0x6FFF,0xF801,0x8004,0x786D,0x8FFF,0xF801,
0x8000,0x7FFF,0xFFFF,0xF801,0x8000,0x7FFF,0xFFFF,0xF801,
0x8000,0x7E0F,0xFFFF,0xF801,0x8008,0x7EFF,0xFFFF,0xF801,
0x800C,0x7EF9,0x31CE,0x3801,0x8004,0x7E1A,0xADB5,0xF801,
0x8000,0x7EFA,0xADBE,0x7801,0x8000,0x7EFB,0xADB7,0xB801,
0x8000,0x7E0B,0xB2CC,0x7801,0x8000,0x7FFF,0xFFFF,0xF801,
0x8004,0x3FFF,0xFFFF,0xF001,0x8004,0x1FFF,0xFFFF,0xE001,
0x800C,0x0003,0x6000,0x0001,0x8000,0x0001,0x43C0,0x0001,
0x8000,0x0001,0x4420,0x0001,0x8000,0x0001,0x4990,0x0001,
0x8000,0x0001,0x4A50,0x0001,0x8004,0x0001,0x3250,0x0001,
0x8004,0x0000,0x8450,0x0001,0x800A,0x0000,0x7850,0x0001,
0x8000,0x0000,0x0050,0x0001,0xFFFF,0xFFFF,0xFFFF,0xFFFF,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000

View file

@ -1,38 +0,0 @@
#define emacs_width 64
#define emacs_height 64
static char emacs_bits[] = {
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
0x80,0x01,0x00,0x00,0x00,0x00,0x7e,0x38,0x80,0x01,0x00,0x00,0x00,0x00,0x60,
0x38,0x80,0x01,0x00,0x00,0x00,0x00,0xfe,0x3f,0x80,0x01,0x00,0x00,0x00,0x00,
0x01,0x38,0x80,0x01,0x00,0x00,0x00,0x80,0xfc,0x3f,0x80,0x01,0x00,0x00,0x00,
0x80,0x02,0x38,0x80,0x01,0x00,0x00,0x00,0xc0,0x07,0x38,0x80,0x01,0x00,0x00,
0x00,0x00,0x00,0x38,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x38,0x80,0x01,0x00,
0x00,0x00,0x00,0x00,0x38,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x38,0x80,0x01,
0x00,0x00,0x00,0x40,0x08,0x38,0x80,0x01,0x00,0x00,0x00,0xc0,0x0c,0x38,0x80,
0x01,0x00,0x00,0x00,0x00,0x03,0x38,0x80,0x01,0xc0,0xff,0xff,0xff,0xff,0x7f,
0x80,0x01,0xa0,0xff,0xff,0xff,0xff,0x7f,0x80,0x01,0x20,0xff,0xff,0xff,0xff,
0x3f,0x80,0x01,0x20,0x1e,0xfe,0xff,0xff,0x1f,0x80,0x01,0x20,0xee,0xff,0xff,
0xff,0x1f,0x80,0x01,0x00,0xee,0xc7,0xf6,0xff,0x1f,0x80,0x01,0x00,0x6e,0xb4,
0xf6,0xff,0x1f,0x80,0x01,0x20,0xee,0xb5,0xf6,0xff,0x1f,0x80,0x01,0x30,0xee,
0xb5,0xf6,0xff,0x1f,0x80,0x01,0x20,0x1e,0xb6,0xf1,0xff,0x1f,0x80,0x01,0x00,
0xfe,0xff,0xff,0xff,0x1f,0x80,0x01,0x00,0xfe,0xff,0xff,0xff,0x1f,0x80,0x01,
0x00,0x7e,0xf0,0xff,0xff,0x1f,0x80,0x01,0x10,0x7e,0xff,0xff,0xff,0x1f,0x80,
0x01,0x30,0x7e,0x9f,0x8c,0x73,0x1c,0x80,0x01,0x20,0x7e,0x58,0xb5,0xad,0x1f,
0x80,0x01,0x00,0x7e,0x5f,0xb5,0x7d,0x1e,0x80,0x01,0x00,0x7e,0xdf,0xb5,0xed,
0x1d,0x80,0x01,0x00,0x7e,0xd0,0x4d,0x33,0x1e,0x80,0x01,0x00,0xfe,0xff,0xff,
0xff,0x1f,0x80,0x01,0x20,0xfc,0xff,0xff,0xff,0x0f,0x80,0x01,0x20,0xf8,0xff,
0xff,0xff,0x07,0x80,0x01,0x30,0x00,0xc0,0x06,0x00,0x00,0x80,0x01,0x00,0x00,
0x80,0xc2,0x03,0x00,0x80,0x01,0x00,0x00,0x80,0x22,0x04,0x00,0x80,0x01,0x00,
0x00,0x80,0x92,0x09,0x00,0x80,0x01,0x00,0x00,0x80,0x52,0x0a,0x00,0x80,0x01,
0x20,0x00,0x80,0x4c,0x0a,0x00,0x80,0x01,0x20,0x00,0x00,0x21,0x0a,0x00,0x80,
0x01,0x50,0x00,0x00,0x1e,0x0a,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x0a,0x00,
0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00};

View file

@ -1,78 +0,0 @@
.TH EMACSCLIENT 1
.\" NAME should be all caps, SECTION should be 1-8, maybe w/ subsection
.\" other parms are allowed: see man(7), man(1)
.SH NAME
emacsclient \- tells a running Emacs to visit a file
.SH SYNOPSIS
.B emacsclient
.I "[options] files ..."
.SH "DESCRIPTION"
This manual page documents briefly the
.BR emacsclient
command.
This manual page was written for the Debian GNU/Linux distribution
because the original program does not have a manual page.
Instead, it has documentation in the GNU Info format; see below.
.PP
.B emacsclient
works in conjunction with the built-in server of Emacs.
.PP
You typically do not call
.B emacsclient
directly. Instead, you set the environment variable EDITOR
to
.B emacsclient
and let programs like 'vipw' or 'bug' or anything run
it for you, which will use an existing Emacs to visit the file.
For
.B emacsclient
to work, you need an already running Emacs with a server. Within Emacs, call
the function
`server-start'. (Your `.emacs' file can do this automatically if you
add the expression `(server-start)' to it.)
When you've finished editing the buffer, type `C-x #'
(`server-edit'). This saves the file and sends a message back to the
`emacsclient' program telling it to exit. The programs that use
`EDITOR' wait for the "editor" (actually, `emacsclient') to exit. `C-x
#' also checks for other pending external requests to edit various
files, and selects the next such file.
If you set the variable `server-window' to a window or a frame, `C-x
#' displays the server buffer in that window or in that frame.
.SH OPTIONS
The programs follow the usual GNU command line syntax, with long
options starting with two dashes (`-').
.TP
.B \-n, \-\-no-wait
returns
immediately without waiting for you to "finish" the buffer in Emacs.
.TP
.B \-e, \-\-eval
do not visit files but instead evaluate the arguments as Emacs
Lisp expressions.
.TP
.B \-a, \-\-alternate-editor=EDITOR
if the Emacs server is not running, run the specified editor instead.
This can also be specified via the `ALTERNATE_EDITOR' environment variable.
.TP
.B \-d, \-\-display=DISPLAY
tell the server to display the files on the given display.
.SH "SEE ALSO"
The program is documented fully in
.IR "Using Emacs as a Server"
available via the Info system.
.SH BUGS
If there is no running Emacs server,
.B emacsclient
cannot launch one. I use a small Perl script instead of raw
.B emacsclient
to do it (it works only with systems which have BSD sockets, which is fine
for Debian GNU/Linux).
.SH AUTHOR
This manual page was written by Stephane Bortzmeyer <bortzmeyer@debian.org>,
for the Debian GNU/Linux system (but may be used by others).
.SH COPYING
This manual page is in the public domain.

View file

@ -1,153 +0,0 @@
.TH EMACSTOOL 1
.SH NAME
.I emacstool
\- run emacs under Sun windows with function-key and mouse support.
.SH SYNOPSIS
.I emacstool
[{window_args} {-rc run_command_path} args ... ]
.SH TYPICAL USAGE
In ~/.suntools or ~/.rootmenu include a line like this:
.br
"Emacstool" emacstool -WI emacs.icon -f emacstool-init
.SH DESCRIPTION
.B Emacstool
creates a SunView frame and a tty subwindow within which mouse events
and function keys are translated to ASCII sequences which Emacs can
parse. The translated input events are sent to the process running in
the tty subwindow, which is typically GNU Emacs. Emacstool thereby
allows GNU Emacs users to make full use of the mouse and function keys.
GNU Emacs can be loaded with functions to interpret the mouse and
function-key events to make a truly fine screen oriented editor for
the Sun Workstation.
.PP
(Note that GNU Emacs has a special interface to the X window system as
well. The X window system has many technical advantages, it is an
industry standard, and it is also free software. The Free Software
Foundation urges you to try X windows, and distributes a free copy of
X on Emacs distribution tapes.)
.PP
Function keys are translated to a sequence of the form
`^X*[a-o][lrt]'. The last character is `l', `r', or `t' corresponding
to whether the key is among the Left, Right, or Top function keys.
The third character indicates which button of the group
was pressed. Thus, the function key in the lower right corner will
transmit the sequence `^X*or'. In addition, the [lrt] is affected by
the Control, Meta, and Shift keys. Unshifted Control keys will be
non-alphabetic: C-l is [,], C-r is [2], C-t is [4].
.PP
Mouse buttons are encoded as `^X^@([124] x y)\\n'. ^X^@ is the
standard GNU Emacs mouse event prefix, it is followed by a list
indicating the button pressed and the character row and column of the
point in the window where the mouse cursor is, and followed by a
newline character. In GNU Emacs, the ^X^@ dispatches to a
mouse event handler which then reads the following list.
.SH OPTIONS
.B Emacstool
supports all the standard window arguments, including font and icon
specifiers.
.PP
By default, Emacstool runs the program
.I emacs
in the created subwindow.
The value of the environment variable
.I EMACSTOOL
can be used to override this if your version of
.B Emacs
is not accessible on your search path by the name
.I Emacs.
In addition, the run command can be set by the
.I pathname
following the last occurrence of the
.I \-rc
flag.
This is convenient for using Emacstool to run on remote machines.
.PP
All other command line arguments not used by the window system are passed
as arguments to the program that runs in the Emacstool window.
.PP
For example:
.PP
local% (emacstool -rc rlogin remote -8 &)&
.PP
will create an Emacstool window logged in to a machine named
.I remote.
If Emacs is run from this window,
Emacstool will encode mouse and function keys, and send them to rlogin.
If Emacs is run from this shell on the remote machine, it will see
the mouse and function keys properly.
However, since the remote host does not have access to the screen,
the cursor cannot be changed, menus will not appear, and the selection
buffer (STUFF) is limited.
.SH Using With GNU Emacs:
The GNU Emacs files
lisp/term/sun.el,
lisp/sun-mouse.el,
lisp/sun-fns.el,
and
src/sunfns.c
provide emacs support for the Emacstool and function keys.
Emacstool will automatically set the TERM environment variable to be "sun"
and unset the environment variable TERMCAP. That is, these variables will
not be inherited from the shell that starts Emacstool.
Since the terminal type is
.I SUN
(that is, the environment variable TERM is set to
.I SUN),
Emacs will automatically load the file lisp/term/sun.
This, in turn, will ensure that sun-mouse.el is autoloaded when any mouse
events are detected. It is suggested that
.I sun-mouse
and
.I sun-fns
be loaded in your site-init.el file, so that they will always be loaded
when running on a Sun workstation.
.PP
In addition, Emacstool sets the environment variable IN_EMACSTOOL = "t".
Lisp code in your ~/.emacs can use (getenv "IN_EMACSTOOL")
to determine whether to do Emacstool specific initialization.
Sun.el uses this to automatically call emacstool-init (getenv "IN_EMACSTOOL")
is defined.
.PP
The file src/sunfns.c defines several useful functions for emacs on
the Sun. Among these are procedures to pop-up SunView
.I menus,
put and get from the SunView
.I STUFF
buffer, and a procedure for changing the cursor
.I icon.
If you want to define or edit cursor icons,
there is a rudimentary mouse driven icon editor in the file
lisp/sun-cursors.el. Try invoking (sc:edit-cursor)
.SH BUGS
It takes a few milliseconds to create a menu before it pops up.
.SH ENVIRONMENT VARIABLES
EMACSTOOL
IN_EMACSTOOL
TERM
TERMCAP
.SH FILES
.DT
emacs
.SH "SEE ALSO"
emacs(1)
.../etc/SUN-SUPPORT
.../lisp/term/sun.el
.SH COPYING
Copyright
.if t \(co
.if n (c)
2001 Free Software Foundation, Inc.
.PP
Permission is granted to make and distribute verbatim copies of this
document provided the copyright notice and this permission notice are
preserved on all copies.
.PP
Permission is granted to copy and distribute modified versions of
this document under the conditions for verbatim copying, provided that
the entire resulting derived work is distributed under the terms of
a permission notice identical to this one.
.PP
Permission is granted to copy and distribute translations of this
document into another language, under the above conditions for
modified versions, except that this permission notice may be stated
in a translation approved by the Free Software Foundation.

Some files were not shown because too many files have changed in this diff Show more