mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-06-14 12:31:25 +00:00
gc6.2alpha6
This commit is contained in:
parent
57195179e8
commit
edff1322fb
1956 changed files with 1783 additions and 1907030 deletions
42
.gitignore
vendored
42
.gitignore
vendored
|
|
@ -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
|
||||
26
BUGS
26
BUGS
|
|
@ -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
340
COPYING
|
|
@ -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.
|
||||
234
FTP
234
FTP
|
|
@ -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
895
INSTALL
|
|
@ -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.
|
||||
44
INSTALL-CVS
44
INSTALL-CVS
|
|
@ -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.
|
||||
213
MAINTAINERS
213
MAINTAINERS
|
|
@ -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
|
||||
754
Makefile.in
754
Makefile.in
|
|
@ -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
105
README
|
|
@ -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.
|
||||
|
|
@ -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
|
||||
278
config.bat
278
config.bat
|
|
@ -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
1369
config.guess
vendored
File diff suppressed because it is too large
Load diff
1467
config.sub
vendored
1467
config.sub
vendored
File diff suppressed because it is too large
Load diff
3013
configure.in
3013
configure.in
File diff suppressed because it is too large
Load diff
5
etc/.gitignore
vendored
5
etc/.gitignore
vendored
|
|
@ -1,5 +0,0 @@
|
|||
fns-*
|
||||
*.ps
|
||||
*.log
|
||||
*.dvi
|
||||
DOC DOC-*
|
||||
176
etc/BABYL
176
etc/BABYL
|
|
@ -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"
|
||||
|
|
@ -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.
|
||||
157
etc/COOKIES
157
etc/COOKIES
|
|
@ -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
|
||||
|
||||
340
etc/COPYING
340
etc/COPYING
|
|
@ -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.
|
||||
1556
etc/ChangeLog
1556
etc/ChangeLog
File diff suppressed because it is too large
Load diff
649
etc/DEBUG
649
etc/DEBUG
|
|
@ -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.
|
||||
102
etc/DISTRIB
102
etc/DISTRIB
|
|
@ -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
|
||||
|
|
@ -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 =====================
|
||||
2
etc/FTP
2
etc/FTP
|
|
@ -1,2 +0,0 @@
|
|||
Please refer to <http://www.gnu.org/software/emacs/> for information
|
||||
about obtaining Emacs.
|
||||
532
etc/GNU
532
etc/GNU
|
|
@ -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.
|
||||
|
||||
58
etc/HELLO
58
etc/HELLO
|
|
@ -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
|
||||
443
etc/INTERVIEW
443
etc/INTERVIEW
|
|
@ -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
642
etc/JOKES
|
|
@ -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
|
||||
77
etc/LEDIT
77
etc/LEDIT
|
|
@ -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.
|
||||
|
||||
|
||||
147
etc/LINUX-GNU
147
etc/LINUX-GNU
|
|
@ -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
43
etc/LPF
|
|
@ -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.
|
||||
|
||||
1500
etc/MACHINES
1500
etc/MACHINES
File diff suppressed because it is too large
Load diff
1523
etc/MAILINGLISTS
1523
etc/MAILINGLISTS
File diff suppressed because it is too large
Load diff
1735
etc/MH-E-NEWS
1735
etc/MH-E-NEWS
File diff suppressed because it is too large
Load diff
226
etc/MORE.STUFF
226
etc/MORE.STUFF
|
|
@ -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:
|
||||
176
etc/MOTIVATION
176
etc/MOTIVATION
|
|
@ -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. /
|
||||
32
etc/Makefile
32
etc/Makefile
|
|
@ -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
|
||||
|
||||
1165
etc/ONEWS.1
1165
etc/ONEWS.1
File diff suppressed because it is too large
Load diff
1348
etc/ONEWS.2
1348
etc/ONEWS.2
File diff suppressed because it is too large
Load diff
1609
etc/ONEWS.3
1609
etc/ONEWS.3
File diff suppressed because it is too large
Load diff
1691
etc/ONEWS.4
1691
etc/ONEWS.4
File diff suppressed because it is too large
Load diff
|
|
@ -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>.
|
||||
1049
etc/OTHER.EMACSES
1049
etc/OTHER.EMACSES
File diff suppressed because it is too large
Load diff
3355
etc/PROBLEMS
3355
etc/PROBLEMS
File diff suppressed because it is too large
Load diff
13
etc/README
13
etc/README
|
|
@ -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.
|
||||
1367
etc/SERVICE
1367
etc/SERVICE
File diff suppressed because it is too large
Load diff
229
etc/TERMS
229
etc/TERMS
|
|
@ -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,
|
||||
|
|
@ -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
269
etc/TODO
|
|
@ -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.
|
||||
1118
etc/TUTORIAL
1118
etc/TUTORIAL
File diff suppressed because it is too large
Load diff
1194
etc/TUTORIAL.bg
1194
etc/TUTORIAL.bg
File diff suppressed because it is too large
Load diff
1085
etc/TUTORIAL.cn
1085
etc/TUTORIAL.cn
File diff suppressed because it is too large
Load diff
1044
etc/TUTORIAL.cs
1044
etc/TUTORIAL.cs
File diff suppressed because it is too large
Load diff
1485
etc/TUTORIAL.de
1485
etc/TUTORIAL.de
File diff suppressed because it is too large
Load diff
1239
etc/TUTORIAL.es
1239
etc/TUTORIAL.es
File diff suppressed because it is too large
Load diff
1200
etc/TUTORIAL.fr
1200
etc/TUTORIAL.fr
File diff suppressed because it is too large
Load diff
1115
etc/TUTORIAL.it
1115
etc/TUTORIAL.it
File diff suppressed because it is too large
Load diff
1071
etc/TUTORIAL.ja
1071
etc/TUTORIAL.ja
File diff suppressed because it is too large
Load diff
1005
etc/TUTORIAL.ko
1005
etc/TUTORIAL.ko
File diff suppressed because it is too large
Load diff
1092
etc/TUTORIAL.nl
1092
etc/TUTORIAL.nl
File diff suppressed because it is too large
Load diff
1250
etc/TUTORIAL.pl
1250
etc/TUTORIAL.pl
File diff suppressed because it is too large
Load diff
1112
etc/TUTORIAL.ro
1112
etc/TUTORIAL.ro
File diff suppressed because it is too large
Load diff
1080
etc/TUTORIAL.ru
1080
etc/TUTORIAL.ru
File diff suppressed because it is too large
Load diff
1103
etc/TUTORIAL.sk
1103
etc/TUTORIAL.sk
File diff suppressed because it is too large
Load diff
1137
etc/TUTORIAL.sl
1137
etc/TUTORIAL.sl
File diff suppressed because it is too large
Load diff
1090
etc/TUTORIAL.sv
1090
etc/TUTORIAL.sv
File diff suppressed because it is too large
Load diff
1007
etc/TUTORIAL.th
1007
etc/TUTORIAL.th
File diff suppressed because it is too large
Load diff
|
|
@ -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:
|
||||
1085
etc/TUTORIAL.zh
1085
etc/TUTORIAL.zh
File diff suppressed because it is too large
Load diff
244
etc/WHY-FREE
244
etc/WHY-FREE
|
|
@ -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.
|
||||
|
|
@ -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:
|
||||
1275
etc/calccard.ps
1275
etc/calccard.ps
File diff suppressed because it is too large
Load diff
669
etc/calccard.tex
669
etc/calccard.tex
|
|
@ -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:
|
||||
|
|
@ -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.
|
||||
148
etc/condom.1
148
etc/condom.1
|
|
@ -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)
|
||||
|
|
@ -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.
|
||||
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
1413
etc/cs-refcard.ps
1413
etc/cs-refcard.ps
File diff suppressed because it is too large
Load diff
|
|
@ -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:
|
||||
|
|
@ -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:
|
||||
|
|
@ -1 +0,0 @@
|
|||
.so man1/etags.1
|
||||
|
|
@ -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
|
||||
|
|
@ -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:
|
||||
653
etc/dired-ref.ps
653
etc/dired-ref.ps
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
||||
207
etc/echo.msg
207
etc/echo.msg
|
|
@ -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
|
||||
|
||||
986
etc/edt-user.doc
986
etc/edt-user.doc
|
|
@ -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))
|
||||
552
etc/emacs.1
552
etc/emacs.1
|
|
@ -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.
|
||||
|
|
@ -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
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -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]'
|
||||
|
|
@ -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
|
||||
|
|
@ -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};
|
||||
|
|
@ -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.
|
||||
153
etc/emacstool.1
153
etc/emacstool.1
|
|
@ -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
Loading…
Reference in a new issue